gnash-commit
[Top][All Lists]
Advanced

[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();
        }
 


reply via email to

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