mirror of
https://github.com/janet-lang/janet
synced 2024-12-25 07:50:27 +00:00
.
This commit is contained in:
parent
47d9aceb0a
commit
4a15052d38
@ -203,7 +203,9 @@ enum OpCode {
|
||||
VM_OP_SBM, /* 0x001d */
|
||||
VM_OP_MUM, /* 0x001e */
|
||||
VM_OP_DVM, /* 0x001f */
|
||||
VM_OP_RTN /* 0x0020 */
|
||||
VM_OP_RTN, /* 0x0020 */
|
||||
VM_OP_SET, /* 0x0021 */
|
||||
VM_OP_GET, /* 0x0022 */
|
||||
};
|
||||
|
||||
#endif /* end of include guard: DATATYPES_H_PJJ035NT */
|
||||
|
3
main.c
3
main.c
@ -8,6 +8,7 @@
|
||||
#include "value.h"
|
||||
#include "disasm.h"
|
||||
|
||||
/* Test c function */
|
||||
Value print(VM * vm) {
|
||||
uint32_t i, j, count;
|
||||
Value nil;
|
||||
@ -85,7 +86,7 @@ void debugRepl() {
|
||||
}
|
||||
|
||||
/* Print the function that will be executed */
|
||||
dasmFunc(stdout, func);
|
||||
//dasmFunc(stdout, func);
|
||||
|
||||
/* Execute function */
|
||||
VMLoad(&vm, func);
|
||||
|
21
value.c
21
value.c
@ -351,3 +351,24 @@ int ValueCompare(Value x, Value y) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Get a value out af an associated data structure. Can throw VM error. */
|
||||
Value ValueGet(VM * vm, Value ds, Value key) {
|
||||
switch (ds.type) {
|
||||
case TYPE_ARRAY:
|
||||
case TYPE_FORM:
|
||||
case TYPE_BYTEBUFFER:
|
||||
case TYPE_SYMBOL:
|
||||
case TYPE_STRING:
|
||||
case TYPE_DICTIONARY:
|
||||
case TYPE_FUNCENV:
|
||||
default:
|
||||
VMError(vm, "Cannot get.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set a value in an associative data structure. Can throw VM error. */
|
||||
int ValueSet(VM * vm, Value ds, Value key, Value value) {
|
||||
|
||||
}
|
||||
|
4
value.h
4
value.h
@ -9,6 +9,10 @@ int ValueCompare(Value x, Value y);
|
||||
|
||||
int ValueEqual(Value x, Value y);
|
||||
|
||||
Value ValueGet(VM * vm, Value ds, Value key);
|
||||
|
||||
int ValueSet(VM * vm, Value ds, Value key, Value value);
|
||||
|
||||
Value ValueLoadCString(VM * vm, const char * string);
|
||||
|
||||
uint8_t * ValueToString(VM * vm, Value x);
|
||||
|
8
vm.c
8
vm.c
@ -716,6 +716,10 @@ int VMStart(VM * vm) {
|
||||
VMReturn(vm, temp);
|
||||
break;
|
||||
|
||||
case VM_OP_GET:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
VMError(vm, "Unknown opcode");
|
||||
break;
|
||||
@ -755,7 +759,7 @@ void VMInit(VM * vm) {
|
||||
vm->black = 0;
|
||||
vm->lock = 0;
|
||||
/* Create new thread */
|
||||
vm->thread = ArrayNew(vm, 20);
|
||||
vm->thread = ArrayNew(vm, 32);
|
||||
}
|
||||
|
||||
/* Load a function into the VM. The function will be called with
|
||||
@ -764,7 +768,7 @@ void VMLoad(VM * vm, Func * func) {
|
||||
Value callee;
|
||||
callee.type = TYPE_FUNCTION;
|
||||
callee.data.func = func;
|
||||
vm->thread = ArrayNew(vm, 100);
|
||||
vm->thread = ArrayNew(vm, 32);
|
||||
VMThreadPush(vm, vm->thread, callee, func->def->locals);
|
||||
vm->pc = func->def->byteCode;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user