Reviewers: mvstanton,

Message:
PTAL

Description:
Remove the strict-mode flag from store handlers. It's only relevant to the IC
stub.

Please review this at https://chromiumcodereview.appspot.com/91413003/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+23, -51 lines):
  M src/builtins.h
  M src/builtins.cc
  M src/code-stubs.h
  M src/ic.h
  M src/ic.cc


Index: src/builtins.cc
diff --git a/src/builtins.cc b/src/builtins.cc
index f950c595b9a3ff32c506a9fb627050f49fcd85ce..999969dd29f3ca92e0a8d7cc772d9140ffde6289 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<Code> Builtins::name() { \
       reinterpret_cast<Code**>(builtin_address(k##name));   \
   return Handle<Code>(code_address);                        \
 }
-#define DEFINE_BUILTIN_ACCESSOR_H(name, kind, extra)        \
+#define DEFINE_BUILTIN_ACCESSOR_H(name, kind)               \
 Handle<Code> Builtins::name() {                             \
   Code** code_address =                                     \
       reinterpret_cast<Code**>(builtin_address(k##name));   \
Index: src/builtins.h
diff --git a/src/builtins.h b/src/builtins.h
index 1a04ad880ca6ab7e6fd8e6d2dfa53bd63432fb45..e569e8f5dae9ae195ceeee0baee43da7ac9e49c1 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<Code> name();
 #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, state, extra) \
   Handle<Code> name();
-#define DECLARE_BUILTIN_ACCESSOR_H(name, kind, extra) Handle<Code> name();
+#define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle<Code> name();
   BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C)
   BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A)
   BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H)
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index 789983afcd8ca847b7784b31a21a7c27ba3f2bf3..52b594285359fb3a452f1ca18d9124e83e3fc17b 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<Code> GetCodeCopyFromTemplate(Isolate* isolate,
@@ -1003,9 +1002,8 @@ class StoreGlobalStub : public HandlerStub {
   virtual int NotMissMinorKey() { return GetExtraICState(); }
   Major MajorKey() { return StoreGlobal; }

-  class StrictModeBits: public BitField<StrictModeFlag, 0, 1> {};
-  class IsConstantBits: public BitField<bool, 1, 1> {};
-  class RepresentationBits: public BitField<Representation::Kind, 2, 8> {};
+  class IsConstantBits: public BitField<bool, 0, 1> {};
+  class RepresentationBits: public BitField<Representation::Kind, 1, 8> {};

   int bit_field_;

Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index 2c83d569804a22ebc2eadeca8c52b12f1cf0f7d5..557a48381c2fa6fc94c8e87616abd3b47e52a1b1 100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -1633,7 +1633,8 @@ Handle<Code> StoreIC::CompileHandler(LookupResult* lookup,
   Handle<JSObject> receiver = Handle<JSObject>::cast(object);

   Handle<JSObject> 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<Code> StoreIC::CompileHandler(LookupResult* lookup,
         Handle<GlobalObject> global = Handle<GlobalObject>::cast(receiver);
Handle<PropertyCell> cell(global->GetPropertyCell(lookup), isolate());
         Handle<Type> union_type = PropertyCell::UpdatedType(cell, value);
-        StoreGlobalStub stub(strict_mode(), union_type->IsConstant());
+        StoreGlobalStub stub(union_type->IsConstant());

         Handle<Code> code = stub.GetCodeCopyFromTemplate(
             isolate(), receiver->map(), *cell);
@@ -1670,9 +1671,7 @@ Handle<Code> 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<Object> callback(lookup->GetCallbackObject(), isolate());
Index: src/ic.h
diff --git a/src/ic.h b/src/ic.h
index 4a3e716db2893c80140c2fb1b416769fed861579..bfb73ac6a530772ad7bc02e9ee88a9a07c726b38 100644
--- a/src/ic.h
+++ b/src/ic.h
@@ -606,11 +606,7 @@ class StoreIC: public IC {
   }

   virtual Handle<Code> 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<Code> pre_monomorphic_stub() {
@@ -723,11 +719,7 @@ class KeyedStoreIC: public StoreIC {
     }
   }
   virtual Handle<Code> 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<Code> megamorphic_stub() {
     if (strict_mode() == kStrictMode) {


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to