| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index d49804a6e3d419a6e20117a3e625e5b3069f22c5..fec1854da4861bb3abc6e777f1dfabb2f70646f1 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -744,6 +744,13 @@ class InstanceofStub: public PlatformCodeStub {
|
| };
|
|
|
|
|
| +enum AllocationSiteOverrideMode {
|
| + DONT_OVERRIDE,
|
| + DISABLE_ALLOCATION_SITES,
|
| + LAST_ALLOCATION_SITE_OVERRIDE_MODE = DISABLE_ALLOCATION_SITES
|
| +};
|
| +
|
| +
|
| class ArrayConstructorStub: public PlatformCodeStub {
|
| public:
|
| enum ArgumentCountKey { ANY, NONE, ONE, MORE_THAN_ONE };
|
| @@ -753,6 +760,9 @@ class ArrayConstructorStub: public PlatformCodeStub {
|
| void Generate(MacroAssembler* masm);
|
|
|
| private:
|
| + void GenerateDispatchToArrayStub(MacroAssembler* masm,
|
| + AllocationSiteOverrideMode mode);
|
| +
|
| virtual CodeStub::Major MajorKey() { return ArrayConstructor; }
|
| virtual int MinorKey() { return argument_count_; }
|
|
|
| @@ -828,19 +838,12 @@ class FunctionPrototypeStub: public ICStub {
|
|
|
| class StringLengthStub: public ICStub {
|
| public:
|
| - StringLengthStub(Code::Kind kind, bool support_wrapper)
|
| - : ICStub(kind), support_wrapper_(support_wrapper) { }
|
| + explicit StringLengthStub(Code::Kind kind) : ICStub(kind) { }
|
| virtual void Generate(MacroAssembler* masm);
|
|
|
| private:
|
| STATIC_ASSERT(KindBits::kSize == 4);
|
| - class WrapperModeBits: public BitField<bool, 4, 1> {};
|
| - virtual CodeStub::Major MajorKey() { return StringLength; }
|
| - virtual int MinorKey() {
|
| - return KindBits::encode(kind()) | WrapperModeBits::encode(support_wrapper_);
|
| - }
|
| -
|
| - bool support_wrapper_;
|
| + virtual CodeStub::Major MajorKey() { return StringLength; }
|
| };
|
|
|
|
|
| @@ -1893,13 +1896,6 @@ enum ContextCheckMode {
|
| };
|
|
|
|
|
| -enum AllocationSiteOverrideMode {
|
| - DONT_OVERRIDE,
|
| - DISABLE_ALLOCATION_SITES,
|
| - LAST_ALLOCATION_SITE_OVERRIDE_MODE = DISABLE_ALLOCATION_SITES
|
| -};
|
| -
|
| -
|
| class ArrayConstructorStubBase : public HydrogenCodeStub {
|
| public:
|
| ArrayConstructorStubBase(ElementsKind kind, ContextCheckMode context_mode,
|
| @@ -1907,7 +1903,8 @@ class ArrayConstructorStubBase : public HydrogenCodeStub {
|
| // It only makes sense to override local allocation site behavior
|
| // if there is a difference between the global allocation site policy
|
| // for an ElementsKind and the desired usage of the stub.
|
| - ASSERT(override_mode != DISABLE_ALLOCATION_SITES ||
|
| + ASSERT(!(FLAG_track_allocation_sites &&
|
| + override_mode == DISABLE_ALLOCATION_SITES) ||
|
| AllocationSite::GetMode(kind) == TRACK_ALLOCATION_SITE);
|
| bit_field_ = ElementsKindBits::encode(kind) |
|
| AllocationSiteOverrideModeBits::encode(override_mode) |
|
|
|