| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index f6e880f61062e4f6286d48089d83d77812b89f55..051dd45dd99273969a22591920b9484c539b13c3 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -43,6 +43,7 @@ CodeStubInterfaceDescriptor::CodeStubInterfaceDescriptor()
|
| : register_param_count_(-1),
|
| stack_parameter_count_(no_reg),
|
| hint_stack_parameter_count_(-1),
|
| + continuation_type_(NORMAL_CONTINUATION),
|
| function_mode_(NOT_JS_FUNCTION_STUB_MODE),
|
| register_params_(NULL),
|
| deoptimization_handler_(NULL),
|
| @@ -51,6 +52,11 @@ CodeStubInterfaceDescriptor::CodeStubInterfaceDescriptor()
|
| has_miss_handler_(false) { }
|
|
|
|
|
| +void CodeStub::GenerateStubsRequiringBuiltinsAheadOfTime(Isolate* isolate) {
|
| + StubFailureTailCallTrampolineStub::GenerateAheadOfTime(isolate);
|
| +}
|
| +
|
| +
|
| bool CodeStub::FindCodeInCache(Code** code_out, Isolate* isolate) {
|
| UnseededNumberDictionary* stubs = isolate->heap()->code_stubs();
|
| int index = stubs->FindEntry(GetKey());
|
| @@ -580,6 +586,14 @@ void BinaryOpStub::UpdateStatus(Handle<Object> left,
|
| ASSERT(result_state_ <= (has_int_result() ? INT32 : NUMBER) ||
|
| op_ == Token::ADD);
|
|
|
| + // Reset overwrite mode unless we can actually make use of it, or may be able
|
| + // to make use of it at some point in the future.
|
| + if ((mode_ == OVERWRITE_LEFT && left_state_ > NUMBER) ||
|
| + (mode_ == OVERWRITE_RIGHT && right_state_ > NUMBER) ||
|
| + result_state_ > NUMBER) {
|
| + mode_ = NO_OVERWRITE;
|
| + }
|
| +
|
| if (old_state == GetExtraICState()) {
|
| // Tagged operations can lead to non-truncating HChanges
|
| if (left->IsUndefined() || left->IsBoolean()) {
|
| @@ -958,7 +972,8 @@ void JSEntryStub::FinishCode(Handle<Code> code) {
|
| }
|
|
|
|
|
| -void KeyedLoadDictionaryElementStub::Generate(MacroAssembler* masm) {
|
| +void KeyedLoadDictionaryElementPlatformStub::Generate(
|
| + MacroAssembler* masm) {
|
| KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm);
|
| }
|
|
|
| @@ -1109,6 +1124,12 @@ void StubFailureTrampolineStub::GenerateAheadOfTime(Isolate* isolate) {
|
| }
|
|
|
|
|
| +void StubFailureTailCallTrampolineStub::GenerateAheadOfTime(Isolate* isolate) {
|
| + StubFailureTailCallTrampolineStub stub;
|
| + stub.GetCode(isolate)->set_is_pregenerated(true);
|
| +}
|
| +
|
| +
|
| void ProfileEntryHookStub::EntryHookTrampoline(intptr_t function,
|
| intptr_t stack_pointer,
|
| Isolate* isolate) {
|
|
|