#define RESERVED_OFS 28
-enum opcode_e
+typedef enum opcode_e
{
OP_DONE,
OP_MUL_F,
OP_BITAND,
OP_BITOR
-};
+}
+opcode_t;
typedef struct statement_s
int parm_start;
int locals; // total ints of parms + locals
- int profile; // runtime
- int builtinsprofile; // cost of builtin functions called by this function
- int callcount; // times the functions has been called since the last profile call
+ // these are doubles so that they can count up to 54bits or so rather than 32bit
+ double tprofile; // realtime in this function
+ double tbprofile; // realtime in builtins called by this function (NOTE: builtins also have a tprofile!)
+ double profile; // runtime
+ double builtinsprofile; // cost of builtin functions called by this function
+ double callcount; // times the functions has been called since the last profile call
+ double totaltime; // total execution time of this function DIRECTLY FROM THE ENGINE
+ double tprofile_total; // runtime (NOTE: tbprofile_total makes no real sense, so not accumulating that)
+ double profile_total; // runtime
+ double builtinsprofile_total; // cost of builtin functions called by this function
+ int recursion;
int s_name;
int s_file; // source file defined in
}
mfunction_t;
+typedef struct mstatement_s
+{
+ opcode_t op;
+ int operand[3]; // always a global or -1 for unused
+ int jumpabsolute; // only used by IF, IFNOT, GOTO
+}
+mstatement_t;
+
#define PROG_VERSION 6
typedef struct dprograms_s