Usermode/libspiderscript - Fixing a multitude of bugs
[tpg/acess2.git] / Usermode / Libraries / libspiderscript.so_src / bytecode_gen.h
index 9ec6eb5..b82b3b4 100644 (file)
@@ -46,6 +46,7 @@ extern void   Bytecode_SetLabel(tBC_Function *Handle, int Label);
 // - Flow Control
 extern void    Bytecode_AppendJump(tBC_Function *Handle, int Label);
 extern void    Bytecode_AppendCondJump(tBC_Function *Handle, int Label);
+extern void     Bytecode_AppendCondJumpNot(tBC_Function *Handle, int Label);
 extern void    Bytecode_AppendReturn(tBC_Function *Handle);
 // - Operation Stack
 //  > Load/Store
@@ -55,9 +56,10 @@ extern void  Bytecode_AppendConstInt(tBC_Function *Handle, uint64_t Value);
 extern void    Bytecode_AppendConstReal(tBC_Function *Handle, double Value);
 extern void    Bytecode_AppendConstString(tBC_Function *Handle, const void *Data, size_t Length);
 //  > Scoping
-extern void    Bytecode_AppendSubNamespace(tBC_Function *Handle, const char *Name);    // Pop NS from stack, go to child, push ("" = root)
 extern void    Bytecode_AppendElement(tBC_Function *Handle, const char *Name); // Obj->SubObj
+extern void    Bytecode_AppendSetElement(tBC_Function *Handle, const char *Name);      // Set an object member
 extern void    Bytecode_AppendIndex(tBC_Function *Handle);     // Index into an array
+extern void    Bytecode_AppendSetIndex(tBC_Function *Handle);  // Write an array element
 //  > Function Calls
 extern void    Bytecode_AppendCreateObj(tBC_Function *Handle, const char *Name, int ArgumentCount);
 extern void    Bytecode_AppendMethodCall(tBC_Function *Handle, const char *Name, int ArgumentCount);
@@ -66,6 +68,8 @@ extern void   Bytecode_AppendFunctionCall(tBC_Function *Handle, const char *Name,
 extern void    Bytecode_AppendBinOp(tBC_Function *Handle, int Operation);
 extern void    Bytecode_AppendUniOp(tBC_Function *Handle, int Operation);
 extern void    Bytecode_AppendCast(tBC_Function *Handlde, int Type);
+extern void    Bytecode_AppendDuplicate(tBC_Function *Handlde);
+extern void    Bytecode_AppendDelete(tBC_Function *Handle);
 // - Context
 //   TODO: Are contexts needed? Should variables be allocated like labels?
 extern void    Bytecode_AppendEnterContext(tBC_Function *Handle);

UCC git Repository :: git.ucc.asn.au