1
0
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:
Stephen Dolan
2012-08-22 19:21:35 +01:00
parent 2086e59ab1
commit befb103a12
2 changed files with 3 additions and 10 deletions

View File

@@ -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));

View File

@@ -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) \