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
-~----------~----~----~----~------~----~------~--~---

Reply via email to