Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 09eca72a8c709b2f237c6efc2fdfa90b36e06ba4..7afede3e5a723fdfa695ea5ecddcbcd23b19f4fd 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -693,21 +693,6 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
} |
-bool WriteInt32ToHeapNumberStub::IsPregenerated(Isolate* isolate) { |
- // These variants are compiled ahead of time. See next method. |
- if (the_int_.is(r1) && the_heap_number_.is(r0) && scratch_.is(r2)) { |
- return true; |
- } |
- if (the_int_.is(r2) && the_heap_number_.is(r0) && scratch_.is(r3)) { |
- return true; |
- } |
- // Other register combinations are generated as and when they are needed, |
- // so it is unsafe to call them from stubs (we can't generate a stub while |
- // we are generating a stub). |
- return false; |
-} |
- |
- |
void WriteInt32ToHeapNumberStub::GenerateFixedRegStubsAheadOfTime( |
Isolate* isolate) { |
WriteInt32ToHeapNumberStub stub1(r1, r0, r2); |
@@ -1674,18 +1659,11 @@ bool CEntryStub::NeedsImmovableCode() { |
} |
-bool CEntryStub::IsPregenerated(Isolate* isolate) { |
- return (!save_doubles_ || isolate->fp_stubs_generated()) && |
- result_size_ == 1; |
-} |
- |
- |
void CodeStub::GenerateStubsAheadOfTime(Isolate* isolate) { |
CEntryStub::GenerateAheadOfTime(isolate); |
WriteInt32ToHeapNumberStub::GenerateFixedRegStubsAheadOfTime(isolate); |
StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(isolate); |
StubFailureTrampolineStub::GenerateAheadOfTime(isolate); |
- RecordWriteStub::GenerateFixedRegStubsAheadOfTime(isolate); |
ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |
CreateAllocationSiteStub::GenerateAheadOfTime(isolate); |
BinaryOpStub::GenerateAheadOfTime(isolate); |
@@ -5347,68 +5325,6 @@ void NameDictionaryLookupStub::Generate(MacroAssembler* masm) { |
} |
-struct AheadOfTimeWriteBarrierStubList { |
- Register object, value, address; |
- RememberedSetAction action; |
-}; |
- |
- |
-#define REG(Name) { kRegister_ ## Name ## _Code } |
- |
-static const AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
- // Used in RegExpExecStub. |
- { REG(r6), REG(r4), REG(r3), EMIT_REMEMBERED_SET }, |
- // Used in CompileArrayPushCall. |
- // Also used in StoreIC::GenerateNormal via GenerateDictionaryStore. |
- // Also used in KeyedStoreIC::GenerateGeneric. |
- { REG(r3), REG(r4), REG(r5), EMIT_REMEMBERED_SET }, |
- // Used in StoreStubCompiler::CompileStoreField via GenerateStoreField. |
- { REG(r1), REG(r2), REG(r3), EMIT_REMEMBERED_SET }, |
- { REG(r3), REG(r2), REG(r1), EMIT_REMEMBERED_SET }, |
- // Used in KeyedStoreStubCompiler::CompileStoreField via GenerateStoreField. |
- { REG(r2), REG(r1), REG(r3), EMIT_REMEMBERED_SET }, |
- { REG(r3), REG(r1), REG(r2), EMIT_REMEMBERED_SET }, |
- // KeyedStoreStubCompiler::GenerateStoreFastElement. |
- { REG(r3), REG(r2), REG(r4), EMIT_REMEMBERED_SET }, |
- { REG(r2), REG(r3), REG(r4), EMIT_REMEMBERED_SET }, |
- // ElementsTransitionGenerator::GenerateMapChangeElementTransition |
- // and ElementsTransitionGenerator::GenerateSmiToDouble |
- // and ElementsTransitionGenerator::GenerateDoubleToObject |
- { REG(r2), REG(r3), REG(r9), EMIT_REMEMBERED_SET }, |
- { REG(r2), REG(r3), REG(r9), OMIT_REMEMBERED_SET }, |
- // ElementsTransitionGenerator::GenerateDoubleToObject |
- { REG(r6), REG(r2), REG(r0), EMIT_REMEMBERED_SET }, |
- { REG(r2), REG(r6), REG(r9), EMIT_REMEMBERED_SET }, |
- // StoreArrayLiteralElementStub::Generate |
- { REG(r5), REG(r0), REG(r6), EMIT_REMEMBERED_SET }, |
- // FastNewClosureStub::Generate |
- { REG(r2), REG(r4), REG(r1), EMIT_REMEMBERED_SET }, |
- // StringAddStub::Generate |
- { REG(r3), REG(r1), REG(r4), EMIT_REMEMBERED_SET }, |
- { REG(r3), REG(r0), REG(r4), EMIT_REMEMBERED_SET }, |
- // Null termination. |
- { REG(no_reg), REG(no_reg), REG(no_reg), EMIT_REMEMBERED_SET} |
-}; |
- |
-#undef REG |
- |
- |
-bool RecordWriteStub::IsPregenerated(Isolate* isolate) { |
- for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
- !entry->object.is(no_reg); |
- entry++) { |
- if (object_.is(entry->object) && |
- value_.is(entry->value) && |
- address_.is(entry->address) && |
- remembered_set_action_ == entry->action && |
- save_fp_regs_mode_ == kDontSaveFPRegs) { |
- return true; |
- } |
- } |
- return false; |
-} |
- |
- |
void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime( |
Isolate* isolate) { |
StoreBufferOverflowStub stub1(kDontSaveFPRegs); |
@@ -5419,20 +5335,6 @@ void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime( |
} |
-void RecordWriteStub::GenerateFixedRegStubsAheadOfTime(Isolate* isolate) { |
- for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
- !entry->object.is(no_reg); |
- entry++) { |
- RecordWriteStub stub(entry->object, |
- entry->value, |
- entry->address, |
- entry->action, |
- kDontSaveFPRegs); |
- stub.GetCode(isolate)->set_is_pregenerated(true); |
- } |
-} |
- |
- |
bool CodeStub::CanUseFPRegisters() { |
return true; // VFP2 is a base requirement for V8 |
} |
@@ -5738,7 +5640,6 @@ void StubFailureTailCallTrampolineStub::Generate(MacroAssembler* masm) { |
void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
if (masm->isolate()->function_entry_hook() != NULL) { |
PredictableCodeSizeScope predictable(masm, 4 * Assembler::kInstrSize); |
- AllowStubCallsScope allow_stub_calls(masm, true); |
ProfileEntryHookStub stub; |
__ push(lr); |
__ CallStub(&stub); |