Index: src/arm/code-stubs-arm.cc |
=================================================================== |
--- src/arm/code-stubs-arm.cc (revision 9309) |
+++ src/arm/code-stubs-arm.cc (working copy) |
@@ -3181,6 +3181,7 @@ |
} else { |
__ vmov(r0, r1, d2); |
} |
+ AllowExternalCallThatCantCauseGC scope(masm); |
switch (type_) { |
case TranscendentalCache::SIN: |
__ CallCFunction(ExternalReference::math_sin_double_function(isolate), |
@@ -3334,12 +3335,23 @@ |
bool CEntryStub::CompilingCallsToThisStubIsGCSafe() { |
- return !save_doubles_ && result_size_ == 1; |
+ return (!save_doubles_ || ISOLATE->fp_stubs_generated()) && |
+ result_size_ == 1; |
} |
void CodeStub::GenerateStubsAheadOfTime() { |
} |
+ |
+ |
+void CodeStub::GenerateFPStubs() { |
+ CEntryStub save_doubles(1); |
+ save_doubles.SaveDoubles(); |
+ Handle<Code> code = save_doubles.GetCode(); |
+ code->GetIsolate()->set_fp_stubs_generated(true); |
+} |
+ |
+ |
void CEntryStub::GenerateThrowTOS(MacroAssembler* masm) { |
__ Throw(r0); |
} |