comparison src/cpu/x86/vm/c1_CodeStubs_x86.cpp @ 342:37f87013dfd8

6711316: Open source the Garbage-First garbage collector Summary: First mercurial integration of the code for the Garbage-First garbage collector. Reviewed-by: apetrusenko, iveresov, jmasa, sgoldman, tonyp, ysr
author ysr
date Thu, 05 Jun 2008 15:57:56 -0700
parents a61af66fc99e
children f8199438385b
comparison
equal deleted inserted replaced
189:0b27f3512f9e 342:37f87013dfd8
453 #endif 453 #endif
454 454
455 __ jmp(_continuation); 455 __ jmp(_continuation);
456 } 456 }
457 457
458 /////////////////////////////////////////////////////////////////////////////
459 #ifndef SERIALGC
460
461 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
462
463 // At this point we know that marking is in progress
464
465 __ bind(_entry);
466 assert(pre_val()->is_register(), "Precondition.");
467
468 Register pre_val_reg = pre_val()->as_register();
469
470 ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false);
471
472 __ cmpl(pre_val_reg, NULL_WORD);
473 __ jcc(Assembler::equal, _continuation);
474 ce->store_parameter(pre_val()->as_register(), 0);
475 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_pre_barrier_slow_id)));
476 __ jmp(_continuation);
477
478 }
479
480 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
481
482 jbyte* G1PostBarrierStub::byte_map_base_slow() {
483 BarrierSet* bs = Universe::heap()->barrier_set();
484 assert(bs->is_a(BarrierSet::G1SATBCTLogging),
485 "Must be if we're using this.");
486 return ((G1SATBCardTableModRefBS*)bs)->byte_map_base;
487 }
488
489 void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
490 __ bind(_entry);
491 assert(addr()->is_register(), "Precondition.");
492 assert(new_val()->is_register(), "Precondition.");
493 Register new_val_reg = new_val()->as_register();
494 __ cmpl(new_val_reg, NULL_WORD);
495 __ jcc(Assembler::equal, _continuation);
496 ce->store_parameter(addr()->as_register(), 0);
497 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id)));
498 __ jmp(_continuation);
499 }
500
501 #endif // SERIALGC
502 /////////////////////////////////////////////////////////////////////////////
458 503
459 #undef __ 504 #undef __