163 address CompilerToVM::Data::dlog;
164 address CompilerToVM::Data::dlog10;
165 address CompilerToVM::Data::dpow;
166
167 address CompilerToVM::Data::symbol_init;
168 address CompilerToVM::Data::symbol_clinit;
169
170 void CompilerToVM::Data::initialize(TRAPS) {
171 Klass_vtable_start_offset = in_bytes(Klass::vtable_start_offset());
172 Klass_vtable_length_offset = in_bytes(Klass::vtable_length_offset());
173
174 Method_extra_stack_entries = Method::extra_stack_entries();
175
176 SharedRuntime_ic_miss_stub = SharedRuntime::get_ic_miss_stub();
177 SharedRuntime_handle_wrong_method_stub = SharedRuntime::get_handle_wrong_method_stub();
178 SharedRuntime_deopt_blob_unpack = SharedRuntime::deopt_blob()->unpack();
179 SharedRuntime_deopt_blob_uncommon_trap = SharedRuntime::deopt_blob()->uncommon_trap();
180
181 ThreadLocalAllocBuffer_alignment_reserve = ThreadLocalAllocBuffer::alignment_reserve();
182
183 Universe_collectedHeap = Universe::heap();
184 Universe_base_vtable_size = Universe::base_vtable_size();
185 Universe_narrow_oop_base = Universe::narrow_oop_base();
186 Universe_narrow_oop_shift = Universe::narrow_oop_shift();
187 Universe_narrow_klass_base = Universe::narrow_klass_base();
188 Universe_narrow_klass_shift = Universe::narrow_klass_shift();
189 Universe_non_oop_bits = Universe::non_oop_word();
190 Universe_verify_oop_mask = Universe::verify_oop_mask();
191 Universe_verify_oop_bits = Universe::verify_oop_bits();
192
193 _supports_inline_contig_alloc = Universe::heap()->supports_inline_contig_alloc();
194 _heap_end_addr = _supports_inline_contig_alloc ? Universe::heap()->end_addr() : (HeapWord**) -1;
195 _heap_top_addr = _supports_inline_contig_alloc ? Universe::heap()->top_addr() : (HeapWord* volatile*) -1;
196
197 _max_oop_map_stack_offset = (OopMapValue::register_mask - VMRegImpl::stack2reg(0)->value()) * VMRegImpl::stack_slot_size;
198 int max_oop_map_stack_index = _max_oop_map_stack_offset / VMRegImpl::stack_slot_size;
199 assert(OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index)), "should be valid");
200 assert(!OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index + 1)), "should be invalid");
201
202 symbol_init = (address) vmSymbols::object_initializer_name();
203 symbol_clinit = (address) vmSymbols::class_initializer_name();
204
205 BarrierSet* bs = Universe::heap()->barrier_set();
206 switch (bs->kind()) {
207 case BarrierSet::CardTableModRef:
208 case BarrierSet::CardTableForRS:
209 case BarrierSet::CardTableExtension:
210 case BarrierSet::G1SATBCT:
211 case BarrierSet::G1SATBCTLogging: {
212 jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
213 assert(base != 0, "unexpected byte_map_base");
214 cardtable_start_address = base;
215 cardtable_shift = CardTableModRefBS::card_shift;
216 break;
217 }
218 case BarrierSet::ModRef:
219 cardtable_start_address = 0;
220 cardtable_shift = 0;
221 // No post barriers
222 break;
223 default:
224 JVMCI_ERROR("Unsupported BarrierSet kind %d", bs->kind());
225 break;
|
163 address CompilerToVM::Data::dlog;
164 address CompilerToVM::Data::dlog10;
165 address CompilerToVM::Data::dpow;
166
167 address CompilerToVM::Data::symbol_init;
168 address CompilerToVM::Data::symbol_clinit;
169
170 void CompilerToVM::Data::initialize(TRAPS) {
171 Klass_vtable_start_offset = in_bytes(Klass::vtable_start_offset());
172 Klass_vtable_length_offset = in_bytes(Klass::vtable_length_offset());
173
174 Method_extra_stack_entries = Method::extra_stack_entries();
175
176 SharedRuntime_ic_miss_stub = SharedRuntime::get_ic_miss_stub();
177 SharedRuntime_handle_wrong_method_stub = SharedRuntime::get_handle_wrong_method_stub();
178 SharedRuntime_deopt_blob_unpack = SharedRuntime::deopt_blob()->unpack();
179 SharedRuntime_deopt_blob_uncommon_trap = SharedRuntime::deopt_blob()->uncommon_trap();
180
181 ThreadLocalAllocBuffer_alignment_reserve = ThreadLocalAllocBuffer::alignment_reserve();
182
183 Universe_collectedHeap = GC::gc()->heap();
184 Universe_base_vtable_size = Universe::base_vtable_size();
185 Universe_narrow_oop_base = Universe::narrow_oop_base();
186 Universe_narrow_oop_shift = Universe::narrow_oop_shift();
187 Universe_narrow_klass_base = Universe::narrow_klass_base();
188 Universe_narrow_klass_shift = Universe::narrow_klass_shift();
189 Universe_non_oop_bits = Universe::non_oop_word();
190 Universe_verify_oop_mask = Universe::verify_oop_mask();
191 Universe_verify_oop_bits = Universe::verify_oop_bits();
192
193 _supports_inline_contig_alloc = GC::gc()->heap()->supports_inline_contig_alloc();
194 _heap_end_addr = _supports_inline_contig_alloc ? GC::gc()->heap()->end_addr() : (HeapWord**) -1;
195 _heap_top_addr = _supports_inline_contig_alloc ? GC::gc()->heap()->top_addr() : (HeapWord* volatile*) -1;
196
197 _max_oop_map_stack_offset = (OopMapValue::register_mask - VMRegImpl::stack2reg(0)->value()) * VMRegImpl::stack_slot_size;
198 int max_oop_map_stack_index = _max_oop_map_stack_offset / VMRegImpl::stack_slot_size;
199 assert(OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index)), "should be valid");
200 assert(!OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index + 1)), "should be invalid");
201
202 symbol_init = (address) vmSymbols::object_initializer_name();
203 symbol_clinit = (address) vmSymbols::class_initializer_name();
204
205 BarrierSet* bs = GC::gc()->heap()->barrier_set();
206 switch (bs->kind()) {
207 case BarrierSet::CardTableModRef:
208 case BarrierSet::CardTableForRS:
209 case BarrierSet::CardTableExtension:
210 case BarrierSet::G1SATBCT:
211 case BarrierSet::G1SATBCTLogging: {
212 jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
213 assert(base != 0, "unexpected byte_map_base");
214 cardtable_start_address = base;
215 cardtable_shift = CardTableModRefBS::card_shift;
216 break;
217 }
218 case BarrierSet::ModRef:
219 cardtable_start_address = 0;
220 cardtable_shift = 0;
221 // No post barriers
222 break;
223 default:
224 JVMCI_ERROR("Unsupported BarrierSet kind %d", bs->kind());
225 break;
|