Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index c74d3ecef4bcd794f338c17dc7edc29a9ca1400d..d328aa82abc7432b7933e820fd1667a6fcb792a3 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -986,6 +986,9 @@ void BinaryOpStub::GenerateTypeTransitionWithSavedArgs(MacroAssembler* masm) { |
void BinaryOpStub::Generate(MacroAssembler* masm) { |
+ // Explicitly allow generation of nested stubs. It is safe here. |
+ AllowStubCallsScope allow_stub_calls(masm, true); |
+ |
switch (operands_type_) { |
case BinaryOpIC::UNINITIALIZED: |
GenerateTypeTransition(masm); |
@@ -4333,13 +4336,16 @@ bool CEntryStub::NeedsImmovableCode() { |
} |
-bool CEntryStub::CompilingCallsToThisStubIsGCSafe() { |
+bool CEntryStub::IsPregenerated() { |
return (!save_doubles_ || ISOLATE->fp_stubs_generated()) && |
result_size_ == 1; |
} |
void CodeStub::GenerateStubsAheadOfTime() { |
+ StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(); |
+ // It is important that the store buffer overflow stubs are generated first. |
+ RecordWriteStub::GenerateFixedRegStubsAheadOfTime(); |
} |
@@ -6589,6 +6595,7 @@ struct AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
{ ebx, eax, edi, EMIT_REMEMBERED_SET }, |
// Used in CompileArrayPushCall. |
{ ebx, ecx, edx, EMIT_REMEMBERED_SET }, |
+ // { ebx, edi, edx, EMIT_REMEMBERED_SET }, |
Erik Corry
2011/09/26 22:47:26
Commented code
|
// Used in CompileStoreGlobal. |
{ ebx, ecx, edx, OMIT_REMEMBERED_SET }, |
// Used in StoreStubCompiler::CompileStoreField and |
@@ -6608,7 +6615,7 @@ struct AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
}; |
-bool RecordWriteStub::CompilingCallsToThisStubIsGCSafe() { |
+bool RecordWriteStub::IsPregenerated() { |
for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
!entry->object.is(no_reg); |
entry++) { |
@@ -6627,8 +6634,12 @@ bool RecordWriteStub::CompilingCallsToThisStubIsGCSafe() { |
void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime() { |
StoreBufferOverflowStub stub1(kDontSaveFPRegs); |
stub1.GetCode(); |
- StoreBufferOverflowStub stub2(kSaveFPRegs); |
- stub2.GetCode(); |
+ |
+ CpuFeatures::TryForceFeatureScope scope(SSE2); |
+ if (CpuFeatures::IsSupported(SSE2)) { |
+ StoreBufferOverflowStub stub2(kSaveFPRegs); |
+ stub2.GetCode(); |
+ } |
} |