annotate runtime/context.h @ 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 f2cb85c53ced
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef _CONTEXT_H_
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define _CONTEXT_H_
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include "thread.h"
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 #include "plat_types.h"
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 #include "func.h"
139
a68e6828d896 Global stores and transactions are working. Definately leaks memory on retries. Probably a fair number of bugs to work out. However, a basic test program works.
Mike Pavone <pavone@retrodev.com>
parents: 67
diff changeset
7 #include "transaction.h"
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 66
diff changeset
9 #define STACK_CHUNK_SIZE 4096-(sizeof(struct stackchunk *)*2+sizeof(char *))
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10
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: 141
diff changeset
11 #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: 141
diff changeset
12 //hack
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: 141
diff changeset
13 typedef int context;
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: 141
diff changeset
14 #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: 141
diff changeset
15
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 typedef struct stackchunk {
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 struct stackchunk * next;
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 struct stackchunk * prev;
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 66
diff changeset
19 char *free_space;
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 char data[STACK_CHUNK_SIZE];
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 } stackchunk;
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 typedef struct context {
140
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
24 stackchunk *stack_begin;
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
25 stackchunk *current_stack;
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
26 transaction *transaction;
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
27 struct context *runafter;
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
28 calldata *resume_cdata;
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
29 int32_t resumeable;
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 } context;
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: 141
diff changeset
31 #endif
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32
140
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
33 Box(context *,ct,Context);
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: 141
diff changeset
34 #ifndef RAW_FUNC
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 stackchunk * new_stack();
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 context * new_context();
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 void * alloc_stack(context * ct, uint32_t size);
66
d4b44ae2e34a New variant of C backend works now
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
38 calldata * alloc_cdata(context * ct, calldata * lastframe, uint32_t num_params);
d4b44ae2e34a New variant of C backend works now
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
39 void free_stack(context * ct, void * data);
52
079200bc3e75 String literals almost working. Print moved out of C runtime.
Mike Pavone <pavone@retrodev.com>
parents: 8
diff changeset
40 void free_context(context * c);
140
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
41 void cqueue_init();
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
42 context * get_cqueue();
c14698c512f1 Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents: 139
diff changeset
43 int32_t put_cqueue(context * ct);
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: 141
diff changeset
44 #endif
141
f2cb85c53ced Fix Pause/Resume and rewrite Call Async in Rhope rather than C
Mike Pavone <pavone@retrodev.com>
parents: 140
diff changeset
45 object * make_Context(context * ct);
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 #endif //_CONTEXT_H_