[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/avm2 r9448: Push changes to AVM2.
From: |
Tom Stellard |
Subject: |
[Gnash-commit] /srv/bzr/gnash/avm2 r9448: Push changes to AVM2. |
Date: |
Sun, 10 Aug 2008 20:50:12 +0800 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9448
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sun 2008-08-10 20:50:12 +0800
message:
Push changes to AVM2.
modified:
libcore/impl.cpp
libcore/swf/tag_loaders.cpp
libcore/vm/Machine.cpp
libcore/vm/Machine.h
------------------------------------------------------------
revno: 9446.1.1
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Thu 2008-08-07 14:04:38 +0800
message:
Push an empty class on to the stack when creating a new class.
modified:
libcore/vm/Machine.cpp
------------------------------------------------------------
revno: 9446.1.2
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Fri 2008-08-08 10:48:53 +0800
message:
Add number of items in stack to pop_stack debug message.
modified:
libcore/vm/Machine.h
------------------------------------------------------------
revno: 9446.1.3
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Fri 2008-08-08 11:07:53 +0800
message:
INITPROPERTY opcode: Add code to initialize a property.
modified:
libcore/vm/Machine.cpp
------------------------------------------------------------
revno: 9446.1.4
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sat 2008-08-09 21:20:40 +0800
message:
Parse SymbolClass tag and print debug information.
modified:
libcore/impl.cpp
libcore/swf/tag_loaders.cpp
=== modified file 'libcore/impl.cpp'
--- a/libcore/impl.cpp 2008-08-05 03:45:40 +0000
+++ b/libcore/impl.cpp 2008-08-09 13:20:40 +0000
@@ -239,7 +239,7 @@
register_tag_loader(SWF::CSMTEXTSETTINGS, fixme_loader); // 74
register_tag_loader(SWF::DEFINEFONT3, define_font_loader); // 75
- register_tag_loader(SWF::SYMBOLCLASS, fixme_loader); // 76
+ register_tag_loader(SWF::SYMBOLCLASS, symbol_class_loader); // 76
register_tag_loader(SWF::METADATA, metadata_loader); // 77
register_tag_loader(SWF::DEFINESCALINGGRID, fixme_loader); // 78
register_tag_loader(SWF::DOABCDEFINE, DoABCTag::doABCLoader); // 82 -- AS3
codeblock.
=== modified file 'libcore/swf/tag_loaders.cpp'
--- a/libcore/swf/tag_loaders.cpp 2008-08-05 04:34:43 +0000
+++ b/libcore/swf/tag_loaders.cpp 2008-08-09 13:20:40 +0000
@@ -1650,15 +1650,15 @@
assert(tag == SYMBOLCLASS); //76
log_unimpl(_("%s tag parsed but not yet used"), "SYMBOLCLASS");
-// boost::uint16_t num_symbols = in->read_u16();
-// log_debug("There are %u symbols.",num_symbols);
-// for(unsigned int i = 0;i<num_symbols;i++){
-// //Skip the Tag. I am not sure what this.
-// in->skip_bytes(2);
-// std::string name;
-// in->read_string(name);
-// log_debug("Name is %s ",name);
-// }
+ boost::uint16_t num_symbols = in->read_u16();
+ log_debug("There are %u symbols.",num_symbols);
+ for(unsigned int i = 0;i<num_symbols;i++){
+ //Skip the Tag. I am not sure what this.
+ boost::uint16_t character = in->read_u16();
+ std::string name;
+ in->read_string(name);
+ log_debug("Symbol %u name=%s tag=%u",i,name,character);
+ }
}
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp 2008-08-07 05:33:39 +0000
+++ b/libcore/vm/Machine.cpp 2008-08-08 03:07:53 +0000
@@ -1360,8 +1360,15 @@
boost::uint32_t cid = mStream->read_V32();
asClass *c = pool_class(cid, mPoolObject);
LOG_DEBUG_AVM("Creating new class id=%u
name=%s",c->getName(),mPoolObject->mStringPool[c->getName()]);
+
+ //Create the class.
+ as_object* new_class = new as_object();
+ push_stack(as_value(new_class));
+
+ //Call the class's static constructor.
saveState();
mStream = c->getStaticConstructor()->getBody();
+
// ENSURE_OBJECT(mStack.top(0));
// as_object *obj = mStack.top(0).to_object().get();
// as_function *func = c->getConstructor()->getPrototype();
@@ -1599,14 +1606,17 @@
/// Set obj::(resolve)'name_id' to value, set bindings from the context.
case SWF::ABC_ACTION_INITPROPERTY:
{
+ LOG_AVM_UNIMPLEMENTED();
asName a = pool_name(mStream->read_V32(), mPoolObject);
-#ifdef PRETEND
- log_debug("AVM2: Initializing property id=%u
name=%s",a.getABCName(),mPoolObject->mStringPool[a.getABCName()]);
-#else
- //as_value& v = mStack.pop();
- mStack.drop(completeName(a));
+ 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();
+
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
-#endif
break;
}
/// 0x6A ABC_ACTION_DELETEPROPERTY
=== modified file 'libcore/vm/Machine.h'
--- a/libcore/vm/Machine.h 2008-08-07 05:33:39 +0000
+++ b/libcore/vm/Machine.h 2008-08-08 02:48:53 +0000
@@ -257,7 +257,7 @@
}
as_value pop_stack(){
- LOG_DEBUG_AVM("Poping value off the stack.");
+ LOG_DEBUG_AVM("Poping value off the stack. There will be %u
items in the stack",mStack.size()-1);
return mStack.pop();
}
- [Gnash-commit] /srv/bzr/gnash/avm2 r9448: Push changes to AVM2.,
Tom Stellard <=