gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/avm2 r9472: Update a multiname's global na


From: Tom Stellard
Subject: [Gnash-commit] /srv/bzr/gnash/avm2 r9472: Update a multiname's global name, after it has been initialized.
Date: Sun, 17 Aug 2008 18:08:45 +0800
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9472
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sun 2008-08-17 18:08:45 +0800
message:
  Update a multiname's global name, after it has been initialized.
modified:
  libcore/parser/abc_block.cpp
  libcore/parser/abc_block.h
  libcore/vm/Machine.cpp
=== modified file 'libcore/parser/abc_block.cpp'
--- a/libcore/parser/abc_block.cpp      2008-08-15 03:34:10 +0000
+++ b/libcore/parser/abc_block.cpp      2008-08-17 10:08:45 +0000
@@ -1241,6 +1241,13 @@
        return NULL;
 }
 
+void abc_block::update_global_name(unsigned int multiname_index){
+       
+       asName* multiname = &mMultinamePool[multiname_index];
+       string_table::key new_key = 
mStringTable->find(mStringPool[multiname->getABCName()],false);
+       multiname->setGlobalName(new_key);      
+}
+
 abc_block::abc_block() : mStringTable(&VM::get().getStringTable())
 {
        mCH = VM::get().getClassHierarchy();

=== modified file 'libcore/parser/abc_block.h'
--- a/libcore/parser/abc_block.h        2008-08-15 03:34:10 +0000
+++ b/libcore/parser/abc_block.h        2008-08-17 10:08:45 +0000
@@ -185,6 +185,8 @@
 
        bool pool_value(boost::uint32_t index, boost::uint8_t type, as_value 
&v);
 
+       void update_global_name(unsigned int multiname_index);
+
        abc_block();
 
 private:

=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp    2008-08-17 09:40:06 +0000
+++ b/libcore/vm/Machine.cpp    2008-08-17 10:08:45 +0000
@@ -1612,14 +1612,18 @@
        case SWF::ABC_ACTION_INITPROPERTY:
        {
                LOG_AVM_UNIMPLEMENTED();
-               asName a = pool_name(mStream->read_V32(), mPoolObject);
+               boost::uint32_t index = mStream->read_V32();
+               asName a = pool_name(index, mPoolObject);
                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);
+
+               mPoolObject->update_global_name(index);
 //             mStack.drop(completeName(a));
                //TODO: mStack.pop().to_object().setProperty(a, v, true); // 
true for init
                break;


reply via email to

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