Mercurial > hg > graal-jvmci-8
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: |