124 address CompilerToVM::Data::dcos;
125 address CompilerToVM::Data::dtan;
126 address CompilerToVM::Data::dexp;
127 address CompilerToVM::Data::dlog;
128 address CompilerToVM::Data::dlog10;
129 address CompilerToVM::Data::dpow;
130
131 void CompilerToVM::Data::initialize() {
132 Klass_vtable_start_offset = in_bytes(Klass::vtable_start_offset());
133 Klass_vtable_length_offset = in_bytes(Klass::vtable_length_offset());
134
135 Method_extra_stack_entries = Method::extra_stack_entries();
136
137 SharedRuntime_ic_miss_stub = SharedRuntime::get_ic_miss_stub();
138 SharedRuntime_handle_wrong_method_stub = SharedRuntime::get_handle_wrong_method_stub();
139 SharedRuntime_deopt_blob_unpack = SharedRuntime::deopt_blob()->unpack();
140 SharedRuntime_deopt_blob_uncommon_trap = SharedRuntime::deopt_blob()->uncommon_trap();
141
142 ThreadLocalAllocBuffer_alignment_reserve = ThreadLocalAllocBuffer::alignment_reserve();
143
144 Universe_collectedHeap = Universe::heap();
145 Universe_base_vtable_size = Universe::base_vtable_size();
146 Universe_narrow_oop_base = Universe::narrow_oop_base();
147 Universe_narrow_oop_shift = Universe::narrow_oop_shift();
148 Universe_narrow_klass_base = Universe::narrow_klass_base();
149 Universe_narrow_klass_shift = Universe::narrow_klass_shift();
150 Universe_non_oop_bits = Universe::non_oop_word();
151 Universe_verify_oop_mask = Universe::verify_oop_mask();
152 Universe_verify_oop_bits = Universe::verify_oop_bits();
153
154 _supports_inline_contig_alloc = Universe::heap()->supports_inline_contig_alloc();
155 _heap_end_addr = _supports_inline_contig_alloc ? Universe::heap()->end_addr() : (HeapWord**) -1;
156 _heap_top_addr = _supports_inline_contig_alloc ? Universe::heap()->top_addr() : (HeapWord* volatile*) -1;
157
158 _max_oop_map_stack_offset = (OopMapValue::register_mask - VMRegImpl::stack2reg(0)->value()) * VMRegImpl::stack_slot_size;
159 int max_oop_map_stack_index = _max_oop_map_stack_offset / VMRegImpl::stack_slot_size;
160 assert(OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index)), "should be valid");
161 assert(!OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index + 1)), "should be invalid");
162
163 BarrierSet* bs = Universe::heap()->barrier_set();
164 switch (bs->kind()) {
165 case BarrierSet::CardTableModRef:
166 case BarrierSet::CardTableForRS:
167 case BarrierSet::CardTableExtension:
168 case BarrierSet::G1SATBCT:
169 case BarrierSet::G1SATBCTLogging: {
170 jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
171 assert(base != 0, "unexpected byte_map_base");
172 cardtable_start_address = base;
173 cardtable_shift = CardTableModRefBS::card_shift;
174 break;
175 }
176 case BarrierSet::ModRef:
177 cardtable_start_address = 0;
178 cardtable_shift = 0;
179 // No post barriers
180 break;
181 default:
182 ShouldNotReachHere();
183 break;
|
124 address CompilerToVM::Data::dcos;
125 address CompilerToVM::Data::dtan;
126 address CompilerToVM::Data::dexp;
127 address CompilerToVM::Data::dlog;
128 address CompilerToVM::Data::dlog10;
129 address CompilerToVM::Data::dpow;
130
131 void CompilerToVM::Data::initialize() {
132 Klass_vtable_start_offset = in_bytes(Klass::vtable_start_offset());
133 Klass_vtable_length_offset = in_bytes(Klass::vtable_length_offset());
134
135 Method_extra_stack_entries = Method::extra_stack_entries();
136
137 SharedRuntime_ic_miss_stub = SharedRuntime::get_ic_miss_stub();
138 SharedRuntime_handle_wrong_method_stub = SharedRuntime::get_handle_wrong_method_stub();
139 SharedRuntime_deopt_blob_unpack = SharedRuntime::deopt_blob()->unpack();
140 SharedRuntime_deopt_blob_uncommon_trap = SharedRuntime::deopt_blob()->uncommon_trap();
141
142 ThreadLocalAllocBuffer_alignment_reserve = ThreadLocalAllocBuffer::alignment_reserve();
143
144 Universe_collectedHeap = GC::gc()->heap();
145 Universe_base_vtable_size = Universe::base_vtable_size();
146 Universe_narrow_oop_base = Universe::narrow_oop_base();
147 Universe_narrow_oop_shift = Universe::narrow_oop_shift();
148 Universe_narrow_klass_base = Universe::narrow_klass_base();
149 Universe_narrow_klass_shift = Universe::narrow_klass_shift();
150 Universe_non_oop_bits = Universe::non_oop_word();
151 Universe_verify_oop_mask = Universe::verify_oop_mask();
152 Universe_verify_oop_bits = Universe::verify_oop_bits();
153
154 _supports_inline_contig_alloc = GC::gc()->heap()->supports_inline_contig_alloc();
155 _heap_end_addr = _supports_inline_contig_alloc ? GC::gc()->heap()->end_addr() : (HeapWord**) -1;
156 _heap_top_addr = _supports_inline_contig_alloc ? GC::gc()->heap()->top_addr() : (HeapWord* volatile*) -1;
157
158 _max_oop_map_stack_offset = (OopMapValue::register_mask - VMRegImpl::stack2reg(0)->value()) * VMRegImpl::stack_slot_size;
159 int max_oop_map_stack_index = _max_oop_map_stack_offset / VMRegImpl::stack_slot_size;
160 assert(OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index)), "should be valid");
161 assert(!OopMapValue::legal_vm_reg_name(VMRegImpl::stack2reg(max_oop_map_stack_index + 1)), "should be invalid");
162
163 BarrierSet* bs = GC::gc()->heap()->barrier_set();
164 switch (bs->kind()) {
165 case BarrierSet::CardTableModRef:
166 case BarrierSet::CardTableForRS:
167 case BarrierSet::CardTableExtension:
168 case BarrierSet::G1SATBCT:
169 case BarrierSet::G1SATBCTLogging: {
170 jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
171 assert(base != 0, "unexpected byte_map_base");
172 cardtable_start_address = base;
173 cardtable_shift = CardTableModRefBS::card_shift;
174 break;
175 }
176 case BarrierSet::ModRef:
177 cardtable_start_address = 0;
178 cardtable_shift = 0;
179 // No post barriers
180 break;
181 default:
182 ShouldNotReachHere();
183 break;
|