diff -r eaa43f765cbd -r 06a0015b6a5c jitcraft/Opcodes.cpp --- a/jitcraft/Opcodes.cpp Fri Jul 20 00:03:10 2012 -0700 +++ b/jitcraft/Opcodes.cpp Mon Jul 23 01:19:44 2012 -0700 @@ -76,7 +76,7 @@ // any other position indicates a failure to mark that position as a // safepoint, which is a bug. Opcode op = Opcode(*(start() + pcOffset)); - assert(op == OP_CALL || op == OP_NEWARRAY_LIFO || op == OP_VARREF_LIFO || + assert(op == OP_CALL || op == OP_NEWARRAY || op == OP_VARREF_LIFO || op == OP_ARGREF_LIFO || op == OP_SLOTREF_LIFO || op == OP_ARRAYREF_LIFO || op == OP_ARRAYCOPY); @@ -238,9 +238,10 @@ fprintf(fp, "%u (%+d)", unsigned((pc + READ_INT32(pc)) - code->start()), READ_INT32(pc)); break; - case OP_NEWARRAY_LIFO: + case OP_NEWARRAY: { - ArrayMap *map = ArrayMap::cast(code->map(READ_UINT32(pc))); + Heap::Tenure tenure = (Heap::Tenure)pc[1]; + ArrayMap *map = ArrayMap::cast(code->map(READ_UINT32(pc + 1))); fprintf(fp, "%s:", map->type()->innermost()->tag() ? map->type()->innermost()->tag()->chars() : "_"); @@ -248,6 +249,10 @@ Type *type = map->type(); fprintf(fp, "[%d]", type->elements()); } + if (tenure == Heap::Tenure_Stack) + fprintf(fp, " ; lifo"); + else if (tenure == Heap::Tenure_Old) + fprintf(fp, " ; pretenured"); break; } @@ -261,6 +266,12 @@ case OP_ARGREF_LIFO: case OP_OBJECT: case OP_GETMODULE_FN: + case OP_GETGLOBAL_I: + case OP_GETGLOBAL_F: + case OP_GETGLOBAL_O: + case OP_SETGLOBAL_I: + case OP_SETGLOBAL_F: + case OP_SETGLOBAL_O: fprintf(fp, "%u", READ_UINT32(pc)); break;