comparison src/cpu/x86/vm/stubGenerator_x86_32.cpp @ 1192:776fb94f33cc

6918006: G1: spill space must be reserved on the stack for barrier calls on Windows x64 Summary: Stub code generated to call G1 barriers does not allocate spill space on the stack as required by Windows x64 ABI. The fix is to use more ABI-friendly call_VM_leaf(). Reviewed-by: iveresov, never, kvn
author apetrusenko
date Thu, 21 Jan 2010 18:51:10 -0800
parents ddb7834449d0
children 3cf667df43ef
comparison
equal deleted inserted replaced
1191:fed17682aea5 1192:776fb94f33cc
716 switch (bs->kind()) { 716 switch (bs->kind()) {
717 case BarrierSet::G1SATBCT: 717 case BarrierSet::G1SATBCT:
718 case BarrierSet::G1SATBCTLogging: 718 case BarrierSet::G1SATBCTLogging:
719 { 719 {
720 __ pusha(); // push registers 720 __ pusha(); // push registers
721 __ push(count); 721 __ call_VM_leaf(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_pre),
722 __ push(start); 722 start, count);
723 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_pre)));
724 __ addptr(rsp, 2*wordSize);
725 __ popa(); 723 __ popa();
726 } 724 }
727 break; 725 break;
728 case BarrierSet::CardTableModRef: 726 case BarrierSet::CardTableModRef:
729 case BarrierSet::CardTableExtension: 727 case BarrierSet::CardTableExtension:
750 switch (bs->kind()) { 748 switch (bs->kind()) {
751 case BarrierSet::G1SATBCT: 749 case BarrierSet::G1SATBCT:
752 case BarrierSet::G1SATBCTLogging: 750 case BarrierSet::G1SATBCTLogging:
753 { 751 {
754 __ pusha(); // push registers 752 __ pusha(); // push registers
755 __ push(count); 753 __ call_VM_leaf(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post),
756 __ push(start); 754 start, count);
757 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post)));
758 __ addptr(rsp, 2*wordSize);
759 __ popa(); 755 __ popa();
760 } 756 }
761 break; 757 break;
762 758
763 case BarrierSet::CardTableModRef: 759 case BarrierSet::CardTableModRef: