removal of old code
This commit is contained in:
@@ -361,70 +361,21 @@ typedef struct BuddyAllocator {
|
||||
/* Forward declarations for buddy allocator functions */
|
||||
static void buddy_destroy (BuddyAllocator *b);
|
||||
|
||||
/* controls a host of contexts, handing out memory and scheduling */
|
||||
struct JSRuntime {
|
||||
const char *rt_info;
|
||||
|
||||
size_t malloc_limit;
|
||||
|
||||
/* Buddy allocator for actor memory blocks */
|
||||
BuddyAllocator buddy;
|
||||
|
||||
/* see JS_SetStripInfo() */
|
||||
uint8_t strip_flags;
|
||||
|
||||
/* User data */
|
||||
void *user_opaque;
|
||||
};
|
||||
|
||||
struct JSClass {
|
||||
const char *class_name;
|
||||
JSClassFinalizer *finalizer;
|
||||
JSClassGCMark *gc_mark;
|
||||
uint32_t class_id; /* 0 means free entry */
|
||||
};
|
||||
|
||||
#define JS_MODE_BACKTRACE_BARRIER \
|
||||
(1 << 3) /* stop backtrace before this frame */
|
||||
|
||||
typedef struct JSStackFrame {
|
||||
struct JSStackFrame *prev_frame; /* NULL if first stack frame */
|
||||
JSValue cur_func; /* current function, JS_NULL if the frame is detached */
|
||||
JSValue *arg_buf; /* arguments */
|
||||
JSValue *var_buf; /* variables */
|
||||
const uint8_t *cur_pc; /* only used in bytecode functions : PC of the
|
||||
instruction after the call */
|
||||
int arg_count;
|
||||
int js_mode; /* not supported for C functions */
|
||||
JSValue js_frame; /* GC-managed JSFrame (use JS_VALUE_GET_FRAME to access) */
|
||||
JSValue *stack_buf; /* operand stack base (for GC scanning) */
|
||||
JSValue **p_sp; /* pointer to current sp (for GC scanning) */
|
||||
} JSStackFrame;
|
||||
|
||||
/* Heap-allocated VM frame for trampoline execution */
|
||||
struct VMFrame {
|
||||
struct JSFunctionBytecode *b; /* current function bytecode */
|
||||
JSContext *ctx; /* execution context / realm */
|
||||
const uint8_t *pc; /* program counter */
|
||||
|
||||
/* Offset-based storage (safe with realloc) */
|
||||
int value_stack_base; /* base index into ctx->value_stack */
|
||||
int sp_offset; /* sp offset from base */
|
||||
int arg_buf_offset; /* arg buffer offset from base (or -1 if aliased) */
|
||||
int var_buf_offset; /* var buffer offset from base */
|
||||
|
||||
/* Continuation info for return */
|
||||
const uint8_t *ret_pc; /* where to resume in caller */
|
||||
int ret_sp_offset; /* caller's sp before call (for cleanup) */
|
||||
int call_argc; /* number of args to clean up */
|
||||
int call_has_this; /* whether call had this (method call) */
|
||||
|
||||
JSValue cur_func; /* current function object */
|
||||
JSValue this_obj; /* this binding */
|
||||
int arg_count;
|
||||
int js_mode;
|
||||
int stack_size_allocated; /* total size allocated for this frame */
|
||||
};
|
||||
|
||||
typedef struct JSFrameRegister {
|
||||
objhdr_t hdr; // capacity in this is the total number of words of the object, including the 4 words of overhead and all slots
|
||||
JSValue function; // JSFunction, function object being invoked
|
||||
@@ -675,7 +626,7 @@ typedef struct JSFrame {
|
||||
JSValue function; /* JSValue for GC safety (use JS_VALUE_GET_FUNCTION) */
|
||||
JSValue caller; /* JSValue for GC safety (unused currently) */
|
||||
uint32_t return_pc;
|
||||
JSValue slots[]; /* args, captured, locals, temps */
|
||||
JSValue slots[]; /* [this][args][captured][locals][temps] */
|
||||
} JSFrame;
|
||||
|
||||
/* Execution state returned by vm_execute_frame */
|
||||
@@ -957,31 +908,19 @@ struct JSContext {
|
||||
int trace_type;
|
||||
void *trace_data;
|
||||
|
||||
/* Trampoline VM stacks (per actor/context) */
|
||||
struct VMFrame *frame_stack; /* array of frames */
|
||||
int frame_stack_top; /* current frame index (-1 = empty) */
|
||||
int frame_stack_capacity; /* allocated capacity */
|
||||
JSValue *value_stack; /* array of JSValues for locals/operands */
|
||||
int value_stack_top; /* current top index */
|
||||
int value_stack_capacity; /* allocated capacity */
|
||||
|
||||
/* Register VM frame root (updated by GC when frame moves) */
|
||||
JSValue reg_current_frame; /* current JSFrameRegister being executed */
|
||||
uint32_t current_register_pc; /* PC at exception time */
|
||||
|
||||
/* Execution state (moved from JSRuntime — per-actor) */
|
||||
JSValue current_exception;
|
||||
struct JSStackFrame *current_stack_frame;
|
||||
BOOL current_exception_is_uncatchable : 8;
|
||||
BOOL in_out_of_memory : 8;
|
||||
|
||||
JSInterruptHandler *interrupt_handler;
|
||||
void *interrupt_opaque;
|
||||
|
||||
JSValue current_exception;
|
||||
|
||||
/* Stack overflow protection */
|
||||
size_t stack_size;
|
||||
const uint8_t *stack_top;
|
||||
const uint8_t *stack_limit;
|
||||
// todo: want this, but should be a simple increment/decrement counter while frames are pushed
|
||||
size_t stack_depth;
|
||||
size_t stack_limit;
|
||||
|
||||
/* Parser state (for GC to scan cpool during parsing) */
|
||||
struct JSFunctionDef *current_parse_fd;
|
||||
@@ -1399,8 +1338,6 @@ static JSValue js_cell_text (JSContext *ctx, JSValue this_val, int argc, JSValue
|
||||
static JSValue js_cell_push (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_pop (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_array_find (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_eval (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_mach_eval (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_stone (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_length (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
static JSValue js_cell_reverse (JSContext *ctx, JSValue this_val, int argc, JSValue *argv);
|
||||
|
||||
Reference in New Issue
Block a user