gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/avm2 r9468: Rename mFrame to mRegisters an


From: Tom Stellard
Subject: [Gnash-commit] /srv/bzr/gnash/avm2 r9468: Rename mFrame to mRegisters and use a vector instead of a SafeStack to represent the local registers.
Date: Sat, 16 Aug 2008 01:23:32 +0800
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9468
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Sat 2008-08-16 01:23:32 +0800
message:
  Rename mFrame to mRegisters and use a vector instead of a SafeStack to 
represent the local registers.
modified:
  libcore/vm/Machine.cpp
  libcore/vm/Machine.h
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp    2008-08-15 03:24:26 +0000
+++ b/libcore/vm/Machine.cpp    2008-08-15 17:23:32 +0000
@@ -431,7 +431,7 @@
        case SWF::ABC_ACTION_KILL:
        {
                boost::uint32_t regNum = mStream->read_V32();
-               mFrame.value(regNum).set_undefined();
+               mRegisters[regNum].set_undefined();
                break;
        }
 /// 0x09 ABC_ACTION_LABEL
@@ -987,8 +987,8 @@
        {
                boost::int32_t oindex = mStream->read_V32();
                boost::int32_t iindex = mStream->read_V32();
-               as_value &objv = mFrame.value(oindex);
-               as_value &indexv = mFrame.value(iindex);
+               as_value &objv = mRegisters[oindex];
+               as_value &indexv = mRegisters[iindex];
                ENSURE_OBJECT(objv);
                ENSURE_NUMBER(indexv);
                as_object *obj = objv.to_object().get();
@@ -1000,16 +1000,16 @@
                {
                        mStack.top(0).set_bool(true);
                        if (owner)
-                               mFrame.value(oindex) = owner;
+                               mRegisters[oindex] = owner;
                        else
-                               mFrame.value(oindex).set_null();
-                       mFrame.value(iindex) = next;
+                               mRegisters[oindex].set_null();
+                       mRegisters[iindex] = next;
                }
                else
                {
                        mStack.top(0).set_bool(false);
-                       mFrame.value(oindex).set_null();
-                       mFrame.value(iindex) = 0;
+                       mRegisters[oindex].set_null();
+                       mRegisters[iindex] = 0;
                }
                break;
        }
@@ -1538,7 +1538,7 @@
        case SWF::ABC_ACTION_GETLOCAL:
        {
                mStack.grow(1);
-               mStack.top(0) = mFrame.value(mStream->read_V32());
+               mStack.top(0) = mRegisters[mStream->read_V32()];
                break;
        }
 /// 0x63 ABC_ACTION_SETLOCAL
@@ -1550,7 +1550,7 @@
 ///  .
        case SWF::ABC_ACTION_SETLOCAL:
        {
-               mFrame.value(mStream->read_V32()) = mStack.top(0);
+               mRegisters[mStream->read_V32()] = mStack.top(0);
                mStack.drop(1);
                break;
        }
@@ -1921,7 +1921,7 @@
        case SWF::ABC_ACTION_INCLOCAL:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_number() + 1;
+               mRegisters[foff] = mRegisters[foff].to_number() + 1;
                break;
        }
 /// 0x93 ABC_ACTION_DECREMENT
@@ -1940,7 +1940,7 @@
        case SWF::ABC_ACTION_DECLOCAL:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_number() - 1;
+               mRegisters[foff] = mRegisters[foff].to_number() - 1;
                break;
        }
 /// 0x95 ABC_ACTION_ABC_TYPEOF
@@ -2269,7 +2269,7 @@
        case SWF::ABC_ACTION_INCLOCAL_I:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_int() + 1;
+               mRegisters[foff] = mRegisters[foff].to_int() + 1;
                break;
        }
 /// 0xC3 ABC_ACTION_DECLOCAL_I
@@ -2277,7 +2277,7 @@
        case SWF::ABC_ACTION_DECLOCAL_I:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_int() - 1;
+               mRegisters[foff] = mRegisters[foff].to_int() - 1;
                break;
        }
 /// 0xC4 ABC_ACTION_NEGATE_I
@@ -2329,7 +2329,7 @@
 //             mStack.push() instead?
 
                push_stack(get_register(opcode- SWF::ABC_ACTION_GETLOCAL0));
-//             mStack.top(0) = mFrame.value(opcode - 
SWF::ABC_ACTION_GETLOCAL0);
+//             mStack.top(0) = mRegisters.value(opcode - 
SWF::ABC_ACTION_GETLOCAL0);
                break;
        }
 /// 0xD4 ABC_ACTION_SETLOCAL0
@@ -2346,8 +2346,7 @@
        case SWF::ABC_ACTION_SETLOCAL2:
        case SWF::ABC_ACTION_SETLOCAL3:
        {
-               mFrame.value(opcode - SWF::ABC_ACTION_SETLOCAL0) = 
mStack.top(0);
-               mStack.drop(1);
+               mRegisters[opcode - SWF::ABC_ACTION_SETLOCAL0] = pop_stack();
                break;
        }
 
@@ -2617,7 +2616,7 @@
        log_debug("Getting constructor.");
        asMethod* method = start_script->getConstructor();
 
-//     mFrame.push(global);
+//     mRegisters.push(global);
        int i;
        for(i=0;i<start_script->mTraits.size();i++){
                abc_Trait trait = start_script->mTraits[i];
@@ -2629,13 +2628,11 @@
        }
        log_debug("Loding code stream.");
        mStream = method->getBody();
-       mFrame.push(as_value(global));
-       log_debug("Value type: %s",mFrame.top(0).typeOf());
+       mRegisters[0] = as_value(global);
 }
 
 void Machine::executeCodeblock(CodeStream* stream){
        mStream = stream;
-       mFrame.push(NULL);
        execute();
 }
 
@@ -2645,10 +2642,12 @@
        executeCodeblock(theClass->getConstructor()->getBody());
 }
 
-Machine::Machine(string_table &ST, ClassHierarchy *CH):mST(),mFrame()
+Machine::Machine(string_table &ST, ClassHierarchy *CH):mST(),mRegisters()
 {
        mCH = CH;
-//     mFrame.grow(4);
+       //Local registers should be initialized at the beginning of each 
function call, but
+       //we don't currently parse the number of local registers for each 
function.
+       mRegisters.resize(4);
 //     mST = new string_table();
 //     mST = ST;
 }

=== modified file 'libcore/vm/Machine.h'
--- a/libcore/vm/Machine.h      2008-08-14 14:00:00 +0000
+++ b/libcore/vm/Machine.h      2008-08-15 17:23:32 +0000
@@ -250,7 +250,7 @@
 
        as_value get_register(int index){
                LOG_DEBUG_AVM("Getting value at a register %d ",index);
-               return mFrame.value(index);
+               return mRegisters[index];
        }
 
        void push_stack(as_value object){
@@ -323,7 +323,7 @@
        SafeStack<as_value> mStack;
        SafeStack<State> mStateStack;
        SafeStack<Scope> mScopeStack;
-       SafeStack<as_value> mFrame;
+       std::vector<as_value> mRegisters;
        SafeStack<as_value> mAsValueScopeStack;
        CodeStream *mStream;
 


reply via email to

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