< prev index next >

src/hotspot/share/oops/cpCache.hpp

Print this page

        

*** 48,58 **** // bit length |-8--|-8--|---16----| // -------------------------------- // _indices [ b2 | b1 | index ] index = constant_pool_index // _f1 [ entry specific ] metadata ptr (method or klass) // _f2 [ entry specific ] vtable or res_ref index, or vfinal method ptr ! // _flags [tos|0|F=1|0|0|i|f|v|0 |0000|field_index] (for field entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |1 |-3-|----16-----] // _flags [tos|0|F=0|M|A|I|f|0|vf|indy_rf|000|00000|psize] (for method entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|--8--|--8--] // -------------------------------- --- 48,58 ---- // bit length |-8--|-8--|---16----| // -------------------------------- // _indices [ b2 | b1 | index ] index = constant_pool_index // _f1 [ entry specific ] metadata ptr (method or klass) // _f2 [ entry specific ] vtable or res_ref index, or vfinal method ptr ! // _flags [tos|0|F=1|0|N|i|f|v|0 |0000|field_index] (for field entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |1 |-3-|----16-----] // _flags [tos|0|F=0|M|A|I|f|0|vf|indy_rf|000|00000|psize] (for method entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|--8--|--8--] // --------------------------------
*** 74,83 **** --- 74,84 ---- // vf = virtual but final (method entries only: is_vfinal()) // indy_rf = call site specifier method resolution failed // // The flags after TosState have the following interpretation: // bit 27: 0 for fields, 1 for methods + // N flag true if field is marked flattenable (must never be null) // i flag true if field is inlined (flatten) // f flag true if field is marked final // v flag true if field is volatile (only for fields) // f2 flag true if f2 contains an oop (e.g., virtual final method) // fv flag true if invokeinterface used for method in class Object
*** 92,103 **** // itos: 4 // ltos: 5 // ftos: 6 // dtos: 7 // atos: 8 ! // qtos: 9 ! // vtos: 10 // // Entry specific: field entries: // _indices = get (b1 section) and put (b2 section) bytecodes, original constant pool index // _f1 = field holder (as a java.lang.Class, not a Klass*) // _f2 = field offset in bytes --- 93,103 ---- // itos: 4 // ltos: 5 // ftos: 6 // dtos: 7 // atos: 8 ! // vtos: 9 // // Entry specific: field entries: // _indices = get (b1 section) and put (b2 section) bytecodes, original constant pool index // _f1 = field holder (as a java.lang.Class, not a Klass*) // _f2 = field offset in bytes
*** 183,192 **** --- 183,193 ---- tos_state_shift = BitsPerInt - tos_state_bits, // see verify_tos_state_shift below // misc. option bits; can be any bit position in [16..27] is_field_entry_shift = 26, // (F) is it a field or a method? has_method_type_shift = 25, // (M) does the call site have a MethodType? has_appendix_shift = 24, // (A) does the call site have an appendix argument? + is_flattenable_field = 24, // (N) is the field flattenable (must never be null) is_forced_virtual_shift = 23, // (I) is the interface reference forced to virtual mode? is_flatten_field = 23, // (i) is the value field flatten? is_final_shift = 22, // (f) is the field or method final? is_volatile_shift = 21, // (v) is the field volatile? is_vfinal_shift = 20, // (vf) did the call resolve to a final method?
*** 225,234 **** --- 226,236 ---- int field_offset, // the field offset in words in the field holder TosState field_type, // the (machine) field type bool is_final, // the field is final bool is_volatile, // the field is volatile bool is_flatten, // the field is flatten (value field) + bool is_flattenable, // the field is flattenable (must never be null) Klass* root_klass // needed by the GC to dirty the klass ); private: void set_direct_or_vtable_call(
*** 323,333 **** case Bytecodes::_invokehandle : // fall through case Bytecodes::_invokedynamic : // fall through case Bytecodes::_invokeinterface : return 1; case Bytecodes::_putstatic : // fall through case Bytecodes::_putfield : // fall through ! case Bytecodes::_vwithfield : // fall through case Bytecodes::_invokevirtual : return 2; default : break; } return -1; } --- 325,335 ---- case Bytecodes::_invokehandle : // fall through case Bytecodes::_invokedynamic : // fall through case Bytecodes::_invokeinterface : return 1; case Bytecodes::_putstatic : // fall through case Bytecodes::_putfield : // fall through ! case Bytecodes::_withfield : // fall through case Bytecodes::_invokevirtual : return 2; default : break; } return -1; }
*** 373,383 **** bool has_method_type() const { return (!is_f1_null()) && (_flags & (1 << has_method_type_shift)) != 0; } bool is_method_entry() const { return (_flags & (1 << is_field_entry_shift)) == 0; } bool is_field_entry() const { return (_flags & (1 << is_field_entry_shift)) != 0; } bool is_long() const { return flag_state() == ltos; } bool is_double() const { return flag_state() == dtos; } ! bool is_valuetype() const { return flag_state() == qtos; } TosState flag_state() const { assert((uint)number_of_states <= (uint)tos_state_mask+1, ""); return (TosState)((_flags >> tos_state_shift) & tos_state_mask); } void set_indy_resolution_failed(); // Code generation support --- 375,385 ---- bool has_method_type() const { return (!is_f1_null()) && (_flags & (1 << has_method_type_shift)) != 0; } bool is_method_entry() const { return (_flags & (1 << is_field_entry_shift)) == 0; } bool is_field_entry() const { return (_flags & (1 << is_field_entry_shift)) != 0; } bool is_long() const { return flag_state() == ltos; } bool is_double() const { return flag_state() == dtos; } ! bool is_flattenable() const { return (_flags & (1 << is_flattenable_field)) != 0; } TosState flag_state() const { assert((uint)number_of_states <= (uint)tos_state_mask+1, ""); return (TosState)((_flags >> tos_state_shift) & tos_state_mask); } void set_indy_resolution_failed(); // Code generation support
< prev index next >