diff --git a/src/builtins.cc b/src/builtins.cc index f950c595b9..999969dd29 100644 --- a/src/builtins.cc +++ b/src/builtins.cc @@ -1385,11 +1385,6 @@ static void Generate_StoreIC_Slow(MacroAssembler* masm) { } -static void Generate_StoreIC_Slow_Strict(MacroAssembler* masm) { - StoreIC::GenerateSlow(masm); -} - - static void Generate_StoreIC_Initialize(MacroAssembler* masm) { StoreIC::GenerateInitialize(masm); } @@ -1420,11 +1415,6 @@ static void Generate_StoreIC_Normal(MacroAssembler* masm) { } -static void Generate_StoreIC_Normal_Strict(MacroAssembler* masm) { - StoreIC::GenerateNormal(masm); -} - - static void Generate_StoreIC_Megamorphic(MacroAssembler* masm) { StoreIC::GenerateMegamorphic(masm, kNonStrictMode); } @@ -1480,11 +1470,6 @@ static void Generate_KeyedStoreIC_Slow(MacroAssembler* masm) { } -static void Generate_KeyedStoreIC_Slow_Strict(MacroAssembler* masm) { - KeyedStoreIC::GenerateSlow(masm); -} - - static void Generate_KeyedStoreIC_Initialize(MacroAssembler* masm) { KeyedStoreIC::GenerateInitialize(masm); } @@ -1667,13 +1652,14 @@ void Builtins::InitBuiltinFunctionTable() { functions->extra_args = NO_EXTRA_ARGUMENTS; \ ++functions; -#define DEF_FUNCTION_PTR_H(aname, kind, extra) \ +#define DEF_FUNCTION_PTR_H(aname, kind) \ functions->generator = FUNCTION_ADDR(Generate_##aname); \ functions->c_code = NULL; \ functions->s_name = #aname; \ functions->name = k##aname; \ functions->flags = Code::ComputeFlags( \ - Code::HANDLER, MONOMORPHIC, extra, Code::NORMAL, Code::kind); \ + Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState, \ + Code::NORMAL, Code::kind); \ functions->extra_args = NO_EXTRA_ARGUMENTS; \ ++functions; @@ -1805,7 +1791,7 @@ Handle Builtins::name() { \ reinterpret_cast(builtin_address(k##name)); \ return Handle(code_address); \ } -#define DEFINE_BUILTIN_ACCESSOR_H(name, kind, extra) \ +#define DEFINE_BUILTIN_ACCESSOR_H(name, kind) \ Handle Builtins::name() { \ Code** code_address = \ reinterpret_cast(builtin_address(k##name)); \ diff --git a/src/builtins.h b/src/builtins.h index 1a04ad880c..e569e8f5da 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -216,16 +216,13 @@ enum BuiltinExtraArguments { CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) // Define list of builtin handlers implemented in assembly. -#define BUILTIN_LIST_H(V) \ - V(LoadIC_Slow, LOAD_IC, Code::kNoExtraICState) \ - V(KeyedLoadIC_Slow, KEYED_LOAD_IC, Code::kNoExtraICState) \ - V(StoreIC_Slow, STORE_IC, Code::kNoExtraICState) \ - V(StoreIC_Slow_Strict, STORE_IC, kStrictMode) \ - V(KeyedStoreIC_Slow, KEYED_STORE_IC, Code::kNoExtraICState)\ - V(KeyedStoreIC_Slow_Strict, KEYED_STORE_IC, kStrictMode) \ - V(LoadIC_Normal, LOAD_IC, Code::kNoExtraICState) \ - V(StoreIC_Normal, STORE_IC, Code::kNoExtraICState) \ - V(StoreIC_Normal_Strict, STORE_IC, kStrictMode) +#define BUILTIN_LIST_H(V) \ + V(LoadIC_Slow, LOAD_IC) \ + V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ + V(StoreIC_Slow, STORE_IC) \ + V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ + V(LoadIC_Normal, LOAD_IC) \ + V(StoreIC_Normal, STORE_IC) #ifdef ENABLE_DEBUGGER_SUPPORT // Define list of builtins used by the debugger implemented in assembly. @@ -314,7 +311,7 @@ class Builtins { enum Name { #define DEF_ENUM_C(name, ignore) k##name, #define DEF_ENUM_A(name, kind, state, extra) k##name, -#define DEF_ENUM_H(name, kind, extra) k##name, +#define DEF_ENUM_H(name, kind) k##name, BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A) BUILTIN_LIST_H(DEF_ENUM_H) @@ -341,7 +338,7 @@ class Builtins { #define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle name(); #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, state, extra) \ Handle name(); -#define DECLARE_BUILTIN_ACCESSOR_H(name, kind, extra) Handle name(); +#define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle name(); BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C) BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A) BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H) diff --git a/src/code-stubs.h b/src/code-stubs.h index 789983afcd..52b5942853 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -958,9 +958,8 @@ class LoadFieldStub: public HandlerStub { class StoreGlobalStub : public HandlerStub { public: - StoreGlobalStub(StrictModeFlag strict_mode, bool is_constant) { - bit_field_ = StrictModeBits::encode(strict_mode) | - IsConstantBits::encode(is_constant); + explicit StoreGlobalStub(bool is_constant) { + bit_field_ = IsConstantBits::encode(is_constant); } Handle GetCodeCopyFromTemplate(Isolate* isolate, @@ -1003,9 +1002,8 @@ class StoreGlobalStub : public HandlerStub { virtual int NotMissMinorKey() { return GetExtraICState(); } Major MajorKey() { return StoreGlobal; } - class StrictModeBits: public BitField {}; - class IsConstantBits: public BitField {}; - class RepresentationBits: public BitField {}; + class IsConstantBits: public BitField {}; + class RepresentationBits: public BitField {}; int bit_field_; diff --git a/src/ic.cc b/src/ic.cc index 2c83d56980..557a48381c 100644 --- a/src/ic.cc +++ b/src/ic.cc @@ -1633,7 +1633,8 @@ Handle StoreIC::CompileHandler(LookupResult* lookup, Handle receiver = Handle::cast(object); Handle holder(lookup->holder()); - StoreStubCompiler compiler(isolate(), strict_mode(), kind()); + // Handlers do not use strict mode. + StoreStubCompiler compiler(isolate(), kNonStrictMode, kind()); switch (lookup->type()) { case FIELD: return compiler.CompileStoreField(receiver, lookup, name); @@ -1661,7 +1662,7 @@ Handle StoreIC::CompileHandler(LookupResult* lookup, Handle global = Handle::cast(receiver); Handle cell(global->GetPropertyCell(lookup), isolate()); Handle union_type = PropertyCell::UpdatedType(cell, value); - StoreGlobalStub stub(strict_mode(), union_type->IsConstant()); + StoreGlobalStub stub(union_type->IsConstant()); Handle code = stub.GetCodeCopyFromTemplate( isolate(), receiver->map(), *cell); @@ -1670,9 +1671,7 @@ Handle StoreIC::CompileHandler(LookupResult* lookup, return code; } ASSERT(holder.is_identical_to(receiver)); - return strict_mode() == kStrictMode - ? isolate()->builtins()->StoreIC_Normal_Strict() - : isolate()->builtins()->StoreIC_Normal(); + return isolate()->builtins()->StoreIC_Normal(); case CALLBACKS: { if (kind() == Code::KEYED_STORE_IC) break; Handle callback(lookup->GetCallbackObject(), isolate()); diff --git a/src/ic.h b/src/ic.h index 4a3e716db2..bfb73ac6a5 100644 --- a/src/ic.h +++ b/src/ic.h @@ -606,11 +606,7 @@ class StoreIC: public IC { } virtual Handle slow_stub() const { - if (strict_mode() == kStrictMode) { - return isolate()->builtins()->StoreIC_Slow_Strict(); - } else { - return isolate()->builtins()->StoreIC_Slow(); - } + return isolate()->builtins()->StoreIC_Slow(); } virtual Handle pre_monomorphic_stub() { @@ -723,11 +719,7 @@ class KeyedStoreIC: public StoreIC { } } virtual Handle slow_stub() const { - if (strict_mode() == kStrictMode) { - return isolate()->builtins()->KeyedStoreIC_Slow_Strict(); - } else { - return isolate()->builtins()->KeyedStoreIC_Slow(); - } + return isolate()->builtins()->KeyedStoreIC_Slow(); } virtual Handle megamorphic_stub() { if (strict_mode() == kStrictMode) {