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);