Author: [email protected]
Date: Tue Feb 17 00:22:19 2009
New Revision: 1285
Modified:
branches/experimental/toiger/src/codegen-arm.cc
Log:
Experimental: fix bug in the deferred code for object literals. The
"virtual" frame elements created by VirtualFrame::Push do not yet work
on ARM, switch to the materialized stack elements created by
VirtualFrame::EmitPush.
Rename the deferred code class to match the deferred code naming
convention (DeferredXXX).
Review URL: http://codereview.chromium.org/20415
Modified: branches/experimental/toiger/src/codegen-arm.cc
==============================================================================
--- branches/experimental/toiger/src/codegen-arm.cc (original)
+++ branches/experimental/toiger/src/codegen-arm.cc Tue Feb 17 00:22:19 2009
@@ -2311,11 +2311,11 @@
// by calling Runtime_CreateObjectLiteral.
// Each created boilerplate is stored in the JSFunction and they are
// therefore context dependent.
-class ObjectLiteralDeferred: public DeferredCode {
+class DeferredObjectLiteral: public DeferredCode {
public:
- ObjectLiteralDeferred(CodeGenerator* generator, ObjectLiteral* node)
+ DeferredObjectLiteral(CodeGenerator* generator, ObjectLiteral* node)
: DeferredCode(generator), node_(node) {
- set_comment("[ ObjectLiteralDeferred");
+ set_comment("[ DeferredObjectLiteral");
}
virtual void Generate();
@@ -2325,7 +2325,7 @@
};
-void ObjectLiteralDeferred::Generate() {
+void DeferredObjectLiteral::Generate() {
// Argument is passed in r1.
enter()->Bind();
VirtualFrame::SpilledScope spilled_scope(generator());
@@ -2335,13 +2335,13 @@
VirtualFrame* frame = generator()->frame();
// Literal array (0).
- frame->Push(r1);
+ frame->EmitPush(r1);
// Literal index (1).
__ mov(r0, Operand(Smi::FromInt(node_->literal_index())));
- frame->Push(r0);
+ frame->EmitPush(r0);
// Constant properties (2).
__ mov(r0, Operand(node_->constant_properties()));
- frame->Push(r0);
+ frame->EmitPush(r0);
Result boilerplate =
frame->CallRuntime(Runtime::kCreateObjectLiteralBoilerplate, 3);
__ mov(r2, Operand(boilerplate.reg()));
@@ -2354,7 +2354,7 @@
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ ObjectLiteral");
- ObjectLiteralDeferred* deferred = new ObjectLiteralDeferred(this, node);
+ DeferredObjectLiteral* deferred = new DeferredObjectLiteral(this, node);
// Retrieve the literal array and check the allocated entry.
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---