13.10.2014 Views

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

223<br />

10.2.9 Expanding the Class File Mutator’s Capabilities<br />

The class file mutator currently supports two primary rule types. Despecialization<br />

rules replace all occurrences of a specialized bytecode with its equivalent general purpose<br />

representation. Substitution rules replace occurrences of a bytecode sequence<br />

with the target bytecode indicated within the rule. In each case, the mutator reconstructs<br />

all of the branch targets and exception ranges in order to handle the fact that<br />

each of these rule types may change the size of the code attribute.<br />

At the present time there are three bytecodes which are not supported in substitution<br />

rules. These are lookupswitch, tableswitch and wide. Each of these<br />

bytecodes is variable in size, making them more difficult to work with than the other<br />

bytecodes. However, there is nothing that makes it impossible to include them within<br />

a substitution rule. As a result, future work should extend the implementation of the<br />

class file mutator so that applications that make heavy use of these bytecodes can be<br />

handled optimally.<br />

A related extension should also be considered. At the present time, the target<br />

of each substitution rule must be an opcode from o203 through o253. However,<br />

when substitution is used in conjunction with despecialization, opcodes that are despecialized<br />

are potentially available as the targets of additional substitution rules.<br />

If 67 despecializations were performed, making this modification would allow a total<br />

of 119 multicodes to be implemented without making extensive changes to the<br />

implementation of the Java Virtual Machine.<br />

10.3 Conclusion<br />

This chapter has identified several areas of future work. Some of the areas presented<br />

are implementation issues that need to be resolved in order for applications to take<br />

full advantage of multicodes. Other ideas presented in this section represent areas<br />

of interesting future research that will lead to additional valuable results. The author<br />

believes that exploring issues related to dynamic virtual machine or hardware<br />

modification is particularly likely to reveal interesting research problems.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!