From: mstarzinger@chromium.org Date: Fri, 21 Feb 2014 11:19:32 +0000 (+0000) Subject: Initialize interface descriptor for ToNumberStub. X-Git-Tag: upstream/4.7.83~10583 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa63cfaf6d18a123562d28070a60e5019eb68b01;p=platform%2Fupstream%2Fv8.git Initialize interface descriptor for ToNumberStub. R=svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/170303003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/code-stubs.cc b/src/code-stubs.cc index be14cf6..fe7d77e 100644 --- a/src/code-stubs.cc +++ b/src/code-stubs.cc @@ -748,6 +748,14 @@ void FastNewContextStub::InstallDescriptors(Isolate* isolate) { // static +void FastCloneShallowArrayStub::InstallDescriptors(Isolate* isolate) { + FastCloneShallowArrayStub stub(FastCloneShallowArrayStub::CLONE_ELEMENTS, + DONT_TRACK_ALLOCATION_SITE, 0); + InstallDescriptor(isolate, &stub); +} + + +// static void BinaryOpICStub::InstallDescriptors(Isolate* isolate) { BinaryOpICStub stub(Token::ADD, NO_OVERWRITE); InstallDescriptor(isolate, &stub); diff --git a/src/code-stubs.h b/src/code-stubs.h index 07e34be..79043d5 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -486,6 +486,13 @@ class ToNumberStub: public HydrogenCodeStub { Isolate* isolate, CodeStubInterfaceDescriptor* descriptor); + static void InstallDescriptors(Isolate* isolate) { + ToNumberStub stub; + stub.InitializeInterfaceDescriptor( + isolate, + isolate->code_stub_interface_descriptor(CodeStub::ToNumber)); + } + private: Major MajorKey() { return ToNumber; } int NotMissMinorKey() { return 0; } @@ -624,6 +631,8 @@ class FastCloneShallowArrayStub : public HydrogenCodeStub { Isolate* isolate, CodeStubInterfaceDescriptor* descriptor); + static void InstallDescriptors(Isolate* isolate); + private: Mode mode_; AllocationSiteMode allocation_site_mode_; @@ -1375,7 +1384,7 @@ class CompareNilICStub : public HydrogenCodeStub { Isolate* isolate, CodeStubInterfaceDescriptor* descriptor); - static void InitializeForIsolate(Isolate* isolate) { + static void InstallDescriptors(Isolate* isolate) { CompareNilICStub compare_stub(kNullValue, UNINITIALIZED); compare_stub.InitializeInterfaceDescriptor( isolate, @@ -2332,7 +2341,7 @@ class ToBooleanStub: public HydrogenCodeStub { virtual bool SometimesSetsUpAFrame() { return false; } - static void InitializeForIsolate(Isolate* isolate) { + static void InstallDescriptors(Isolate* isolate) { ToBooleanStub stub; stub.InitializeInterfaceDescriptor( isolate, diff --git a/src/isolate.cc b/src/isolate.cc index ca32460..d81e50e 100644 --- a/src/isolate.cc +++ b/src/isolate.cc @@ -2106,17 +2106,14 @@ bool Isolate::Init(Deserializer* des) { CodeStub::GenerateFPStubs(this); StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(this); StubFailureTrampolineStub::GenerateAheadOfTime(this); - // TODO(mstarzinger): The following is an ugly hack to make sure the - // interface descriptor is initialized even when stubs have been - // deserialized out of the snapshot without the graph builder. - FastCloneShallowArrayStub stub(FastCloneShallowArrayStub::CLONE_ELEMENTS, - DONT_TRACK_ALLOCATION_SITE, 0); - stub.InitializeInterfaceDescriptor( - this, code_stub_interface_descriptor(CodeStub::FastCloneShallowArray)); + // Ensure interface descriptors are initialized even when stubs have been + // deserialized out of the snapshot without using the graph builder. + FastCloneShallowArrayStub::InstallDescriptors(this); BinaryOpICStub::InstallDescriptors(this); BinaryOpWithAllocationSiteStub::InstallDescriptors(this); - CompareNilICStub::InitializeForIsolate(this); - ToBooleanStub::InitializeForIsolate(this); + CompareNilICStub::InstallDescriptors(this); + ToBooleanStub::InstallDescriptors(this); + ToNumberStub::InstallDescriptors(this); ArrayConstructorStubBase::InstallDescriptors(this); InternalArrayConstructorStubBase::InstallDescriptors(this); FastNewClosureStub::InstallDescriptors(this);