947 OP_RETYPE_ONLY = 0x0, // no argument changes; straight retype |
947 OP_RETYPE_ONLY = 0x0, // no argument changes; straight retype |
948 OP_RETYPE_RAW = 0x1, // straight retype, trusted (void->int, Object->T) |
948 OP_RETYPE_RAW = 0x1, // straight retype, trusted (void->int, Object->T) |
949 OP_CHECK_CAST = 0x2, // ref-to-ref conversion; requires a Class argument |
949 OP_CHECK_CAST = 0x2, // ref-to-ref conversion; requires a Class argument |
950 OP_PRIM_TO_PRIM = 0x3, // converts from one primitive to another |
950 OP_PRIM_TO_PRIM = 0x3, // converts from one primitive to another |
951 OP_REF_TO_PRIM = 0x4, // unboxes a wrapper to produce a primitive |
951 OP_REF_TO_PRIM = 0x4, // unboxes a wrapper to produce a primitive |
952 OP_PRIM_TO_REF = 0x5, // boxes a primitive into a wrapper (NYI) |
952 OP_PRIM_TO_REF = 0x5, // boxes a primitive into a wrapper |
953 OP_SWAP_ARGS = 0x6, // swap arguments (vminfo is 2nd arg) |
953 OP_SWAP_ARGS = 0x6, // swap arguments (vminfo is 2nd arg) |
954 OP_ROT_ARGS = 0x7, // rotate arguments (vminfo is displaced arg) |
954 OP_ROT_ARGS = 0x7, // rotate arguments (vminfo is displaced arg) |
955 OP_DUP_ARGS = 0x8, // duplicates one or more arguments (at TOS) |
955 OP_DUP_ARGS = 0x8, // duplicates one or more arguments (at TOS) |
956 OP_DROP_ARGS = 0x9, // remove one or more argument slots |
956 OP_DROP_ARGS = 0x9, // remove one or more argument slots |
957 OP_COLLECT_ARGS = 0xA, // combine one or more arguments into a varargs (NYI) |
957 OP_COLLECT_ARGS = 0xA, // combine arguments using an auxiliary function |
958 OP_SPREAD_ARGS = 0xB, // expand in place a varargs array (of known size) |
958 OP_SPREAD_ARGS = 0xB, // expand in place a varargs array (of known size) |
959 OP_FLYBY = 0xC, // operate first on reified argument list (NYI) |
959 OP_FOLD_ARGS = 0xC, // combine but do not remove arguments; prepend result |
960 OP_RICOCHET = 0xD, // run an adapter chain on the return value (NYI) |
960 //OP_UNUSED_13 = 0xD, // unused code, perhaps for reified argument lists |
961 CONV_OP_LIMIT = 0xE, // limit of CONV_OP enumeration |
961 CONV_OP_LIMIT = 0xE, // limit of CONV_OP enumeration |
962 |
962 |
963 CONV_OP_MASK = 0xF00, // this nybble contains the conversion op field |
963 CONV_OP_MASK = 0xF00, // this nybble contains the conversion op field |
|
964 CONV_TYPE_MASK = 0x0F, // fits T_ADDRESS and below |
964 CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use |
965 CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use |
965 CONV_VMINFO_SHIFT = 0, // position of bits in CONV_VMINFO_MASK |
966 CONV_VMINFO_SHIFT = 0, // position of bits in CONV_VMINFO_MASK |
966 CONV_OP_SHIFT = 8, // position of bits in CONV_OP_MASK |
967 CONV_OP_SHIFT = 8, // position of bits in CONV_OP_MASK |
967 CONV_DEST_TYPE_SHIFT = 12, // byte 2 has the adapter BasicType (if needed) |
968 CONV_DEST_TYPE_SHIFT = 12, // byte 2 has the adapter BasicType (if needed) |
968 CONV_SRC_TYPE_SHIFT = 16, // byte 2 has the source BasicType (if needed) |
969 CONV_SRC_TYPE_SHIFT = 16, // byte 2 has the source BasicType (if needed) |
1098 // Accessors |
1100 // Accessors |
1099 static int vmslots(oop mtform); |
1101 static int vmslots(oop mtform); |
1100 static oop erasedType(oop mtform); |
1102 static oop erasedType(oop mtform); |
1101 static oop genericInvoker(oop mtform); |
1103 static oop genericInvoker(oop mtform); |
1102 |
1104 |
|
1105 static oop vmlayout(oop mtform); |
|
1106 static oop init_vmlayout(oop mtform, oop cookie); |
|
1107 |
1103 // Accessors for code generation: |
1108 // Accessors for code generation: |
1104 static int vmslots_offset_in_bytes() { return _vmslots_offset; } |
1109 static int vmslots_offset_in_bytes() { return _vmslots_offset; } |
|
1110 static int vmlayout_offset_in_bytes() { return _vmlayout_offset; } |
1105 static int erasedType_offset_in_bytes() { return _erasedType_offset; } |
1111 static int erasedType_offset_in_bytes() { return _erasedType_offset; } |
1106 static int genericInvoker_offset_in_bytes() { return _genericInvoker_offset; } |
1112 static int genericInvoker_offset_in_bytes() { return _genericInvoker_offset; } |
1107 }; |
1113 }; |
1108 |
1114 |
1109 |
1115 |