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