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_