Mercurial > repos > rhope
comparison runtime/object.h @ 12:31f8182f3433
Finished fib test and did some small work on the c backend
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 25 May 2009 23:34:36 -0400 |
parents | 0f2c4ee070fe |
children | 914ad38f9b59 |
comparison
equal
deleted
inserted
replaced
11:3021dac0d8f5 | 12:31f8182f3433 |
---|---|
1 #ifndef _OBJECT_H_ | 1 #ifndef OBJECT_H_ |
2 #define _OBJECT_H_ | 2 #define OBJECT_H_ |
3 | 3 |
4 #include "plat_types.h" | 4 #include "plat_types.h" |
5 #include "thread.h" | 5 #include "thread.h" |
6 #include "func.h" | 6 #include "func.h" |
7 | 7 |
39 uint32_t size; | 39 uint32_t size; |
40 } multisize; | 40 } multisize; |
41 | 41 |
42 | 42 |
43 typedef struct calldata { | 43 typedef struct calldata { |
44 rhope_func tail_func; | 44 rhope_func tail_func; |
45 struct context *ct; | 45 struct context *ct; |
46 void *locals; | 46 void *locals; |
47 uint32_t original_methodid; | 47 struct calldata *call; |
48 uint16_t num_params; | 48 uint32_t original_methodid; |
49 uint16_t resume; | 49 uint16_t num_params; |
50 object *params[1]; | 50 uint16_t resume; |
51 object *params[1]; | |
51 } calldata; | 52 } calldata; |
52 | 53 |
53 #define OBegin typedef struct { object header; | 54 #define OBegin typedef struct { object header; |
54 #define Object(name) } _t_ ## name; | 55 #define Object(name) } t_ ## name; |
55 | 56 |
56 #define MOBegin typedef struct { multisize header; | 57 #define MOBegin typedef struct { multisize header; |
57 | 58 |
58 #define get_blueprint(object) (object)->bprint | 59 #define get_blueprint(object) (object)->bprint |
59 | 60 |
60 #define add_ref(object) rh_atomic_add(&(object->header), refcount, 1) | 61 #define add_ref(object) (rh_atomic_add((object), refcount, 1),object) |
61 | 62 |
62 returntype call_method(uint32_t methodid, calldata * params); | 63 returntype call_method(uint32_t methodid, calldata * params); |
63 returntype set_field(uint32_t setfieldid, calldata * params); | 64 returntype set_field(uint32_t setfieldid, calldata * params); |
64 returntype get_field(uint32_t getfieldid, calldata * params); | 65 returntype get_field(uint32_t getfieldid, calldata * params); |
65 object * alloc_object(blueprint * bp); | 66 object * alloc_object(blueprint * bp); |
77 | 78 |
78 #define INITIAL_TYPE_STORAGE 32 | 79 #define INITIAL_TYPE_STORAGE 32 |
79 #define INITIAL_METHOD_LOOKUP 8 | 80 #define INITIAL_METHOD_LOOKUP 8 |
80 #define BELOW_INITIAL_METHOD 3 | 81 #define BELOW_INITIAL_METHOD 3 |
81 | 82 |
82 #endif //_OBJECT_H_ | 83 #endif //OBJECT_H_ |