Java JITC本机代码生成/执行示例?

时间:2012-04-11 11:51:19

标签: java jit native-code

我正在尝试理解Java JITC的“本机代码生成和执行”部分,但很难确切地看到发生了什么。例如。说我有以下课程:

class Foo
{
    private int x;
    public void incX()
    {
        x++;
    }
}

javac为该方法生成以下字节代码:

public void incX();
Code:
Stack=3, Locals=1, Args_size=1
0:   aload_0
1:   dup
2:   getfield        #17; //Field x:I
5:   iconst_1
6:   iadd
7:   putfield        #17; //Field x:I
10:  return
LineNumberTable:
line 33: 0
line 34: 10

LocalVariableTable:
Start  Length  Slot  Name   Signature
0      11      0    this       LFoo;

当JITC将其转换为本机代码时,究竟会发生什么?这个本机代码是如何由JVM执行的?

1 个答案:

答案 0 :(得分:0)

当方法被充分调用以传递JVM的编译阈值时,JIT将字节码编译为本机代码,并将其设置为对函数的调用直接转到本机编译的方法。