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.

2.4.4 Direct Threading . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

2.4.5 Just-In-Time (JIT) Compilation . . . . . . . . . . . . . . . . . 25<br />

2.5 Java Virtual Machine Implementations . . . . . . . . . . . . . . . . . 27<br />

2.5.1 Sun’s Java Virtual Machine . . . . . . . . . . . . . . . . . . . 27<br />

2.5.2 The IBM Jikes Research Virtual Machine . . . . . . . . . . . . 27<br />

2.5.3 The Kaffe Virtual Machine . . . . . . . . . . . . . . . . . . . . 28<br />

2.6 Implementing a Simple Java Interpreter . . . . . . . . . . . . . . . . . 29<br />

2.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

3 Related Work 32<br />

3.1 Instruction Set Design . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

3.1.1 Bytecode Idioms . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

3.1.2 Super Operators / Semantically Enriched Code . . . . . . . . 33<br />

3.1.3 Selective Inlining . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

3.2 Other Optimization Strategies . . . . . . . . . . . . . . . . . . . . . . 36<br />

3.2.1 Array Bounds Check Removal . . . . . . . . . . . . . . . . . . 36<br />

3.2.2 Providing Extra Data to the VM . . . . . . . . . . . . . . . . 36<br />

3.2.3 Devirtualization of Method Calls . . . . . . . . . . . . . . . . 37<br />

3.2.4 Minimizing Synchronization Operations . . . . . . . . . . . . . 38<br />

3.2.5 Bytecode Optimization . . . . . . . . . . . . . . . . . . . . . . 39<br />

3.2.6 Native Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

3.3 Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

3.3.1 Gathering the Profile Data . . . . . . . . . . . . . . . . . . . . 40<br />

3.3.2 Other Profiling Studies . . . . . . . . . . . . . . . . . . . . . . 42<br />

3.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

4 Despecialization 45<br />

4.1 Despecialization Categories . . . . . . . . . . . . . . . . . . . . . . . 45<br />

4.1.1 Load Despecializations . . . . . . . . . . . . . . . . . . . . . . 46<br />

4.1.2 Store Despecializations . . . . . . . . . . . . . . . . . . . . . . 48<br />

4.1.3 Integer Constant Despecializations . . . . . . . . . . . . . . . 49<br />

4.1.4 Non-Integer Constant Despecialization . . . . . . . . . . . . . 51<br />

4.1.5 Branch Despecialization . . . . . . . . . . . . . . . . . . . . . 52<br />

4.1.6 Widening Despecializations . . . . . . . . . . . . . . . . . . . 55<br />

4.1.7 Other Despecializations . . . . . . . . . . . . . . . . . . . . . 56<br />

4.2 Despecialization Performance . . . . . . . . . . . . . . . . . . . . . . 59<br />

4.2.1 Test Environment . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

vii

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

Saved successfully!

Ooh no, something went wrong!