annotate runtime/rhopefuncs_prolog.c @ 176:327bcf35e094

Add bytecode interpreter
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 Jun 2011 23:24:29 -0700
parents bac2c74801f0
children e57c151f351e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifdef ENABLE_PROFILING
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 uint64_t profile_counts[END];
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 uint64_t profile_nestedcounts[END];
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 uint64_t profile_totals[END];
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 uint64_t profile_selftotals[END];
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 uint64_t profile_activationlevel[END];
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 #endif
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 int32_t rhope(uint32_t func, object ** params, uint16_t numparams, uint16_t callspace)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 {
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 #ifdef ENABLE_PROFILING
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 struct timeval proftime;
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 #endif
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 uint16_t resume,idx, vcparam_offset, last_vcparam;
176
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
15 uint32_t *bytecode, *cur_instruction, op1, op2, accum;
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
16 object ** interp_consts;
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
17 void * interp_dispatch[] = {
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
18 &&interp_call,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
19 &&interp_param,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
20 &&interp_load,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
21 &&interp_and,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
22 &&interp_or,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
23 &&interp_not,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
24 &&interp_branch,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
25 &&interp_saveresult,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
26 &&interp_addref,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
27 &&interp_release,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
28 &&interp_return,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
29 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
30 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
31 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
32 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
33 &&interp_nop
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
34 };
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
35
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 context *ct,*temp_ct;
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 void *tmp;
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 calldata * cdata, *temp_cdata, *my_cdata;
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 DispatchVar
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40 FuncDef(Build)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 FuncDef(BlueprintSP_Of)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42 FuncDef(ID)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 FuncDef(BlueprintSP_FromSP_ID)
176
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
44 void ** lv_RunSP_Bytecode;
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45