提交 469df69d 编写于 作者: S sla

Merge

...@@ -53,6 +53,7 @@ public class InstanceKlass extends Klass { ...@@ -53,6 +53,7 @@ public class InstanceKlass extends Klass {
private static int HIGH_OFFSET; private static int HIGH_OFFSET;
private static int FIELD_SLOTS; private static int FIELD_SLOTS;
private static short FIELDINFO_TAG_SIZE; private static short FIELDINFO_TAG_SIZE;
private static short FIELDINFO_TAG_MASK;
private static short FIELDINFO_TAG_OFFSET; private static short FIELDINFO_TAG_OFFSET;
// ClassState constants // ClassState constants
...@@ -102,6 +103,7 @@ public class InstanceKlass extends Klass { ...@@ -102,6 +103,7 @@ public class InstanceKlass extends Klass {
HIGH_OFFSET = db.lookupIntConstant("FieldInfo::high_packed_offset").intValue(); HIGH_OFFSET = db.lookupIntConstant("FieldInfo::high_packed_offset").intValue();
FIELD_SLOTS = db.lookupIntConstant("FieldInfo::field_slots").intValue(); FIELD_SLOTS = db.lookupIntConstant("FieldInfo::field_slots").intValue();
FIELDINFO_TAG_SIZE = db.lookupIntConstant("FIELDINFO_TAG_SIZE").shortValue(); FIELDINFO_TAG_SIZE = db.lookupIntConstant("FIELDINFO_TAG_SIZE").shortValue();
FIELDINFO_TAG_MASK = db.lookupIntConstant("FIELDINFO_TAG_MASK").shortValue();
FIELDINFO_TAG_OFFSET = db.lookupIntConstant("FIELDINFO_TAG_OFFSET").shortValue(); FIELDINFO_TAG_OFFSET = db.lookupIntConstant("FIELDINFO_TAG_OFFSET").shortValue();
// read ClassState constants // read ClassState constants
...@@ -321,7 +323,7 @@ public class InstanceKlass extends Klass { ...@@ -321,7 +323,7 @@ public class InstanceKlass extends Klass {
U2Array fields = getFields(); U2Array fields = getFields();
short lo = fields.at(index * FIELD_SLOTS + LOW_OFFSET); short lo = fields.at(index * FIELD_SLOTS + LOW_OFFSET);
short hi = fields.at(index * FIELD_SLOTS + HIGH_OFFSET); short hi = fields.at(index * FIELD_SLOTS + HIGH_OFFSET);
if ((lo & FIELDINFO_TAG_SIZE) == FIELDINFO_TAG_OFFSET) { if ((lo & FIELDINFO_TAG_MASK) == FIELDINFO_TAG_OFFSET) {
return VM.getVM().buildIntFromShorts(lo, hi) >> FIELDINFO_TAG_SIZE; return VM.getVM().buildIntFromShorts(lo, hi) >> FIELDINFO_TAG_SIZE;
} }
throw new RuntimeException("should not reach here"); throw new RuntimeException("should not reach here");
......
...@@ -2291,6 +2291,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary; ...@@ -2291,6 +2291,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
/*************************************/ \ /*************************************/ \
\ \
declare_preprocessor_constant("FIELDINFO_TAG_SIZE", FIELDINFO_TAG_SIZE) \ declare_preprocessor_constant("FIELDINFO_TAG_SIZE", FIELDINFO_TAG_SIZE) \
declare_preprocessor_constant("FIELDINFO_TAG_MASK", FIELDINFO_TAG_MASK) \
declare_preprocessor_constant("FIELDINFO_TAG_OFFSET", FIELDINFO_TAG_OFFSET) \ declare_preprocessor_constant("FIELDINFO_TAG_OFFSET", FIELDINFO_TAG_OFFSET) \
\ \
/************************************************/ \ /************************************************/ \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册