Chromium Code Reviews| 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(); |
| + } |
| } |