mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-16 17:27:33 +02:00
Refactoring
This commit is contained in:
parent
dc33c2fd7e
commit
884f26c72d
1 changed files with 30 additions and 30 deletions
|
@ -60,9 +60,37 @@
|
||||||
// General constants
|
// General constants
|
||||||
#define NANOSECONDS_PER_MILLISECOND 1000000
|
#define NANOSECONDS_PER_MILLISECOND 1000000
|
||||||
|
|
||||||
/* Define general object type. */
|
// Generic object type
|
||||||
typedef void *object;
|
typedef void *object;
|
||||||
|
|
||||||
|
// Define a tag for each possible type of object.
|
||||||
|
// Remember to update tag_names in runtime.c when adding new tags
|
||||||
|
enum object_tag
|
||||||
|
{ cons_tag = 0
|
||||||
|
, symbol_tag // 1
|
||||||
|
, forward_tag // 2
|
||||||
|
, closure0_tag // 3
|
||||||
|
, closure1_tag // 4
|
||||||
|
, closureN_tag // 5
|
||||||
|
, integer_tag // 6
|
||||||
|
, double_tag // 7
|
||||||
|
, string_tag // 8
|
||||||
|
, primitive_tag // 9
|
||||||
|
, eof_tag // 10
|
||||||
|
, port_tag // 11
|
||||||
|
, boolean_tag // 12
|
||||||
|
, cvar_tag // 13
|
||||||
|
, vector_tag // 14
|
||||||
|
, macro_tag // 15
|
||||||
|
, mutex_tag // 16
|
||||||
|
, cond_var_tag // 17
|
||||||
|
, bytevector_tag // 18
|
||||||
|
, c_opaque_tag // 19
|
||||||
|
};
|
||||||
|
|
||||||
|
// Define the size of object tags
|
||||||
|
typedef long tag_type;
|
||||||
|
|
||||||
/* Threading */
|
/* Threading */
|
||||||
typedef enum { CYC_THREAD_STATE_NEW
|
typedef enum { CYC_THREAD_STATE_NEW
|
||||||
, CYC_THREAD_STATE_RUNNABLE
|
, CYC_THREAD_STATE_RUNNABLE
|
||||||
|
@ -166,41 +194,13 @@ typedef enum { STAGE_CLEAR_OR_MARKING
|
||||||
#define gc_color_red 0 // Memory not to be GC'd, such as on the stack
|
#define gc_color_red 0 // Memory not to be GC'd, such as on the stack
|
||||||
#define gc_color_blue 2 // Unallocated memory
|
#define gc_color_blue 2 // Unallocated memory
|
||||||
|
|
||||||
/* Define size of object tags */
|
// Determine if stack has overflowed
|
||||||
typedef long tag_type;
|
|
||||||
|
|
||||||
/* Determine if stack has overflowed */
|
|
||||||
#if STACK_GROWTH_IS_DOWNWARD
|
#if STACK_GROWTH_IS_DOWNWARD
|
||||||
#define stack_overflow(x,y) ((x) < (y))
|
#define stack_overflow(x,y) ((x) < (y))
|
||||||
#else
|
#else
|
||||||
#define stack_overflow(x,y) ((x) > (y))
|
#define stack_overflow(x,y) ((x) > (y))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Types of objects
|
|
||||||
// Remember to update tag_names in runtime.c when adding new tags
|
|
||||||
enum object_type
|
|
||||||
{ cons_tag = 0
|
|
||||||
, symbol_tag // 1
|
|
||||||
, forward_tag // 2
|
|
||||||
, closure0_tag // 3
|
|
||||||
, closure1_tag // 4
|
|
||||||
, closureN_tag // 5
|
|
||||||
, integer_tag // 6
|
|
||||||
, double_tag // 7
|
|
||||||
, string_tag // 8
|
|
||||||
, primitive_tag // 9
|
|
||||||
, eof_tag // 10
|
|
||||||
, port_tag // 11
|
|
||||||
, boolean_tag // 12
|
|
||||||
, cvar_tag // 13
|
|
||||||
, vector_tag // 14
|
|
||||||
, macro_tag // 15
|
|
||||||
, mutex_tag // 16
|
|
||||||
, cond_var_tag // 17
|
|
||||||
, bytevector_tag // 18
|
|
||||||
, c_opaque_tag // 19
|
|
||||||
};
|
|
||||||
|
|
||||||
#define eq(x,y) (x == y)
|
#define eq(x,y) (x == y)
|
||||||
#define type_of(x) (((list) x)->tag)
|
#define type_of(x) (((list) x)->tag)
|
||||||
#define forward(x) (((list) x)->cons_car)
|
#define forward(x) (((list) x)->cons_car)
|
||||||
|
|
Loading…
Add table
Reference in a new issue