1
play

1 Java compilation model Java bytecode format void spin () { int - PowerPoint PPT Presentation

The Java programming environment Introduction to JVM Based on material produced by Bill Venners 1 2 The Java platform The role of the virtual machime byte code generated by the Java front-end is an intermediate representation (IR)


  1. The Java programming environment Introduction to JVM Based on material produced by Bill Venners 1 2 The Java platform The role of the virtual machime • byte code generated by the Java front-end is an intermediate representation (IR) – clean and compact – platform-independent Local or Local or Remote Remote 3 4 1

  2. Java compilation model Java bytecode format • void spin () { int i; for (i = 0; i < 100; i++) {;} } 0 iconst_0 // push int constant 0 1 istore_1 // store into var 1 "i=0" 2 goto 8 // first time: don't incr 5 iinc 1 1 // incr var 1 by 1 "i++" 8 iload_1 // push local var 1 "i" 9 bipush 100 // push byte const "100" 11 if_icmplt 5 // loop if less "i < 100" 14 return // return void when done • branch instructions use relative displacement, i.e., add/subtract from PC => easy combination • disassembled code uses absolute pseudo-labels 5 6 Java bytecode basics Back-end transformation and execution • no run-time tag checking (but objects have metadata) (1) simple JVM • "untyped" local variables, reused for different types – byte code interpretation, including resolution of • type tags are carried along the instructions symbolic references: • the verification phase of class loading ensures • finding the entity identified by a text symbol validity: types are OK, no operand stack overflow.. and replacing it with a direct reference (2) JIT (Just-In-Time) compiler • bytecode categories – method byte codes are compiled into native – arithmetic: add, sub, mul, rem, div ( typed versions) machine code the first time they are invoked – operand stack management: load/store, dup, swap – the machine code is cached for subsequent – control transfer: goto <offset>, if_icmpeq, ifeq, .. invocation – type conversions: i2l, i2f, l2f, f2i, d2i, int2byte, etc. – compilation overhead & requires more memory – method invocation and return: invokevirtual, invokestatic, ireturn, lreturn, return, etc. (3) adaptive optimization: the interpreter monitors the program, compiling only heavily used parts.. – throwing exceptions, monitors, etc.. 7 8 2

  3. Shared data areas The Java Virtual Machine • each JVM has one of each: – method area : byte code and class (static) data storage – heap : object storage 9 10 Example representation of objects in heap: Thread data areas - or can use handle ptrs pointing to an inderect Frame in Frame in handle pool Execution Execution • every thread has its own stack of call frames • the heap is garbage collected • in a frame, a fixed-sized stack for expr evaluation • each JVM has its own heap - supports isolation 11 12 3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend