mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Fix a revolting hack
This commit is contained in:
11
c/compile.c
11
c/compile.c
@@ -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));
|
||||
|
@@ -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