2004/01/13 03:59:35
[org.ibex.core.git] / src / org / xwt / js / ByteCodes.java
index a5955a5..7ba54b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL]
+// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
 package org.xwt.js;
 
 /**
@@ -51,19 +51,19 @@ interface ByteCodes {
     /** discard the top stack element */
     static public final byte POP = -14;          
 
-    /** pop two elements; call stack[-n](stack[-n+1], stack[-n+2]...) where n is the number of args to the function */
+    /** pop element; call stack[top](stack[-n], stack[-n+1]...) where n is the number of args to the function */
     public static final byte CALL = -15;         
 
     /** pop an element; push a JS.JSArray containing the keys of the popped element */
     public static final byte PUSHKEYS = -16;     
 
-    /** swap the top two elements on the stack */
+    /** push the top element down so that (arg) elements are on top of it; all other elements retain ordering */
     public static final byte SWAP = -17;         
 
-    /** execute the ForthBlock pointed to by the literal in a fresh scope with parentJSScope==THIS */
+    /** execute the bytecode block pointed to by the literal in a fresh scope with parentScope==THIS */
     public static final byte NEWSCOPE = -18;        
 
-    /** execute the ForthBlock pointed to by the literal in a fresh scope with parentJSScope==THIS */
+    /** execute the bytecode block pointed to by the literal in a fresh scope with parentScope==THIS */
     public static final byte OLDSCOPE = -19;
 
     /** push a copy of the top stack element */
@@ -76,17 +76,19 @@ interface ByteCodes {
      *  and FALSE for all subsequent iterations */
     public static final byte LOOP = -22;        
      
-    /** pop three elements off the stack; method arguments, method name, and an object to call the method on, then calls the method 
-        Has a similar effect a a GET followed by a CALL */
+    /** similar effect a a GET followed by a CALL */
     public static final byte CALLMETHOD = -23;
 
     /** finish a finally block and carry out whatever instruction initiated the finally block */
     public static final byte FINALLY_DONE = -24;
     
+    /** finish a finally block and carry out whatever instruction initiated the finally block */
+    public static final byte MAKE_GRAMMAR = -25;
+    
     public static final String[] bytecodeToString = new String[] {
         "", "", "LITERAL", "ARRAY", "OBJECT", "NEWFUNCTION", "DECLARE", "TOPSCOPE",
         "GET", "GET_PRESERVE", "PUT", "JT", "JF", "JMP", "POP", "CALL", "PUSHKEYS",
         "SWAP", "NEWSCOPE", "OLDSCOPE", "DUP", "LABEL", "LOOP", "CALLMETHOD",
-        "FINALLY_DONE"
+        "FINALLY_DONE", "MAKE_GRAMMAR"
     };
 }