[Top][All Lists]
[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/avm2 r9472: Update a multiname's global name, after it has been initialized.,
Tom Stellard <=