Mercurial > hg > truffle
comparison src/cpu/sparc/vm/macroAssembler_sparc.cpp @ 12226:7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
Reviewed-by: coleenp, mgerdin, hseigel
author | ehelin |
---|---|
date | Mon, 12 Aug 2013 17:37:02 +0200 |
parents | 740e263c80c6 |
children | 69944b868a32 |
comparison
equal
deleted
inserted
replaced
12186:313b724f8911 | 12226:7944aba7ba41 |
---|---|
3909 | 3909 |
3910 void MacroAssembler::load_klass(Register src_oop, Register klass) { | 3910 void MacroAssembler::load_klass(Register src_oop, Register klass) { |
3911 // The number of bytes in this code is used by | 3911 // The number of bytes in this code is used by |
3912 // MachCallDynamicJavaNode::ret_addr_offset() | 3912 // MachCallDynamicJavaNode::ret_addr_offset() |
3913 // if this changes, change that. | 3913 // if this changes, change that. |
3914 if (UseCompressedKlassPointers) { | 3914 if (UseCompressedClassPointers) { |
3915 lduw(src_oop, oopDesc::klass_offset_in_bytes(), klass); | 3915 lduw(src_oop, oopDesc::klass_offset_in_bytes(), klass); |
3916 decode_klass_not_null(klass); | 3916 decode_klass_not_null(klass); |
3917 } else { | 3917 } else { |
3918 ld_ptr(src_oop, oopDesc::klass_offset_in_bytes(), klass); | 3918 ld_ptr(src_oop, oopDesc::klass_offset_in_bytes(), klass); |
3919 } | 3919 } |
3920 } | 3920 } |
3921 | 3921 |
3922 void MacroAssembler::store_klass(Register klass, Register dst_oop) { | 3922 void MacroAssembler::store_klass(Register klass, Register dst_oop) { |
3923 if (UseCompressedKlassPointers) { | 3923 if (UseCompressedClassPointers) { |
3924 assert(dst_oop != klass, "not enough registers"); | 3924 assert(dst_oop != klass, "not enough registers"); |
3925 encode_klass_not_null(klass); | 3925 encode_klass_not_null(klass); |
3926 st(klass, dst_oop, oopDesc::klass_offset_in_bytes()); | 3926 st(klass, dst_oop, oopDesc::klass_offset_in_bytes()); |
3927 } else { | 3927 } else { |
3928 st_ptr(klass, dst_oop, oopDesc::klass_offset_in_bytes()); | 3928 st_ptr(klass, dst_oop, oopDesc::klass_offset_in_bytes()); |
3929 } | 3929 } |
3930 } | 3930 } |
3931 | 3931 |
3932 void MacroAssembler::store_klass_gap(Register s, Register d) { | 3932 void MacroAssembler::store_klass_gap(Register s, Register d) { |
3933 if (UseCompressedKlassPointers) { | 3933 if (UseCompressedClassPointers) { |
3934 assert(s != d, "not enough registers"); | 3934 assert(s != d, "not enough registers"); |
3935 st(s, d, oopDesc::klass_gap_offset_in_bytes()); | 3935 st(s, d, oopDesc::klass_gap_offset_in_bytes()); |
3936 } | 3936 } |
3937 } | 3937 } |
3938 | 3938 |
4087 if (Universe::narrow_oop_base() != NULL) | 4087 if (Universe::narrow_oop_base() != NULL) |
4088 add(dst, G6_heapbase, dst); | 4088 add(dst, G6_heapbase, dst); |
4089 } | 4089 } |
4090 | 4090 |
4091 void MacroAssembler::encode_klass_not_null(Register r) { | 4091 void MacroAssembler::encode_klass_not_null(Register r) { |
4092 assert (UseCompressedKlassPointers, "must be compressed"); | 4092 assert (UseCompressedClassPointers, "must be compressed"); |
4093 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); | 4093 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); |
4094 assert(r != G6_heapbase, "bad register choice"); | 4094 assert(r != G6_heapbase, "bad register choice"); |
4095 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); | 4095 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); |
4096 sub(r, G6_heapbase, r); | 4096 sub(r, G6_heapbase, r); |
4097 if (Universe::narrow_klass_shift() != 0) { | 4097 if (Universe::narrow_klass_shift() != 0) { |
4103 | 4103 |
4104 void MacroAssembler::encode_klass_not_null(Register src, Register dst) { | 4104 void MacroAssembler::encode_klass_not_null(Register src, Register dst) { |
4105 if (src == dst) { | 4105 if (src == dst) { |
4106 encode_klass_not_null(src); | 4106 encode_klass_not_null(src); |
4107 } else { | 4107 } else { |
4108 assert (UseCompressedKlassPointers, "must be compressed"); | 4108 assert (UseCompressedClassPointers, "must be compressed"); |
4109 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); | 4109 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); |
4110 set((intptr_t)Universe::narrow_klass_base(), dst); | 4110 set((intptr_t)Universe::narrow_klass_base(), dst); |
4111 sub(src, dst, dst); | 4111 sub(src, dst, dst); |
4112 if (Universe::narrow_klass_shift() != 0) { | 4112 if (Universe::narrow_klass_shift() != 0) { |
4113 srlx(dst, LogKlassAlignmentInBytes, dst); | 4113 srlx(dst, LogKlassAlignmentInBytes, dst); |
4117 | 4117 |
4118 // Function instr_size_for_decode_klass_not_null() counts the instructions | 4118 // Function instr_size_for_decode_klass_not_null() counts the instructions |
4119 // generated by decode_klass_not_null() and reinit_heapbase(). Hence, if | 4119 // generated by decode_klass_not_null() and reinit_heapbase(). Hence, if |
4120 // the instructions they generate change, then this method needs to be updated. | 4120 // the instructions they generate change, then this method needs to be updated. |
4121 int MacroAssembler::instr_size_for_decode_klass_not_null() { | 4121 int MacroAssembler::instr_size_for_decode_klass_not_null() { |
4122 assert (UseCompressedKlassPointers, "only for compressed klass ptrs"); | 4122 assert (UseCompressedClassPointers, "only for compressed klass ptrs"); |
4123 // set + add + set | 4123 // set + add + set |
4124 int num_instrs = insts_for_internal_set((intptr_t)Universe::narrow_klass_base()) + 1 + | 4124 int num_instrs = insts_for_internal_set((intptr_t)Universe::narrow_klass_base()) + 1 + |
4125 insts_for_internal_set((intptr_t)Universe::narrow_ptrs_base()); | 4125 insts_for_internal_set((intptr_t)Universe::narrow_ptrs_base()); |
4126 if (Universe::narrow_klass_shift() == 0) { | 4126 if (Universe::narrow_klass_shift() == 0) { |
4127 return num_instrs * BytesPerInstWord; | 4127 return num_instrs * BytesPerInstWord; |
4133 // !!! If the instructions that get generated here change then function | 4133 // !!! If the instructions that get generated here change then function |
4134 // instr_size_for_decode_klass_not_null() needs to get updated. | 4134 // instr_size_for_decode_klass_not_null() needs to get updated. |
4135 void MacroAssembler::decode_klass_not_null(Register r) { | 4135 void MacroAssembler::decode_klass_not_null(Register r) { |
4136 // Do not add assert code to this unless you change vtableStubs_sparc.cpp | 4136 // Do not add assert code to this unless you change vtableStubs_sparc.cpp |
4137 // pd_code_size_limit. | 4137 // pd_code_size_limit. |
4138 assert (UseCompressedKlassPointers, "must be compressed"); | 4138 assert (UseCompressedClassPointers, "must be compressed"); |
4139 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); | 4139 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); |
4140 assert(r != G6_heapbase, "bad register choice"); | 4140 assert(r != G6_heapbase, "bad register choice"); |
4141 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); | 4141 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); |
4142 if (Universe::narrow_klass_shift() != 0) | 4142 if (Universe::narrow_klass_shift() != 0) |
4143 sllx(r, LogKlassAlignmentInBytes, r); | 4143 sllx(r, LogKlassAlignmentInBytes, r); |
4149 if (src == dst) { | 4149 if (src == dst) { |
4150 decode_klass_not_null(src); | 4150 decode_klass_not_null(src); |
4151 } else { | 4151 } else { |
4152 // Do not add assert code to this unless you change vtableStubs_sparc.cpp | 4152 // Do not add assert code to this unless you change vtableStubs_sparc.cpp |
4153 // pd_code_size_limit. | 4153 // pd_code_size_limit. |
4154 assert (UseCompressedKlassPointers, "must be compressed"); | 4154 assert (UseCompressedClassPointers, "must be compressed"); |
4155 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); | 4155 assert(Universe::narrow_klass_base() != NULL, "narrow_klass_base should be initialized"); |
4156 if (Universe::narrow_klass_shift() != 0) { | 4156 if (Universe::narrow_klass_shift() != 0) { |
4157 assert((src != G6_heapbase) && (dst != G6_heapbase), "bad register choice"); | 4157 assert((src != G6_heapbase) && (dst != G6_heapbase), "bad register choice"); |
4158 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); | 4158 set((intptr_t)Universe::narrow_klass_base(), G6_heapbase); |
4159 sllx(src, LogKlassAlignmentInBytes, dst); | 4159 sllx(src, LogKlassAlignmentInBytes, dst); |
4165 } | 4165 } |
4166 } | 4166 } |
4167 } | 4167 } |
4168 | 4168 |
4169 void MacroAssembler::reinit_heapbase() { | 4169 void MacroAssembler::reinit_heapbase() { |
4170 if (UseCompressedOops || UseCompressedKlassPointers) { | 4170 if (UseCompressedOops || UseCompressedClassPointers) { |
4171 if (Universe::heap() != NULL) { | 4171 if (Universe::heap() != NULL) { |
4172 set((intptr_t)Universe::narrow_ptrs_base(), G6_heapbase); | 4172 set((intptr_t)Universe::narrow_ptrs_base(), G6_heapbase); |
4173 } else { | 4173 } else { |
4174 AddressLiteral base(Universe::narrow_ptrs_base_addr()); | 4174 AddressLiteral base(Universe::narrow_ptrs_base_addr()); |
4175 load_ptr_contents(base, G6_heapbase); | 4175 load_ptr_contents(base, G6_heapbase); |