Revision: 3858
Author: [email protected]
Date: Mon Feb 15 05:20:49 2010
Log: Change the interface of CallStubCompiler::CompileCallInterceptor.

Move responsibility for a typecast into the caller so that it can be
locally verified to succeed.

Review URL: http://codereview.chromium.org/594055
http://code.google.com/p/v8/source/detail?r=3858

Modified:
 /branches/bleeding_edge/src/arm/stub-cache-arm.cc
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc
 /branches/bleeding_edge/src/stub-cache.cc
 /branches/bleeding_edge/src/stub-cache.h
 /branches/bleeding_edge/src/x64/stub-cache-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Mon Feb 15 04:32:27 2010 +++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Mon Feb 15 05:20:49 2010
@@ -781,7 +781,7 @@
 }


-Object* CallStubCompiler::CompileCallField(Object* object,
+Object* CallStubCompiler::CompileCallField(JSObject* object,
                                            JSObject* holder,
                                            int index,
                                            String* name) {
@@ -800,8 +800,7 @@
   __ b(eq, &miss);

   // Do the right check and compute the holder register.
-  Register reg =
- CheckPrototypes(JSObject::cast(object), r0, holder, r1, r3, name, &miss);
+  Register reg = CheckPrototypes(object, r0, holder, r1, r3, name, &miss);
   GenerateFastPropertyLoad(masm(), r1, reg, holder, index);

   GenerateCallFunction(masm(), object, arguments(), &miss);
@@ -949,7 +948,7 @@
 }


-Object* CallStubCompiler::CompileCallInterceptor(Object* object,
+Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
                                                  JSObject* holder,
                                                  String* name) {
   // ----------- S t a t e -------------
@@ -978,9 +977,8 @@
   __ BranchOnSmi(receiver, &miss);

   // Check that the maps haven't changed.
-  Register reg =
-      CheckPrototypes(JSObject::cast(object), receiver, holder,
-                      holder_reg, scratch, name, &miss);
+  Register reg = CheckPrototypes(object, receiver, holder, holder_reg,
+                                 scratch, name, &miss);
   if (!reg.is(holder_reg)) {
     __ mov(holder_reg, reg);
   }
=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Mon Feb 15 04:32:27 2010 +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Mon Feb 15 05:20:49 2010
@@ -1159,7 +1159,7 @@
 }


-Object* CallStubCompiler::CompileCallField(Object* object,
+Object* CallStubCompiler::CompileCallField(JSObject* object,
                                            JSObject* holder,
                                            int index,
                                            String* name) {
@@ -1181,9 +1181,7 @@
   __ j(zero, &miss, not_taken);

   // Do the right check and compute the holder register.
-  Register reg =
-      CheckPrototypes(JSObject::cast(object), edx, holder,
-                      ebx, eax, name, &miss);
+ Register reg = CheckPrototypes(object, edx, holder, ebx, eax, name, &miss);

   GenerateFastPropertyLoad(masm(), edi, reg, holder, index);

@@ -1373,7 +1371,7 @@
 }


-Object* CallStubCompiler::CompileCallInterceptor(Object* object,
+Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
                                                  JSObject* holder,
                                                  String* name) {
   // ----------- S t a t e -------------
@@ -1396,7 +1394,7 @@

   CallInterceptorCompiler compiler(this, arguments(), ecx);
   compiler.Compile(masm(),
-                   JSObject::cast(object),
+                   object,
                    holder,
                    name,
                    &lookup,
=======================================
--- /branches/bleeding_edge/src/stub-cache.cc   Fri Feb 12 06:21:18 2010
+++ /branches/bleeding_edge/src/stub-cache.cc   Mon Feb 15 05:20:49 2010
@@ -484,7 +484,10 @@
   Object* code = map->FindInCodeCache(name, flags);
   if (code->IsUndefined()) {
     CallStubCompiler compiler(argc, in_loop);
-    code = compiler.CompileCallField(object, holder, index, name);
+    code = compiler.CompileCallField(JSObject::cast(object),
+                                     holder,
+                                     index,
+                                     name);
     if (code->IsFailure()) return code;
     ASSERT_EQ(flags, Code::cast(code)->flags());
     LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
@@ -518,7 +521,9 @@
   Object* code = map->FindInCodeCache(name, flags);
   if (code->IsUndefined()) {
     CallStubCompiler compiler(argc, NOT_IN_LOOP);
-    code = compiler.CompileCallInterceptor(object, holder, name);
+    code = compiler.CompileCallInterceptor(JSObject::cast(object),
+                                           holder,
+                                           name);
     if (code->IsFailure()) return code;
     ASSERT_EQ(flags, Code::cast(code)->flags());
     LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
=======================================
--- /branches/bleeding_edge/src/stub-cache.h    Fri Feb 12 06:21:18 2010
+++ /branches/bleeding_edge/src/stub-cache.h    Mon Feb 15 05:20:49 2010
@@ -552,7 +552,7 @@
   explicit CallStubCompiler(int argc, InLoopFlag in_loop)
       : arguments_(argc), in_loop_(in_loop) { }

-  Object* CompileCallField(Object* object,
+  Object* CompileCallField(JSObject* object,
                            JSObject* holder,
                            int index,
                            String* name);
@@ -561,7 +561,7 @@
                               JSFunction* function,
                               String* name,
                               CheckType check);
-  Object* CompileCallInterceptor(Object* object,
+  Object* CompileCallInterceptor(JSObject* object,
                                  JSObject* holder,
                                  String* name);
   Object* CompileCallGlobal(JSObject* object,
=======================================
--- /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Feb 15 04:32:27 2010 +++ /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Feb 15 05:20:49 2010
@@ -791,7 +791,7 @@
 }


-Object* CallStubCompiler::CompileCallField(Object* object,
+Object* CallStubCompiler::CompileCallField(JSObject* object,
                                            JSObject* holder,
                                            int index,
                                            String* name) {
@@ -814,9 +814,7 @@
   __ JumpIfSmi(rdx, &miss);

   // Do the right check and compute the holder register.
-  Register reg =
-      CheckPrototypes(JSObject::cast(object), rdx, holder,
-                      rbx, rax, name, &miss);
+ Register reg = CheckPrototypes(object, rdx, holder, rbx, rax, name, &miss);

   GenerateFastPropertyLoad(masm(), rdi, reg, holder, index);

@@ -845,7 +843,7 @@
 }


-Object* CallStubCompiler::CompileCallInterceptor(Object* object,
+Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
                                                  JSObject* holder,
                                                  String* name) {
   // ----------- S t a t e -------------
@@ -872,7 +870,7 @@
   CompileLoadInterceptor(&compiler,
                          this,
                          masm(),
-                         JSObject::cast(object),
+                         object,
                          holder,
                          name,
                          &lookup,
@@ -908,7 +906,6 @@
   // Return the generated code.
   return GetCode(INTERCEPTOR, name);
 }
-


 Object* CallStubCompiler::CompileCallGlobal(JSObject* object,

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to