Mercurial > hg > truffle
comparison agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java @ 1602:136b78722a08
6939203: JSR 292 needs method handle constants
Summary: Add new CP types CONSTANT_MethodHandle, CONSTANT_MethodType; extend 'ldc' bytecode.
Reviewed-by: twisti, never
author | jrose |
---|---|
date | Wed, 09 Jun 2010 18:50:45 -0700 |
parents | c18cbe5936b8 |
children | 083fde3b838e |
comparison
equal
deleted
inserted
replaced
1585:49fac4acd688 | 1602:136b78722a08 |
---|---|
36 private static int JVM_CONSTANT_String = 8; | 36 private static int JVM_CONSTANT_String = 8; |
37 private static int JVM_CONSTANT_Fieldref = 9; | 37 private static int JVM_CONSTANT_Fieldref = 9; |
38 private static int JVM_CONSTANT_Methodref = 10; | 38 private static int JVM_CONSTANT_Methodref = 10; |
39 private static int JVM_CONSTANT_InterfaceMethodref = 11; | 39 private static int JVM_CONSTANT_InterfaceMethodref = 11; |
40 private static int JVM_CONSTANT_NameAndType = 12; | 40 private static int JVM_CONSTANT_NameAndType = 12; |
41 private static int JVM_CONSTANT_MethodHandle = 15; // JSR 292 | |
42 private static int JVM_CONSTANT_MethodType = 16; // JSR 292 | |
41 private static int JVM_CONSTANT_Invalid = 0; // For bad value initialization | 43 private static int JVM_CONSTANT_Invalid = 0; // For bad value initialization |
42 private static int JVM_CONSTANT_UnresolvedClass = 100; // Temporary tag until actual use | 44 private static int JVM_CONSTANT_UnresolvedClass = 100; // Temporary tag until actual use |
43 private static int JVM_CONSTANT_ClassIndex = 101; // Temporary tag while constructing constant pool | 45 private static int JVM_CONSTANT_ClassIndex = 101; // Temporary tag while constructing constant pool |
44 private static int JVM_CONSTANT_UnresolvedString = 102; // Temporary tag until actual use | 46 private static int JVM_CONSTANT_UnresolvedString = 102; // Temporary tag until actual use |
45 private static int JVM_CONSTANT_StringIndex = 103; // Temporary tag while constructing constant pool | 47 private static int JVM_CONSTANT_StringIndex = 103; // Temporary tag while constructing constant pool |
46 private static int JVM_CONSTANT_UnresolvedClassInError = 104; // Resolution failed | 48 private static int JVM_CONSTANT_UnresolvedClassInError = 104; // Resolution failed |
49 private static int JVM_CONSTANT_Object = 105; // Required for BoundMethodHandle arguments. | |
50 | |
51 // JVM_CONSTANT_MethodHandle subtypes //FIXME: connect these to data structure | |
52 private static int JVM_REF_getField = 1; | |
53 private static int JVM_REF_getStatic = 2; | |
54 private static int JVM_REF_putField = 3; | |
55 private static int JVM_REF_putStatic = 4; | |
56 private static int JVM_REF_invokeVirtual = 5; | |
57 private static int JVM_REF_invokeStatic = 6; | |
58 private static int JVM_REF_invokeSpecial = 7; | |
59 private static int JVM_REF_newInvokeSpecial = 8; | |
60 private static int JVM_REF_invokeInterface = 9; | |
47 | 61 |
48 private byte tag; | 62 private byte tag; |
49 | 63 |
50 public ConstantTag(byte tag) { | 64 public ConstantTag(byte tag) { |
51 this.tag = tag; | 65 this.tag = tag; |
60 public boolean isFloat() { return tag == JVM_CONSTANT_Float; } | 74 public boolean isFloat() { return tag == JVM_CONSTANT_Float; } |
61 public boolean isLong() { return tag == JVM_CONSTANT_Long; } | 75 public boolean isLong() { return tag == JVM_CONSTANT_Long; } |
62 public boolean isDouble() { return tag == JVM_CONSTANT_Double; } | 76 public boolean isDouble() { return tag == JVM_CONSTANT_Double; } |
63 public boolean isNameAndType() { return tag == JVM_CONSTANT_NameAndType; } | 77 public boolean isNameAndType() { return tag == JVM_CONSTANT_NameAndType; } |
64 public boolean isUtf8() { return tag == JVM_CONSTANT_Utf8; } | 78 public boolean isUtf8() { return tag == JVM_CONSTANT_Utf8; } |
79 public boolean isMethodHandle() { return tag == JVM_CONSTANT_MethodHandle; } | |
80 public boolean isMethodType() { return tag == JVM_CONSTANT_MethodType; } | |
65 | 81 |
66 public boolean isInvalid() { return tag == JVM_CONSTANT_Invalid; } | 82 public boolean isInvalid() { return tag == JVM_CONSTANT_Invalid; } |
67 | 83 |
68 public boolean isUnresolvedKlass() { | 84 public boolean isUnresolvedKlass() { |
69 return tag == JVM_CONSTANT_UnresolvedClass || tag == JVM_CONSTANT_UnresolvedClassInError; | 85 return tag == JVM_CONSTANT_UnresolvedClass || tag == JVM_CONSTANT_UnresolvedClassInError; |
71 public boolean isUnresolveKlassInError() { return tag == JVM_CONSTANT_UnresolvedClassInError; } | 87 public boolean isUnresolveKlassInError() { return tag == JVM_CONSTANT_UnresolvedClassInError; } |
72 public boolean isKlassIndex() { return tag == JVM_CONSTANT_ClassIndex; } | 88 public boolean isKlassIndex() { return tag == JVM_CONSTANT_ClassIndex; } |
73 public boolean isUnresolvedString() { return tag == JVM_CONSTANT_UnresolvedString; } | 89 public boolean isUnresolvedString() { return tag == JVM_CONSTANT_UnresolvedString; } |
74 public boolean isStringIndex() { return tag == JVM_CONSTANT_StringIndex; } | 90 public boolean isStringIndex() { return tag == JVM_CONSTANT_StringIndex; } |
75 | 91 |
92 public boolean isObject() { return tag == JVM_CONSTANT_Object; } | |
93 | |
76 public boolean isKlassReference() { return isKlassIndex() || isUnresolvedKlass(); } | 94 public boolean isKlassReference() { return isKlassIndex() || isUnresolvedKlass(); } |
77 public boolean isFieldOrMethod() { return isField() || isMethod() || isInterfaceMethod(); } | 95 public boolean isFieldOrMethod() { return isField() || isMethod() || isInterfaceMethod(); } |
78 public boolean isSymbol() { return isUtf8(); } | 96 public boolean isSymbol() { return isUtf8(); } |
79 } | 97 } |