Mercurial > repos > rhope
annotate runtime/context.h @ 167:690ed78ead8a
Some type inference fixes and make method calls into regular calls when first arg type is known at compile time
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 04 Apr 2011 01:41:19 -0400 |
parents | f2cb85c53ced |
children | ba35ab624ec2 |
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 | 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 |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 typedef struct stackchunk { |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 struct stackchunk * next; |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 struct stackchunk * prev; |
67 | 14 char *free_space; |
8
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 char data[STACK_CHUNK_SIZE]; |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 } stackchunk; |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 typedef struct context { |
140
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
19 stackchunk *stack_begin; |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
20 stackchunk *current_stack; |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
21 transaction *transaction; |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
22 struct context *runafter; |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
23 calldata *resume_cdata; |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
24 int32_t resumeable; |
8
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 } context; |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 |
140
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
27 Box(context *,ct,Context); |
8
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 stackchunk * new_stack(); |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 context * new_context(); |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 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
|
31 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
|
32 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
|
33 void free_context(context * c); |
140
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
34 void cqueue_init(); |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
35 context * get_cqueue(); |
c14698c512f1
Untested addition of Pause/Resume
Mike Pavone <pavone@retrodev.com>
parents:
139
diff
changeset
|
36 int32_t put_cqueue(context * ct); |
141
f2cb85c53ced
Fix Pause/Resume and rewrite Call Async in Rhope rather than C
Mike Pavone <pavone@retrodev.com>
parents:
140
diff
changeset
|
37 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
|
38 #endif //_CONTEXT_H_ |