[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/avm2 r9457: Have ConstuctSuper opcode remo
From: |
Tom Stellard |
Subject: |
[Gnash-commit] /srv/bzr/gnash/avm2 r9457: Have ConstuctSuper opcode remove items from stack, and implement opcode FindPropStrict. |
Date: |
Wed, 13 Aug 2008 01:03:21 +0800 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9457
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Wed 2008-08-13 01:03:21 +0800
message:
Have ConstuctSuper opcode remove items from stack, and implement opcode
FindPropStrict.
modified:
libcore/vm/Machine.cpp
libcore/vm/Machine.h
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp 2008-08-12 16:29:15 +0000
+++ b/libcore/vm/Machine.cpp 2008-08-12 17:03:21 +0000
@@ -1246,21 +1246,24 @@
/// .
case SWF::ABC_ACTION_CONSTRUCTSUPER:
{
- // TODO
+ LOG_AVM_UNIMPLEMENTED();
boost::uint32_t argc = mStream->read_V32();
- ENSURE_OBJECT(mStack.top(argc));
- as_object *obj = mStack.top(argc).to_object().get();
- as_object *super = mStack.top(argc).to_object()->get_super();
- if (!super)
- {
- throw ASException();
- break;
- }
- as_function *func = super->get_constructor();
+ LOG_DEBUG_AVM("There are %u arguments.",argc);
+ std::vector<as_value> args = get_args(argc);
+// ENSURE_OBJECT(mStack.top(argc));
+ as_object *super = pop_stack().to_object().get()->get_super();
+ //TODO: Actually construct the super.
+// as_object *super = mStack.top(argc).to_object()->get_super();
+// if (!super)
+// {
+// throw ASException();
+// break;
+// }
+// as_function *func = super->get_constructor();
// 'obj' is the 'this' for the call, we ignore the return,
there are
// argc arguments, and we drop all of the arguments plus 'obj'
from
// the stack.
- pushCall(func, obj, mIgnoreReturn, argc, -1);
+// pushCall(func, obj, mIgnoreReturn, argc, -1);
break;
}
/// 0x4A ABC_ACTION_CONSTRUCTPROP
@@ -1423,13 +1426,11 @@
case SWF::ABC_ACTION_FINDPROPSTRICT:
case SWF::ABC_ACTION_FINDPROPERTY:
{
+ LOG_AVM_UNIMPLEMENTED();
// boost::uint32_t property_name = mStream->read_V32();
asName a = pool_name(mStream->read_V32(), mPoolObject);
-#ifdef PRETEND
- FIND_PROPERTY(a);
- DEBUG_NOT_COMPLETE();
-#else
- mStack.drop(completeName(a));
+ find_prop_strict(a);
+/* mStack.drop(completeName(a));
as_object *owner;
Property *b = mCurrentScope->findProperty(a.getABCName(),
a.getNamespace()->getURI(), &owner);
@@ -1443,8 +1444,7 @@
else
{
mStack.push(owner);
- }
-#endif
+ }*/
break;
}
/// 0x5F ABC_ACTION_FINDDEF
=== modified file 'libcore/vm/Machine.h'
--- a/libcore/vm/Machine.h 2008-08-12 16:29:15 +0000
+++ b/libcore/vm/Machine.h 2008-08-12 17:03:21 +0000
@@ -310,6 +310,15 @@
mStack.push(value);
}
+ std::vector<as_value> get_args(int argc){
+ std::vector<as_value> args;
+ args.resize(argc);
+ for(unsigned int i=0;i<argc;i++){
+ args.push_back(pop_stack());
+ }
+ return args;
+ }
+
SafeStack<as_value> mStack;
SafeStack<State> mStateStack;
SafeStack<Scope> mScopeStack;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/avm2 r9457: Have ConstuctSuper opcode remove items from stack, and implement opcode FindPropStrict.,
Tom Stellard <=