annotate runtime/rhopefuncs_prolog.c @ 186:ba35ab624ec2

Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
author Mike Pavone <pavone@retrodev.com>
date Fri, 07 Oct 2011 00:10:02 -0700
parents e57c151f351e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
186
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
1 #ifdef RAW_FUNC
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
2 FuncDef(Build)
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
3 FuncDef(BlueprintSP_Of)
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
4 FuncDef(ID)
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
5 FuncDef(BlueprintSP_FromSP_ID)
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
6
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
7 object * tmp;
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
8 #else
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
9
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 #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
11 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
12 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
13 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
14 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
15 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
16 #endif
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 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
19 {
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 #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
21 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
22 #endif
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 uint16_t resume,idx, vcparam_offset, last_vcparam;
176
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
24 uint32_t *bytecode, *cur_instruction, op1, op2, accum;
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
25 object ** interp_consts;
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
26 void * interp_dispatch[] = {
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
27 &&interp_call,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
28 &&interp_param,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
29 &&interp_load,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
30 &&interp_and,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
31 &&interp_or,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
32 &&interp_not,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
33 &&interp_branch,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
34 &&interp_saveresult,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
35 &&interp_addref,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
36 &&interp_release,
177
e57c151f351e Get bytecode engine working well enough for naive fib
Mike Pavone <pavone@retrodev.com>
parents: 176
diff changeset
37 &&interp_move,
176
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
38 &&interp_return,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
39 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
40 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
41 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
42 &&interp_nop,
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
43 &&interp_nop
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
44 };
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
45
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 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
47 void *tmp;
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 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
49 DispatchVar
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 FuncDef(Build)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51 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
52 FuncDef(ID)
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 FuncDef(BlueprintSP_FromSP_ID)
176
327bcf35e094 Add bytecode interpreter
Mike Pavone <pavone@retrodev.com>
parents: 162
diff changeset
54 void ** lv_RunSP_Bytecode;
186
ba35ab624ec2 Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
Mike Pavone <pavone@retrodev.com>
parents: 177
diff changeset
55 #endif //RAW_FUNC
162
bac2c74801f0 Move some C code out of cbackend_c.rhope into separate include files
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
56