gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash/server swf.h


From: Chad Musick
Subject: [Gnash-commit] gnash/server swf.h
Date: Mon, 20 Aug 2007 06:38:03 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Chad Musick <cmusick>   07/08/20 06:38:03

Modified files:
        server         : swf.h 

Log message:
        Added MING-compatible enum for all new actionscript 3 (abc) opcodes,
        with information about their functions.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf.h?cvsroot=gnash&r1=1.35&r2=1.36

Patches:
Index: swf.h
===================================================================
RCS file: /sources/gnash/gnash/server/swf.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- swf.h       9 Jul 2007 14:32:23 -0000       1.35
+++ swf.h       20 Aug 2007 06:38:02 -0000      1.36
@@ -483,8 +483,1180 @@
     ACTION_DEFINEFUNCTION          = 0x9B,
 
     ACTION_SETREGISTER             = 0x87
+
 } action_type;
 
+typedef enum
+{
+    /// AS3 Actions go below here.
+
+    /// Do: Enter the debugger if one has been invoked.
+    ABC_ACTION_BKPT                = 0x01,
+
+    /// Do: Nothing.
+    ABC_ACTION_NOP                 = 0x02,
+
+    /// Stack In:
+    ///  obj -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: Throw obj as an exception
+    ABC_ACTION_THROW               = 0X03,
+
+    /// Stream:
+    ///  name_id -- V32 index to multiname 'name'
+    /// Stack In:
+    ///  obj -- an object
+    ///  [ns [n]] -- Namespace stuff.
+    /// Stack Out:
+    ///  super -- if obj.name is a method, the super of that method.
+    ///        -- if obj.name is write-only data, throw ReferenceError.
+    ///        -- if obj.name is readable, the return of the getter of super.
+    ABC_ACTION_GETSUPER            = 0X04,
+
+    /// Stream: UV32 index to multiname 'name'
+    /// Stack In:
+    ///  obj -- an object
+    ///  val -- an object
+    ///  [ns [n]] -- Namespace stuff.
+    /// Stack Out:
+    ///  .
+    /// Do: Make val the super of obj.name ; throw ReferenceError if obj.name 
is
+    ///  not writable.
+    ABC_ACTION_SETSUPER            = 0X05,
+
+    /// Dynamically eXtend Name Space?
+    /// Stream: UV32 index to string pool 'nsname'
+    /// Do: Create a new public namespace with name nsname, enter the 
namespace.
+    ABC_ACTION_DXNS                = 0X06,
+
+    /// Stack In:
+    ///  nsname -- a string object
+    /// Stack Out:
+    ///  .
+    /// Do: Create a new public namespace with name nsname, but don't enter it.
+    ABC_ACTION_DXNSLATE            = 0X07,
+
+    /// Stream: UV32 frame pointer offset 'offset'
+    /// Frame: 
+    ///  Kill at offset
+    ABC_ACTION_KILL                = 0X08,
+
+    /// Do: Unknown purpose, Tamarin does nothing.
+    ABC_ACTION_LABEL               = 0X09,
+
+    ABC_ACTION_0x0A                = 0X0A,
+    ABC_ACTION_0X0B                = 0X0B,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If !(a < b) move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFNLT               = 0X0C,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If !(a <= b) move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFNLE               = 0X0D,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If !(a > b) move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFNGT               = 0X0E,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If !(a >= b) move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFNGE               = 0X0F,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Do: If jump is negative, check for interrupts. Move by jump in stream.
+    ABC_ACTION_JUMP                = 0X10,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a is 'true', move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFTRUE              = 0X11,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a is 'false', move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFFALSE             = 0X12,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a == b (weakly), move by jump in stream, as ABC_ACTION_JUMP 
does.
+    ABC_ACTION_IFEQ                = 0x13,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a != b (weakly), move by jump in stream, as ABC_ACTION_JUMP 
does.
+    ABC_ACTION_IFNE                = 0X14,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a < b move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFLT                = 0X15,
+    
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a <= b move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFLE                 = 0x16,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a > b move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFGT                 = 0x17,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a >= b move by jump in stream, as ABC_ACTION_JUMP does.
+    ABC_ACTION_IFGE                 = 0x18,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a == b (strictly), move by jump in stream, as ABC_ACTION_JUMP
+    ABC_ACTION_IFSTRICTEQ           = 0x19,
+
+    /// Stream: S24 jump offset 'jump'
+    /// Stack In:
+    ///  a -- an object
+    ///  b -- an object
+    /// Stack Out:
+    ///  .
+    /// Do: If a != b (strongly), move by jump in stream, as ABC_ACTION_JUMP
+    ABC_ACTION_IFSTRICTNE           = 0x1A,
+
+    /// Stream: 3 bytes | V32 count as 'case_count - 1' | case_count of S24
+    ///  as 'cases'
+    /// Stack In:
+    ///  index -- an integer object
+    /// Stack Out:
+    ///  .
+    /// Do: If index >= case_count, reset stream to position on op entry.
+    ///  Otherwise, move by cases[index] - 1 from stream position on op entry.
+    ABC_ACTION_LOOKUPSWITCH         = 0x1B,
+
+    /// Stack In:
+    ///  scope -- a scope
+    /// Stack Out:
+    ///  .
+    /// Do: Enter scope with previous scope as its base, unless it already had
+    ///  a base, in which case leave that alone.
+    ABC_ACTION_PUSHWITH             = 0x1C,
+
+    /// Do: exit current scope. Clear the base if the depth is now 
+    ///  shallower than the base's depth.
+    ABC_ACTION_POPSCOPE             = 0x1D,
+
+    /// Stack In:
+    ///  obj -- an object
+    ///  index -- an integer object
+    /// Stack Out:
+    ///  name -- the key name at index in obj (not next after index).
+    /// Do: If obj is a namespace index 1 is the uri of the namespace, 
+    ///  index 2 is the prefix of the namespace, and any other value is a
+    ///  null string object. If obj is an immutable object, like a number,
+    ///  operate on its prototype instead. If there is no such index,
+    ///  name is null.
+    ABC_ACTION_NEXTNAME             = 0x1E,
+
+    /// Stack In:
+    ///  obj -- an object
+    ///  index -- an integer object
+    /// Stack Out:
+    ///  next_index -- next index after index in obj, or 0 if none.
+    /// Do: If there is a key/val pair after index, make next_index as it.
+    ///  Otherwise, make next_index 0.
+    ABC_ACTION_HASNEXT              = 0x1F,
+
+    /// Stack Out:
+    ///  n -- a Null object.
+    ABC_ACTION_PUSHNULL             = 0x20,
+
+    ///  n -- an Undefined object.
+    ABC_ACTION_PUSHUNDEFINED        = 0x21,
+
+    ABC_ACTION_0x22                 = 0x22,
+
+    /// Stack In:
+    ///  obj -- an object (namespaces okay)
+    ///  index -- an integer object
+    /// Stack Out:
+    ///  value -- the value of the key value pair in obj at index.
+    ABC_ACTION_NEXTVALUE            = 0x23,
+
+    /// Stream: S8 as 'byte'
+    /// Stack Out:
+    ///  byte -- as a raw byte
+    ABC_ACTION_PUSHBYTE             = 0x24,
+
+    /// Stream: V32 as 'value'
+    /// Stack Out:
+    ///  value -- as a raw integer
+    ABC_ACTION_PUSHSHORT            = 0x25,
+
+    /// Stack Out:
+    ///  true -- the True object
+    ABC_ACTION_PUSHTRUE             = 0x26,
+
+    /// Stack Out:
+    ///  false -- the False object
+    ABC_ACTION_PUSHFALSE            = 0x27,
+
+    /// Stack Out:
+    ///  NaN -- the NaN object
+    ABC_ACTION_PUSHNAN              = 0x28,
+
+    /// Stack In:
+    ///  a -- anything
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_POP                  = 0x29,
+
+    /// Stack In:
+    ///  a -- anything
+    /// Stack Out:
+    ///  a
+    ///  a
+    ABC_ACTION_DUP                  = 0x2A,
+
+    /// Stack In:
+    ///  a -- anything
+    ///  b -- anything
+    /// Stack Out:
+    ///  b
+    ///  a
+    ABC_ACTION_SWAP                 = 0x2B,
+
+    /// Stream: V32 string pool index 'index'
+    /// Stack Out:
+    ///  value -- String object from string_pool[index]
+    ABC_ACTION_PUSHSTRING           = 0x2C,
+
+    /// Stream: V32 int pool index 'index'
+    /// Stack Out:
+    ///  value -- Integer object from integer_pool[index]
+    ABC_ACTION_PUSHINT              = 0x2D,
+
+    /// Stream: V32 uint pool index 'index'
+    /// Stack Out:
+    ///  value -- Unsigned Integer object from unsigned_integer_pool[index]
+    ABC_ACTION_PUSHUINT             = 0x2E,
+
+    /// Stream: V32 double pool index 'index'
+    /// Stack Out:
+    ///  value -- Double object from double_pool[index]
+    ABC_ACTION_PUSHDOUBLE           = 0x2F,
+
+    /// Stack In:
+    ///  scope -- a scope
+    /// Stack Out:
+    ///  .
+    /// Do: Enter scope without altering base.
+    ABC_ACTION_PUSHSCOPE            = 0x30,
+
+    /// Stream: V32 namespace pool index 'index'
+    /// Stack Out:
+    ///  ns -- Namespace object from namespace_pool[index]
+    ABC_ACTION_PUSHNAMESPACE        = 0x31,
+
+    /// Stream: V32 frame location 'objloc' | V32 frame location 'indexloc'
+    /// Stack Out:
+    ///  truth -- True if frame[objloc] has key/val pair after frame[indexloc],
+    ///   following delagates (__proto__) objects if needed. False, otherwise.
+    /// Frame:
+    ///  Change at objloc to object which possessed next value.
+    ///  Change at indexloc to index (as object) of the next value.
+    ABC_ACTION_HASNEXT2             = 0x32,
+
+    ABC_ACTION_0x33                 = 0x33,
+    ABC_ACTION_0x34                 = 0x34,
+    ABC_ACTION_0x35                 = 0x35,
+    ABC_ACTION_0x36                 = 0x36,
+    ABC_ACTION_0x37                 = 0x37,
+    ABC_ACTION_0x38                 = 0x38,
+    ABC_ACTION_0x39                 = 0x39,
+    ABC_ACTION_0x3A                 = 0x3A,
+    ABC_ACTION_0x3B                 = 0x3B,
+    ABC_ACTION_0x3C                 = 0x3C,
+    ABC_ACTION_0x3D                 = 0x3D,
+    ABC_ACTION_0x3E                 = 0x3E,
+    ABC_ACTION_0x3F                 = 0x3F,
+
+    /// Stream: V32 'index'
+    /// Stack Out:
+    ///  func -- the function object
+    /// Do: Information about function is in the pool at index. Construct the
+    ///  function from this information, current scope, and base of the scope.
+    ABC_ACTION_NEWFUNCTION          = 0x40,
+
+    /// Stream: V32 'arg_count'
+    /// Stack In:
+    ///  func -- the function to be called
+    ///  obj -- the object to which the function belongs
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value returned by obj->func(arg1, ...., argN)
+    ABC_ACTION_CALL                = 0x41,
+
+    /// Stream: V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object to be constructed
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- obj after it has been constructed as obj(arg1, ..., argN)
+    ABC_ACTION_CONSTRUCT           = 0x42,
+
+    /// Stream: V32 'method_id + 1' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object to be called
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value returned by obj::'method_id'(arg1, ..., argN)
+    ABC_ACTION_CALLMETHOD          = 0x43,
+
+    /// Stream: V32 'method_id' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object to act as a receiver for the static call
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value returned by obj->ABC::'method_id'(arg1, ..., argN)
+    ABC_ACTION_CALLSTATIC          = 0x44,
+
+    /// Stream: V32 'name_offset' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object whose super is to be called
+    ///  [ns [n]] -- Namespace stuff
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value returned by 
obj::(resolve)'name_offset'::super(arg1,
+    ///   ..., argN)
+    ABC_ACTION_CALLSUPER           = 0x45,
+
+    /// Stream: V32 'name_offset' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- The object whose property is to be accessed.
+    ///  [ns [n]] -- Namespace stuff
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value from obj::(resolve)'name_offset'(arg1, ..., argN)
+    /// NB: Calls getter/setter if they exist.
+    ABC_ACTION_CALLPROPERTY        = 0x46,
+
+    /// Do: Return an Undefined object up the callstack.
+    ABC_ACTION_RETURNVOID           = 0x47,
+
+    /// Stack In:
+    ///  value -- value to be returned
+    /// Stack Out:
+    ///  .
+    /// Do: Return value up the callstack.
+    ABC_ACTION_RETURNVALUE          = 0x48,
+
+    /// Stream: V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object whose super's constructor should be invoked
+    ///  arg1 ... argN -- the arg_count arguments
+    /// Stack Out:
+    ///  value -- obj after obj::super(arg1, ..., argN) has been invoked
+    ABC_ACTION_CONSTRUCTSUPER      = 0x49,
+
+    /// Stream: V32 'name_offset' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- the object whose property should be constructed
+    ///  [ns [n]] -- Namespace stuff
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the newly constructed prop from obj::(resolve)
+    ///   'name_offset'(arg1, ..., argN)
+    ABC_ACTION_CONSTRUCTPROP       = 0x4A,
+
+    /// Do: Nothing, this is an intermediate code op, should not appear in ABC.
+    ABC_ACTION_CALLSUPERID          = 0x4B,
+
+    /// Stream: V32 'name_offset' | V32 'arg_count'
+    /// Stack In:
+    ///  obj -- The object whose property is to be accessed.
+    ///  [ns [n]] -- Namespace stuff
+    ///  arg1 ... argN -- the arg_count arguments to pass
+    /// Stack Out:
+    ///  value -- the value from by obj::(resolve)'name_offset'(arg1, ..., 
argN)
+    /// NB: It seems like this does _not_ call getter/setter if they exist,
+    ///  but is otherwise identical to ABC_ACTION_CALLPROPERTY
+    ABC_ACTION_CALLPROPLEX         = 0x4C,
+
+    /// Do: Nothing, this is an intermediate code op, should not appear in ABC.
+    ABC_ACTION_CALLINTERFACE        = 0x4D,
+
+    /// See: 0x45 (ABC_ACTION_CALLSUPER), but
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_CALLSUPERVOID       = 0x4E,
+
+    /// See: 0x46 (ABC_ACTION_CALLPROPERTY), but
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_CALLPROPVOID        = 0x4F,
+
+    ABC_ACTION_0x50                 = 0x50,
+    ABC_ACTION_0x51                 = 0x51,
+    ABC_ACTION_0x52                 = 0x52,
+    ABC_ACTION_0x53                 = 0x53,
+    ABC_ACTION_0x54                 = 0x54,
+
+    /// Stream: V32 'arg_count'
+    /// Stack In:
+    ///  prop_name_1 -- a string
+    ///  prop_value_1 -- a value object
+    ///  .
+    ///  . (arg_count name/value pairs in all)
+    ///  .
+    ///  prop_name_n -- a string
+    ///  prop_value_n -- a value object
+    /// Stack Out:
+    ///  obj -- A new object which contains all of the given properties.
+    /// NB: This builds an object from its properties, it's not a constructor.
+    ABC_ACTION_NEWOBJECT            = 0x55,
+
+    /// Stream: V32 'array_size'
+    /// Stack In:
+    ///  value_1 -- a value
+    ///  .
+    ///  . (array_size of these)
+    ///  .
+    ///  value_n -- a value
+    /// Stack Out:
+    ///  array -- an array { value_1, value_2, ..., value_n }
+    ABC_ACTION_NEWARRAY             = 0x56,
+
+    /// Stack Out:
+    ///  vtable -- A new virtual table, which has the previous one as a parent.
+    ABC_ACTION_NEWACTIVATION        = 0x57,
+
+    /// Stream: V32 'class_id'
+    /// Stack In:
+    ///  obj -- An object to be turned into a class
+    /// Stack Out:
+    ///  class -- The newly made class, made from obj and the information at
+    ///   cinits_pool[class_id]
+    /// NB: This depends on scope and scope base (to determine base class)
+    ABC_ACTION_NEWCLASS             = 0x58,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  value -- Whose descendants to get
+    ///  [ns [n]] -- Namespace stuff
+    /// Stack Out:
+    ///  ?
+    /// NB: This op seems to always throw a TypeError in Tamarin, though I
+    /// assume that it ought to do something to yield a list of
+    /// descendants of a class.
+    ABC_ACTION_GETDESCENDANTS       = 0x59,
+
+    /// Stream: V32 'catch_id'
+    /// Stack Out:
+    ///  vtable -- vtable suitable to catch an exception of type in catch_id.
+    /// NB: Need more information on how exceptions are set up.
+    ABC_ACTION_NEWCATCH             = 0x5A,
+
+    ABC_ACTION_0x5B                 = 0x5B,
+    ABC_ACTION_0x5C                 = 0x5C,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  [ns [n]] -- Namespace stuff
+    /// Stack Out:
+    ///  owner -- object which owns property given by looking up the name_id,
+    ///   or throw a ReferenceError if none exists.
+    ABC_ACTION_FINDPROPSTRICT       = 0x5D,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  [ns [n]] -- Namespace stuff
+    /// Stack Out:
+    ///  owner -- object which owns property given by looking up the name_id,
+    ///   or an Undefined object if none exists.
+    ABC_ACTION_FINDPROPERTY         = 0x5E,
+
+    /// Stream: V32 'name_id' (no ns expansion)
+    /// Stack Out:
+    ///  def -- The definition of the name at name_id.
+    ABC_ACTION_FINDDEF              = 0x5F,
+
+    /// Stream: V32 'name_id' (no ns expansion)
+    /// Stack Out:
+    ///  property -- The result of 0x5D (ABC_ACTION_FINDPROPSTRICT)
+    ///   + 0x66 (ABC_ACTION_GETPROPERTY)
+    ABC_ACTION_GETLEX               = 0x60,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  obj -- The object whose property is to be set
+    ///  [ns [n]] -- Namespace stuff
+    ///  [key] -- Key name for property. Will not have both Namespace and key.
+    ///  value -- The value to be used
+    /// Stack Out:
+    ///  .
+    /// Do: Set obj::(resolve)'name_id' to value, or set obj::key to value.
+    /// NB: I'm not yet clear which should be used when. (Chad)
+    ABC_ACTION_SETPROPERTY          = 0x61,
+
+    /// Stream: V32 'frame_index'
+    /// Frame: value at frame_index is needed
+    /// Stack Out:
+    ///  value
+    ABC_ACTION_GETLOCAL             = 0x62,
+
+    /// Stream: V32 'frame_index'
+    /// Frame: obj at frame_index is set to value
+    /// Stack In:
+    ///  value
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_SETLOCAL             = 0x63,
+
+    /// Stack Out:
+    ///  global -- The global scope object
+    ABC_ACTION_GETGLOBALSCOPE       = 0x64,
+
+    /// Stream: S8 'depth'
+    /// Stack Out:
+    ///  scope -- The scope object at depth
+    ABC_ACTION_GETSCOPEOBJECT       = 0x65,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  obj -- The object whose property is to be retrieved
+    ///  [ns [n]] -- Namespace stuff
+    ///  [key] -- Key name for property. Will not have both Namespace and key.
+    /// Stack Out:
+    ///  prop -- The requested property.
+    /// NB: As with 0x61 (ABC_ACTION_SETPROPERTY) it's unclear to me when
+    /// key gets used and when the namespace (or nothing) is used.
+    ABC_ACTION_GETPROPERTY          = 0x66,
+
+    ABC_ACTION_0x67                 = 0x67,
+
+    /// Stream V32 'name_id'
+    /// Stack In:
+    ///  obj -- The object whose property is to be initialized
+    ///  [ns [n]] -- Namespace stuff
+    ///  value -- The value to be put into the property.
+    /// Stack Out:
+    ///  .
+    /// Do:
+    ///  Set obj::(resolve)'name_id' to value, set bindings from the context.
+    ABC_ACTION_INITPROPERTY         = 0x68,
+
+    ABC_ACTION_0x69                 = 0x69,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  obj -- The object whose property should be deleted.
+    ///  [ns [n]] -- Namespace stuff
+    /// Stack Out:
+    ///  truth -- True if property was deleted or did not exist, else False.
+    ABC_ACTION_DELETEPROPERTY       = 0x6A,
+
+    ABC_ACTION_0x6B                = 0x6B,
+
+    /// Stream: V32 'slot_index + 1'
+    /// Stack In:
+    ///  obj -- The object which owns the desired slot.
+    /// Stack Out:
+    ///  slot -- obj.slots[slot_index]
+    ABC_ACTION_GETSLOT              = 0x6C,
+
+    /// Stream: V32 'slot_index + 1'
+    /// Stack In:
+    ///  obj -- The object whose slot should be set.
+    ///  value -- The value intended for the slot.
+    /// Stack Out:
+    ///  .
+    /// Do: obj.slots[slot_index] = value
+    ABC_ACTION_SETSLOT              = 0x6D,
+
+    /// Stream: V32 'slot_index + 1'
+    /// Stack In:
+    ///  .
+    /// Stack Out:
+    ///  slot -- globals.slots[slot_index]
+    /// NB: Deprecated
+    ABC_ACTION_GETGLOBALSLOT        = 0x6E,
+
+    /// Stream: V32 'slot_index + 1'
+    /// Stack In:
+    ///  value -- The value to be placed into the slot.
+    /// Stack Out:
+    ///  .
+    /// Do: globals[slot_index] = value
+    /// NB: Deprecated
+    ABC_ACTION_SETGLOBALSLOT        = 0x6F,
+
+    /// Stack In:
+    ///  value -- An object
+    /// Stack Out:
+    ///  str_value -- value as a string
+    ABC_ACTION_CONVERT_S           = 0x70,
+
+    /// Stack In:
+    ///  value -- An object to be escaped
+    /// Stack Out:
+    ///  str_value -- value as a string, escaped suitably for an XML element.
+    ABC_ACTION_ESC_XELEM           = 0x71,
+
+    /// Stack In:
+    ///  value -- An object to be escaped
+    /// Stack Out:
+    ///  str_value -- value as a string, escaped suitably for an XML attribute.
+    ABC_ACTION_ESC_XATTR           = 0x72,
+
+    /// Stack In:
+    ///  value -- An object to be converted to Integer
+    /// Stack Out:
+    ///  int_value -- value as an integer object
+    ABC_ACTION_CONVERT_I           = 0x73,
+
+    /// Stack In:
+    ///  value -- An object to be converted to unsigned integer
+    /// Stack Out:
+    ///  int_value -- value as an unsigned integer object
+    ABC_ACTION_CONVERT_U           = 0X74,
+
+    /// Stack In:
+    ///  value -- An object to be converted to a double
+    /// Stack Out:
+    ///  double_value -- value as a double object
+    ABC_ACTION_CONVERT_D           = 0X75,
+
+    /// Stack In:
+    ///  value -- An object to be converted to a boolean
+    /// Stack Out:
+    ///  bool_value -- value as a boolean object
+    ABC_ACTION_CONVERT_B           = 0X76,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  obj -- An object
+    /// Do: If obj is Undefined or Null, throw TypeError
+    ABC_ACTION_CONVERT_O           = 0X77,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  obj -- An object
+    /// Do: If obj is not XML based, throw TypeError
+    ABC_ACTION_CHECKFILTER         = 0x78,
+
+    ABC_ACTION_0x79                = 0x79,
+    ABC_ACTION_0x7A                 = 0x7A,
+    ABC_ACTION_0x7B                 = 0x7B,
+    ABC_ACTION_0x7C                 = 0x7C,
+    ABC_ACTION_0x7D                 = 0x7D,
+    ABC_ACTION_0x7E                 = 0x7E,
+    ABC_ACTION_0x7F                 = 0x7F,
+
+    /// Stream: V32 'name_index'
+    /// Stack In:
+    ///  obj -- An object to be converted
+    /// Stack Out:
+    ///  coerced_obj -- The object as the desired (resolve)'name_index' type.
+    ABC_ACTION_COERCE              = 0x80,
+
+    /// See: 0x76 (ABC_ACTION_CONVERT_B)
+    /// NB: Deprecated
+    ABC_ACTION_COERCE_B             = 0x81,
+
+    /// Stack In:
+    ///  obj -- An object to be converted
+    /// Stack Out:
+    ///  obj
+    /// Do: Nothing. (The 'a' is for atom, and this already is.)
+    ABC_ACTION_COERCE_A            = 0x82,
+
+    /// See: 0x73 ABC_ACTION_CONVERT_I
+    /// NB: Deprecated
+    /// NOMING 20 Aug 2007
+    ABC_ACTION_COERCE_I            = 0x83,
+
+    /// See: 0x75 ABC_ACTION_CONVERT_D
+    /// NB: Deprecated
+    /// NOMING 20 Aug 2007
+    ABC_ACTION_COERCE_D            = 0x84,
+
+    /// Stack In:
+    ///  obj -- An object to be converted
+    /// Stack Out:
+    ///  str_obj -- obj as string. nullString object if obj is Null or 
Undefined
+    ABC_ACTION_COERCE_S            = 0x85,
+
+    /// Stream: V32 'name_index' (no namespace)
+    /// Stack In:
+    ///  obj -- An object to be checked
+    /// Stack Out:
+    ///  cobj -- obj if obj is of type (resolve)'name_index', otherwise Null
+    ABC_ACTION_ASTYPE              = 0x86,
+
+    /// Stack In:
+    ///  obj -- An object to be checked
+    ///  valid -- The object whose type is to be matched
+    /// Stack Out:
+    ///  cobj -- obj if type of obj is type of valid, otherwise Null
+    ABC_ACTION_ASTYPELATE          = 0x87,
+
+    /// See: 0x74 (ABC_ACTION_CONVERT_U)
+    /// NB: Deprecated
+    ABC_ACTION_COERCE_U             = 0x88,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  cobj -- obj if obj is not Undefined, otherwise Null
+    ABC_ACTION_COERCE_O             = 0x89,
+
+    ABC_ACTION_0x8A                 = 0x8A,
+    ABC_ACTION_0x8B                 = 0x8B,
+    ABC_ACTION_0x8C                 = 0x8C,
+    ABC_ACTION_0x8D                 = 0x8D,
+    ABC_ACTION_0x8E                 = 0x8E,
+    ABC_ACTION_0x8F                 = 0x8F,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  negdouble -- -1.0 * (double) obj
+    ABC_ACTION_NEGATE               = 0x90,
+
+    /// Stack In:
+    ///  num -- A number, integer or double
+    /// Stack Out:
+    ///  num2 -- The same value, but new object.
+    /// Do:
+    ///  num = num + 1 (post-increment)
+    ABC_ACTION_INCREMENT            = 0x91,
+
+    /// Stream: V32 'frame_addr'
+    /// Frame: Load i from frame_addr. Store clone(i) at frame_addr. i = i + 1
+    ///  (post-increment in frame)
+    ABC_ACTION_INCLOCAL             = 0x92,
+
+    /// Stack In:
+    ///  num -- A number, integer or double
+    /// Stack Out:
+    ///  num2 -- The same value, but new object.
+    /// Do:
+    ///  num = num - 1 (post-decrement)
+    ABC_ACTION_DECREMENT            = 0x93,
+
+    /// Stream: V32 'frame_addr'
+    /// Frame: Load i from frame_addr. Store clone(i) at frame_addr. i = i - 1
+    ///  (post-decrement in frame)
+    ABC_ACTION_DECLOCAL             = 0x94,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  type -- typeof(obj)
+    ABC_ACTION_ABC_TYPEOF               = 0x95,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  nobj -- A truth object with value !((Boolean) obj)
+    ABC_ACTION_NOT                  = 0x96,
+
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  nint -- ~((Int) obj)
+    ABC_ACTION_BITNOT              = 0x97,
+
+    ABC_ACTION_0x98                 = 0x98,
+    ABC_ACTION_0x99                 = 0x99,
+
+    /// NB: It is an error for this to appear.
+    ABC_ACTION_CONCAT               = 0x9A,
+
+    /// NB: It is an error for this to appear.
+    ABC_ACTION_ADD_D                = 0x9B,
+
+    ABC_ACTION_0x9C                 = 0x9C,
+    ABC_ACTION_0x9D                 = 0x9D,
+    ABC_ACTION_0x9E                 = 0x9E,
+    ABC_ACTION_0x9F                 = 0x9F,
+
+    /// Stack In:
+    /// a
+    /// b
+    /// Stack Out:
+    /// a + b (double if numeric)
+    ABC_ACTION_ADD                = 0xA0,
+
+    /// Stack In:    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a - b (double)
+    ABC_ACTION_SUBTRACT             = 0xA1,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a * b (double)
+    ABC_ACTION_MULTIPLY             = 0xA2,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a / b (double)
+    ABC_ACTION_DIVIDE               = 0xA3,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a % b
+    ABC_ACTION_MODULO               = 0xA4,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a << b
+    ABC_ACTION_LSHIFT               = 0xA5,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a >> b
+    ABC_ACTION_RSHIFT               = 0xA6,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  ((unsigned) a) >> b
+    ABC_ACTION_URSHIFT              = 0xA7,
+
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a & b
+    ABC_ACTION_BITAND              = 0xA8,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a | b
+    ABC_ACTION_BITOR               = 0xA9,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  a ^ b
+    ABC_ACTION_BITXOR              = 0xAA,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a == b) (weakly)
+    ABC_ACTION_EQUALS               = 0xAB,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a == b) (strongly, as in 
+    ///   0x19 (ABC_ACTION_IFSTRICTEQ))
+    ABC_ACTION_STRICTEQUALS         = 0xAC,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a < b)
+    ABC_ACTION_LESSTHAN             = 0xAD,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a <= b)
+    ABC_ACTION_LESSEQUALS           = 0xAE,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a > b)
+    ABC_ACTION_GREATERTHAN          = 0xAF,
+
+    /// Stack In:
+    ///  a
+    ///  b
+    /// Stack Out:
+    ///  truth -- Truth of (a >= b)
+    ABC_ACTION_GREATEREQUALS        = 0xB0,
+
+    /// Stack In:
+    ///  val -- An object
+    ///  super -- An object
+    /// Stack Out:
+    ///  truth -- Truth of "val is an instance of super"
+    ABC_ACTION_INSTANCEOF           = 0xB1,
+
+    /// Stream: V32 'name_id'
+    /// Stack In:
+    ///  obj -- An object
+    /// Stack Out:
+    ///  truth -- Truth of "obj is of the type given in (resolve)'name_id'"
+    ABC_ACTION_ISTYPE               = 0xB2,
+
+    /// Stack In:
+    ///  obj -- An object
+    ///  type -- A type to match
+    /// Stack Out:
+    ///  truth -- Truth of "obj is of type"
+    ABC_ACTION_ISTYPELATE           = 0xB3,
+
+    /// Stack In:
+    ///  name -- The name to find
+    ///  obj -- The object to search for it
+    /// Stack Out:
+    ///  truth -- True if name is in current namespace or anywhere in object.
+    ///   Don't look in the namespace if obj is a dictionary.
+    ABC_ACTION_IN                   = 0xB4,
+
+    ABC_ACTION_0xB5                 = 0xB5,
+    ABC_ACTION_0xB6                 = 0xB6,
+    ABC_ACTION_0xB7                 = 0xB7,
+    ABC_ACTION_0xB8                 = 0xB8,
+    ABC_ACTION_0xB9                 = 0xB9,
+    ABC_ACTION_0xBA                 = 0xBA,
+    ABC_ACTION_0xBB                 = 0xBB,
+    ABC_ACTION_0xBC                 = 0xBC,
+    ABC_ACTION_0xBD                 = 0xBD,
+    ABC_ACTION_0xBE                 = 0xBE,
+    ABC_ACTION_0xBF                 = 0xBF,
+
+    /// See: 0x91 (ABC_ACTION_INCREMENT), but forces types to int, not double
+    ABC_ACTION_INCREMENT_I          = 0xC0,
+
+    /// See: 0x93 (ABC_ACTION_DECREMENT), but forces types to int, not double
+    ABC_ACTION_DECREMENT_I          = 0xC1,
+
+    /// See: 0x92 (ABC_ACTION_INCLOCAL), but forces types to int, not double
+    ABC_ACTION_INCLOCAL_I           = 0xC2,
+
+    /// See: 0x94 (ABC_ACTION_DECLOCAL), but forces types to int, not double
+    ABC_ACTION_DECLOCAL_I           = 0xC3,
+
+    /// See: 0x90 (ABC_ACTION_NEGATE), but forces type to int, not double
+    ABC_ACTION_NEGATE_I             = 0xC4,
+
+    /// See: 0xA0 (ABC_ACTION_ADD), but forces type to int
+    ABC_ACTION_ADD_I                = 0xC5,
+
+    /// See: 0xA1 (ABC_ACTION_SUBTRACT), but forces type to int
+    ABC_ACTION_SUBTRACT_I           = 0xC6,
+
+    /// See: 0xA2 (ABC_ACTION_MULTIPLY), but forces type to int
+    ABC_ACTION_MULTIPLY_I           = 0xC7,
+
+    ABC_ACTION_0xC8                 = 0xC8,
+    ABC_ACTION_0xC9                 = 0xC9,
+    ABC_ACTION_0xCA                 = 0xCA,
+    ABC_ACTION_0xCB                 = 0xCB,
+    ABC_ACTION_0xCC                 = 0xCC,
+    ABC_ACTION_0xCD                 = 0xCD,
+    ABC_ACTION_0xCE                 = 0xCE,
+    ABC_ACTION_0xCF                 = 0xCF,
+
+    /// Frame: Load frame[0] as val
+    /// Stack Out:
+    ///  val
+    ABC_ACTION_GETLOCAL0            = 0xD0,
+
+    /// Frame: Load frame[1] as val
+    /// Stack Out:
+    ///  val
+    ABC_ACTION_GETLOCAL1            = 0xD1,
+
+    /// Frame: Load frame[2] as val
+    /// Stack Out:
+    ///  val
+    ABC_ACTION_GETLOCAL2            = 0xD2,
+
+    /// Frame: Load frame[3] as val
+    /// Stack Out:
+    ///  val
+    ABC_ACTION_GETLOCAL3            = 0xD3,
+
+    /// Frame: Store val as frame[0]
+    /// Stack In:
+    ///  val
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_SETLOCAL0            = 0xD4,
+
+    /// Frame: Store val as frame[1]
+    /// Stack In:
+    ///  val
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_SETLOCAL1            = 0xD5,
+
+    /// Frame: Store val as frame[2]
+    /// Stack In:
+    ///  val
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_SETLOCAL2            = 0xD6,
+
+    /// Frame: Store val as frame[3]
+    /// Stack In:
+    ///  val
+    /// Stack Out:
+    ///  .
+    ABC_ACTION_SETLOCAL3            = 0xD7,
+
+    ABC_ACTION_0xD8                 = 0xD8,
+    ABC_ACTION_0xD9                 = 0xD9,
+    ABC_ACTION_0xDA                 = 0xDA,
+    ABC_ACTION_0xDB                 = 0xDB,
+    ABC_ACTION_0xDC                 = 0xDC,
+    ABC_ACTION_0xDD                 = 0xDD,
+    ABC_ACTION_0xDE                 = 0xDE,
+    ABC_ACTION_0xDF                 = 0xDF,
+    ABC_ACTION_0xE0                 = 0xE0,
+    ABC_ACTION_0xE1                 = 0xE1,
+    ABC_ACTION_0xE2                 = 0xE2,
+    ABC_ACTION_0xE3                 = 0xE3,
+    ABC_ACTION_0xE4                 = 0xE4,
+    ABC_ACTION_0xE5                 = 0xE5,
+    ABC_ACTION_0xE6                 = 0xE6,
+    ABC_ACTION_0xE7                 = 0xE7,
+    ABC_ACTION_0xE8                 = 0xE8,
+    ABC_ACTION_0xE9                 = 0xE9,
+    ABC_ACTION_0xEA                 = 0xEA,
+    ABC_ACTION_0xEB                 = 0xEB,
+    ABC_ACTION_0xEC                 = 0xEC,
+    ABC_ACTION_0xED                 = 0xED,
+
+    /// NB: It is an error for this to appear.
+    ABC_ACTION_ABS_JUMP             = 0xEE,
+
+    /// Stream: 7 bytes of unknown stuff to be skipped
+    /// Do: skip ahead 7 bytes in stream
+    ABC_ACTION_DEBUG                = 0xEF,
+
+    /// Stream: V32 'line_number'
+    /// Do: Nothing, but line_number is for the debugger if wanted.
+    ABC_ACTION_DEBUGLINE            = 0xF0,
+
+    /// Stream: V32 'name_offset'
+    /// Do: Nothing. 'name_offset' into string pool is the file name if wanted.
+    ABC_ACTION_DEBUGFILE            = 0xF1,
+
+    /// Stream: V32 'line_number'
+    /// Do: Enter debugger if present, line_number is the line number in 
source.
+    ABC_ACTION_BKPTLINE             = 0xF2,
+
+    /// Do: Nothing.
+    ABC_ACTION_TIMESTAMP            = 0xF3,
+
+    ABC_ACTION_0xF4                 = 0xF4,
+
+    /// NB: It seems an error for this to appear.
+    ABC_ACTION_VERIFYPASS           = 0xF5,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_ALLOC                = 0xF6,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_MARK                 = 0xF7,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_WB                   = 0xF8,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_PROLOGUE             = 0xF9,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_SENDENTER            = 0xFA,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_DOUBLETOATOM         = 0xFB,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_SWEEP                = 0xFC,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_CODEGENOP            = 0xFD,
+
+    /// NB: Error to appear in ABC
+    ABC_ACTION_VERIFYOP             = 0xFE
+
+} abc_action_type;
+
+
 /// SWF fill style types. Symbolic names copied from Ming.
 //
 /// For more info see:




reply via email to

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