< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page
rev 47398 : 8166317: InterpreterCodeSize should be computed
Reviewed-by: kvn, coleenp


5423 #endif
5424   jmp(done);
5425 
5426   bind(runtime);
5427   // save the live input values
5428   push(store_addr);
5429   push(new_val);
5430 #ifdef _LP64
5431   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post), card_addr, r15_thread);
5432 #else
5433   push(thread);
5434   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post), card_addr, thread);
5435   pop(thread);
5436 #endif
5437   pop(new_val);
5438   pop(store_addr);
5439 
5440   bind(done);
5441 }
5442 




5443 #endif // INCLUDE_ALL_GCS
5444 //////////////////////////////////////////////////////////////////////////////////
5445 
5446 
5447 void MacroAssembler::store_check(Register obj, Address dst) {
5448   store_check(obj);
5449 }
5450 
5451 void MacroAssembler::store_check(Register obj) {
5452   // Does a store check for the oop in register obj. The content of
5453   // register obj is destroyed afterwards.
5454   BarrierSet* bs = Universe::heap()->barrier_set();
5455   assert(bs->kind() == BarrierSet::CardTableForRS ||
5456          bs->kind() == BarrierSet::CardTableExtension,
5457          "Wrong barrier set kind");
5458 
5459   CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(bs);
5460   assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
5461 
5462   shrptr(obj, CardTableModRefBS::card_shift);




5423 #endif
5424   jmp(done);
5425 
5426   bind(runtime);
5427   // save the live input values
5428   push(store_addr);
5429   push(new_val);
5430 #ifdef _LP64
5431   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post), card_addr, r15_thread);
5432 #else
5433   push(thread);
5434   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post), card_addr, thread);
5435   pop(thread);
5436 #endif
5437   pop(new_val);
5438   pop(store_addr);
5439 
5440   bind(done);
5441 }
5442 
5443 // Called from init_globals() after universe_init() and before interpreter_init()
5444 void g1_barrier_stubs_init() {
5445   // G1 barrier stubs currently only generated on SPARC
5446 }
5447 #endif // INCLUDE_ALL_GCS
5448 //////////////////////////////////////////////////////////////////////////////////
5449 
5450 
5451 void MacroAssembler::store_check(Register obj, Address dst) {
5452   store_check(obj);
5453 }
5454 
5455 void MacroAssembler::store_check(Register obj) {
5456   // Does a store check for the oop in register obj. The content of
5457   // register obj is destroyed afterwards.
5458   BarrierSet* bs = Universe::heap()->barrier_set();
5459   assert(bs->kind() == BarrierSet::CardTableForRS ||
5460          bs->kind() == BarrierSet::CardTableExtension,
5461          "Wrong barrier set kind");
5462 
5463   CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(bs);
5464   assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
5465 
5466   shrptr(obj, CardTableModRefBS::card_shift);


< prev index next >