[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/avm2 r9536: GETPROPERTY opcode: use as_env
From: |
Tom Stellard |
Subject: |
[Gnash-commit] /srv/bzr/gnash/avm2 r9536: GETPROPERTY opcode: use as_environment::get_variable to search for the property. |
Date: |
Sat, 30 Aug 2008 20:19:45 +0800 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9536
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sat 2008-08-30 20:19:45 +0800
message:
GETPROPERTY opcode: use as_environment::get_variable to search for the
property.
modified:
libcore/vm/Machine.cpp
libcore/vm/Machine.h
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp 2008-08-30 10:41:42 +0000
+++ b/libcore/vm/Machine.cpp 2008-08-30 12:19:45 +0000
@@ -1566,7 +1566,10 @@
{
asName a = pool_name(mStream->read_V32(), mPoolObject);
//TODO: If multiname is runtime we need to also pop namespace
and name values of the stack.
- get_property(a.getGlobalName(),0);
+ as_value obj = pop_stack();
+ as_value val = get_property_value(obj.to_object(),a);
+ push_stack(val);
+ //get_property(a.getGlobalName(),0);
break;
}
/// 0x68 ABC_ACTION_INITPROPERTY
=== modified file 'libcore/vm/Machine.h'
--- a/libcore/vm/Machine.h 2008-08-30 10:41:42 +0000
+++ b/libcore/vm/Machine.h 2008-08-30 12:19:45 +0000
@@ -318,9 +318,28 @@
}
as_value get_property_value(asName multiname){
+ return get_property_value(NULL,multiname);
+ }
+
+ as_value get_property_value(boost::intrusive_ptr<as_object> obj, asName
multiname){
+ as_environment::ScopeStack stack;
as_environment env;
- as_value val =
env.get_variable(mPoolObject->mStringPool[multiname.getNamespace()->getAbcURI()],*getScopeStack(),NULL);
- return val;
+ if(obj == NULL){
+ stack = *getScopeStack();
+ }
+ else{
+ stack.push_back(obj);
+ }
+ std::string ns =
mPoolObject->mStringPool[multiname.getNamespace()->getAbcURI()];
+ std::string path;
+ if(ns.size() == 0){
+ path = mPoolObject->mStringPool[multiname.getABCName()];
+ }
+ else{
+ path = ns + "." +
mPoolObject->mStringPool[multiname.getABCName()];
+ }
+ return env.get_variable(path,stack,NULL);
+
}
void print_stack(){
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/avm2 r9536: GETPROPERTY opcode: use as_environment::get_variable to search for the property.,
Tom Stellard <=