gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/avm2 r9470: Clean up SETPROPERTY opcode, a


From: Tom Stellard
Subject: [Gnash-commit] /srv/bzr/gnash/avm2 r9470: Clean up SETPROPERTY opcode, and improve debug info for INITPROPERTY opcode.
Date: Sat, 16 Aug 2008 23:09:58 +0800
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9470
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sat 2008-08-16 23:09:58 +0800
message:
  Clean up SETPROPERTY opcode, and improve debug info for INITPROPERTY opcode.
modified:
  libcore/vm/Machine.cpp
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp    2008-08-16 14:38:25 +0000
+++ b/libcore/vm/Machine.cpp    2008-08-16 15:09:58 +0000
@@ -1509,25 +1509,15 @@
        case SWF::ABC_ACTION_SETPROPERTY:
        {
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               //as_value &v = mStack.pop();
+               as_value value = pop_stack();
                if (!a.isRuntime())
                {
-                       //TODO: Set the property of mStack.top(0) v,a
+                       //TODO: Get Namespace and name value off of the stack.
                }
                else
                {
-                       if (a.isRtns() || !(mStack.top(0).is_object()
-                               && mStack.top(1).to_object()->isDictionary()))
-                       {
-                               mStack.drop(completeName(a));
-                               //TODO: mStack.top(0).setProperty(a, v);
-                               mStack.drop(1);
-                       }
-                       else
-                       {
-                               //TODO: 
mStack.top(1).setDictProperty(mStack.top(0), v);
-                               mStack.drop(2);
-                       }
+                       as_object *object = pop_stack().to_object().get();
+                       object->set_member(a.getGlobalName(),value);
                }
                break;
        }
@@ -1620,12 +1610,12 @@
        {
                LOG_AVM_UNIMPLEMENTED();
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               LOG_DEBUG_AVM("Initializing property id=%u 
name=%s",a.getABCName(),mPoolObject->mStringPool[a.getABCName()]);
                as_value v = pop_stack();
                //TODO: There may or may not be a namespace, or a name object 
on the stack, we need to figure 
                //out how to determine what is on the stack.
                as_value ns = pop_stack();
                as_value object = pop_stack();
+               LOG_DEBUG_AVM("Initializing property ABC_id=%u name=%s on 
object 
%s",a.getABCName(),mPoolObject->mStringPool[a.getABCName()],object.toDebugString());
                
object.to_object()->init_member(mPoolObject->mStringPool[a.getABCName()],v,0,0);
 //             mStack.drop(completeName(a));
                //TODO: mStack.pop().to_object().setProperty(a, v, true); // 
true for init


reply via email to

[Prev in Thread] Current Thread [Next in Thread]