Fix a revolting hack
This commit is contained in:
1 parent
2086e59ab1
commit
befb103a12
2 files changed
+3
-10
No files matched your search
+2
-9
@@ -312,16 +312,9 @@ static void compile(struct bytecode* bc, block b) {
|
||||
json_t* constant_pool = json_array();
|
||||
int maxvar = -1;
|
||||
for (inst* curr = b.first; curr; curr = curr->next) {
|
||||
if (curr->op == CLOSURE_CREATE) {
|
||||
// CLOSURE_CREATE opcodes define closures for use later in the
|
||||
// codestream. They generate no code.
|
||||
|
||||
// FIXME: make the above true :)
|
||||
code[pos++] = DUP;
|
||||
code[pos++] = POP;
|
||||
continue;
|
||||
}
|
||||
const struct opcode_description* op = opcode_describe(curr->op);
|
||||
if (op->length == 0)
|
||||
continue;
|
||||
code[pos++] = curr->op;
|
||||
int opflags = op->flags;
|
||||
assert(!(op->flags & OP_IS_CALL_PSEUDO));
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
#define BRANCH OP_HAS_BRANCH, 2
|
||||
#define CFUNC (OP_HAS_SYMBOL | OP_HAS_CFUNC), 2
|
||||
#define UFUNC (OP_HAS_UFUNC | OP_HAS_VARIABLE_LENGTH_ARGLIST), 2
|
||||
#define CLOSURE_DEFINE (OP_HAS_BLOCK | OP_IS_CALL_PSEUDO | OP_HAS_BINDING), 2
|
||||
#define CLOSURE_DEFINE (OP_HAS_BLOCK | OP_IS_CALL_PSEUDO | OP_HAS_BINDING), 0
|
||||
#define CLOSURE_ACCESS (OP_IS_CALL_PSEUDO | OP_HAS_BINDING), 2
|
||||
|
||||
#define OP(name, imm, in, out) \
|
||||
|
||||
Reference in new issue
Block a user