logo
const class

compiler::FOp

sys::Obj
  sys::Enum
    compiler::FOp
  1  //
  2  // Copyright (c) 2006, Brian Frank and Andy Frank
  3  // Licensed under the Academic Free License version 3.0
  4  //
  5  // History:
  6  //   11 Sep 07  Auto-generated by /adm/genfcode.rb
  7  //
  8  
  9  **
 10  ** FOp provides all the fcode constants
 11  **
 12  enum FOp
 13  {
 14    Nop                (),                  //   0  no operation
 15    LoadNull           (),                  //   1  load null literal onto stack
 16    LoadFalse          (),                  //   2  load false literal onto stack
 17    LoadTrue           (),                  //   3  load true literal onto stack
 18    LoadInt            (FOpArg.Int),        //   4  load Int const by index onto stack
 19    LoadFloat          (FOpArg.Float),      //   5  load Float const by index onto stack
 20    LoadStr            (FOpArg.Str),        //   6  load Str const by index onto stack
 21    LoadDuration       (FOpArg.Duration),   //   7  load Duration const by index onto stack
 22    LoadType           (FOpArg.TypeRef),    //   8  load Type instance by index onto stack
 23    LoadUri            (FOpArg.Uri),        //   9  load Uri const by index onto stack
 24    LoadVar            (FOpArg.Register),   //  10  local var register index (0 is this)
 25    StoreVar           (FOpArg.Register),   //  11  local var register index (0 is this)
 26    LoadInstance       (FOpArg.FieldRef),   //  12  load field from storage
 27    StoreInstance      (FOpArg.FieldRef),   //  13  store field to storage
 28    LoadStatic         (FOpArg.FieldRef),   //  14  load static field from storage
 29    StoreStatic        (FOpArg.FieldRef),   //  15  store static field to storage
 30    Unused1            (),                  //  16  unsed opcode
 31    Unused2            (),                  //  17  unsed opcode
 32    LoadMixinStatic    (FOpArg.FieldRef),   //  18  load static on mixin field from storage
 33    StoreMixinStatic   (FOpArg.FieldRef),   //  19  store static on mixin field to storage
 34    CallNew            (FOpArg.MethodRef),  //  20  alloc new object and call constructor
 35    CallCtor           (FOpArg.MethodRef),  //  21  call constructor (used for constructor chaining)
 36    CallStatic         (FOpArg.MethodRef),  //  22  call static method
 37    CallVirtual        (FOpArg.MethodRef),  //  23  call virtual instance method
 38    CallNonVirtual     (FOpArg.MethodRef),  //  24  call instance method non-virtually (private or super only b/c of Java invokespecial)
 39    CallMixinStatic    (FOpArg.MethodRef),  //  25  call static mixin method
 40    CallMixinVirtual   (FOpArg.MethodRef),  //  26  call virtual mixin method
 41    CallMixinNonVirtual (FOpArg.MethodRef),  //  27  call instance mixin method non-virtually (named super)
 42    Jump               (FOpArg.Jump),       //  28  unconditional jump
 43    JumpTrue           (FOpArg.Jump),       //  29  jump if bool true
 44    JumpFalse          (FOpArg.Jump),       //  30  jump if bool false
 45    CmpEQ              (),                  //  31  a.equals(b)
 46    CmpNE              (),                  //  32  !a.equals(b)
 47    Cmp                (),                  //  33  a.compare(b)
 48    CmpLE              (),                  //  34  a.compare(b) <= 0
 49    CmpLT              (),                  //  35  a.compare(b) < 0
 50    CmpGT              (),                  //  36  a.compare(b) > 0
 51    CmpGE              (),                  //  37  a.compare(b) >= 0
 52    CmpSame            (),                  //  38  a === b
 53    CmpNotSame         (),                  //  39  a !== b
 54    CmpNull            (),                  //  40  a == null
 55    CmpNotNull         (),                  //  41  a != null
 56    ReturnVoid         (),                  //  42  return nothing
 57    ReturnObj          (),                  //  43  return object
 58    Pop                (),                  //  44  pop top object off stack
 59    Dup                (),                  //  45  duplicate object ref on top of stack
 60    DupDown            (),                  //  46  TODO - remove when we axe Java compiler
 61    Is                 (FOpArg.TypeRef),    //  47  is operator
 62    As                 (FOpArg.TypeRef),    //  48  as operator
 63    Cast               (FOpArg.TypeRef),    //  49  type cast
 64    Switch             (),                  //  50  switch jump table 2 count + 2*count
 65    Throw              (),                  //  51  throw Err on top of stack
 66    Leave              (FOpArg.Jump),       //  52  jump out of a try or catch block
 67    JumpFinally        (FOpArg.Jump),       //  53  jump to a finally block
 68    CatchAllStart      (),                  //  54  start catch all block - do not leave Err on stack
 69    CatchErrStart      (FOpArg.TypeRef),    //  55  start catch block - leave typed Err on stack
 70    CatchEnd           (),                  //  56  start catch block - leave typed Err on stack
 71    FinallyStart       (),                  //  57  starting instruction of a finally block
 72    FinallyEnd         ()                   //  58  ending instruction of a finally block
 73  
 74    private new make(FOpArg arg := FOpArg.None) { this.arg = arg }
 75  
 76    const FOpArg arg
 77  }
 78  
 79  **************************************************************************
 80  ** FOpArg
 81  **************************************************************************
 82  
 83  enum FOpArg
 84  {
 85    None,
 86    Int,
 87    Float,
 88    Str,
 89    Duration,
 90    Uri,
 91    Register,
 92    TypeRef,
 93    FieldRef,
 94    MethodRef,
 95    Jump
 96  }