lang: Always place VmState first in function calls
This commit is contained in:
parent
a293d5414a
commit
65eb0a213e
8 changed files with 13 additions and 13 deletions
|
@ -46,7 +46,7 @@ void bytecode_run(VmState state) {
|
|||
int arg_count = *pos_code++;
|
||||
const char *dispatch = (const char *)pos_code;
|
||||
Object obj = vm_stack_pop(state);
|
||||
vm_call(obj, dispatch, arg_count, state);
|
||||
vm_call(state, obj, dispatch, arg_count);
|
||||
object_drop(&obj);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ static void func_cleanup(Object obj) {
|
|||
free(func);
|
||||
}
|
||||
|
||||
static void func_call(Object obj, VmState state) {
|
||||
static void func_call(VmState state, Object obj) {
|
||||
(void)obj;
|
||||
int arg_count = vm_stack_depth(state);
|
||||
abort_if(arg_count != 1, "func_add called with more than 1 argument");
|
||||
|
|
|
@ -13,7 +13,7 @@ static void test_number(VmState state) {
|
|||
vm_stack_push(state, NULL);
|
||||
vm_stack_push(state, numB);
|
||||
numB = NULL;
|
||||
vm_call(numA, "Add", 2, state);
|
||||
vm_call(state, numA, "Add", 2);
|
||||
Object numC = vm_stack_pop(state);
|
||||
printf("numC value is %i\n", number_value(numC));
|
||||
object_drop(&numA);
|
||||
|
@ -23,7 +23,7 @@ static void test_number(VmState state) {
|
|||
static void test_func(VmState state) {
|
||||
Object funcA = func_create();
|
||||
vm_stack_push(state, NULL);
|
||||
vm_call(funcA, "Call", 1, state);
|
||||
vm_call(state, funcA, "Call", 1);
|
||||
Object numA = vm_stack_pop(state);
|
||||
printf("code return value is %i\n", number_value(numA));
|
||||
object_drop(&numA);
|
||||
|
|
|
@ -35,7 +35,7 @@ int number_value(Object obj) {
|
|||
return num->value;
|
||||
}
|
||||
|
||||
static void number_add(Object obj, VmState state) {
|
||||
static void number_add(VmState state, Object obj) {
|
||||
int arg_count = vm_stack_depth(state);
|
||||
abort_if(arg_count != 2, "number_add called without 2 arguments");
|
||||
Object arg1 = vm_stack_get(state, 1);
|
||||
|
@ -50,7 +50,7 @@ static void number_add(Object obj, VmState state) {
|
|||
object_drop(&arg1);
|
||||
}
|
||||
|
||||
static void number_minus(Object obj, VmState state) {
|
||||
static void number_minus(VmState state, Object obj) {
|
||||
int arg_count = vm_stack_depth(state);
|
||||
abort_if(arg_count != 2, "number_minus called without 2 arguments");
|
||||
Object arg1 = vm_stack_get(state, 1);
|
||||
|
|
|
@ -23,11 +23,11 @@ void object_drop(Object *objptr) {
|
|||
*objptr = NULL;
|
||||
}
|
||||
|
||||
void dispatch_call(Object obj, const char *name, VmState state) {
|
||||
void dispatch_call(VmState state, Object obj, const char *name) {
|
||||
struct object_call *call = obj->class_data->calls;
|
||||
while (call->name != NULL) {
|
||||
if (strcmp(call->name, name) == 0) {
|
||||
call->handler(obj, state);
|
||||
call->handler(state, obj);
|
||||
return;
|
||||
}
|
||||
++call;
|
||||
|
|
|
@ -21,7 +21,7 @@ struct object {
|
|||
// Dispatchable object call
|
||||
struct object_call {
|
||||
const char *name;
|
||||
void (*handler)(Object obj, VmState state);
|
||||
void (*handler)(VmState state, Object obj);
|
||||
};
|
||||
|
||||
// Object class shared between objects
|
||||
|
@ -39,6 +39,6 @@ void object_hold(Object obj);
|
|||
void object_drop(Object *objptr);
|
||||
|
||||
// Calls a method on an object
|
||||
void dispatch_call(Object obj, const char *name, VmState state);
|
||||
void dispatch_call(VmState state, Object obj, const char *name);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -73,10 +73,10 @@ int vm_stack_depth(VmState state) {
|
|||
return priv->stack_next - priv->stack_base;
|
||||
}
|
||||
|
||||
void vm_call(Object obj, const char *name, int arg_count, VmState state) {
|
||||
void vm_call(VmState state, Object obj, const char *name, int arg_count) {
|
||||
struct vm_state *priv = (struct vm_state *)state;
|
||||
int old_base = priv->stack_base;
|
||||
priv->stack_base = priv->stack_next - arg_count;
|
||||
dispatch_call(obj, name, priv);
|
||||
dispatch_call(priv, obj, name);
|
||||
priv->stack_base = old_base;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,6 @@ Object vm_stack_pop(VmState state);
|
|||
void vm_stack_drop(VmState state, int count);
|
||||
int vm_stack_depth(VmState state);
|
||||
|
||||
void vm_call(Object obj, const char *name, int arg_count, VmState state);
|
||||
void vm_call(VmState state, Object obj, const char *name, int arg_count);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue