jitcraft/Opcodes.cpp
changeset 85 06a0015b6a5c
parent 82 f99bc938522a
     1.1 --- a/jitcraft/Opcodes.cpp	Fri Jul 20 00:03:10 2012 -0700
     1.2 +++ b/jitcraft/Opcodes.cpp	Mon Jul 23 01:19:44 2012 -0700
     1.3 @@ -76,7 +76,7 @@
     1.4      // any other position indicates a failure to mark that position as a
     1.5      // safepoint, which is a bug.
     1.6      Opcode op = Opcode(*(start() + pcOffset));
     1.7 -    assert(op == OP_CALL || op == OP_NEWARRAY_LIFO || op == OP_VARREF_LIFO ||
     1.8 +    assert(op == OP_CALL || op == OP_NEWARRAY || op == OP_VARREF_LIFO ||
     1.9             op == OP_ARGREF_LIFO || op == OP_SLOTREF_LIFO || op == OP_ARRAYREF_LIFO ||
    1.10             op == OP_ARRAYCOPY);
    1.11  
    1.12 @@ -238,9 +238,10 @@
    1.13              fprintf(fp, "%u (%+d)", unsigned((pc + READ_INT32(pc)) - code->start()), READ_INT32(pc));
    1.14              break;
    1.15  
    1.16 -          case OP_NEWARRAY_LIFO:
    1.17 +          case OP_NEWARRAY:
    1.18            {
    1.19 -            ArrayMap *map = ArrayMap::cast(code->map(READ_UINT32(pc)));
    1.20 +            Heap::Tenure tenure = (Heap::Tenure)pc[1];
    1.21 +            ArrayMap *map = ArrayMap::cast(code->map(READ_UINT32(pc + 1)));
    1.22              fprintf(fp, "%s:", map->type()->innermost()->tag()
    1.23                                 ? map->type()->innermost()->tag()->chars()
    1.24                                 : "_");
    1.25 @@ -248,6 +249,10 @@
    1.26                  Type *type = map->type();
    1.27                  fprintf(fp, "[%d]", type->elements());
    1.28              }
    1.29 +            if (tenure == Heap::Tenure_Stack)
    1.30 +                fprintf(fp, " ; lifo");
    1.31 +            else if (tenure == Heap::Tenure_Old)
    1.32 +                fprintf(fp, " ; pretenured");
    1.33              break;
    1.34            }
    1.35  
    1.36 @@ -261,6 +266,12 @@
    1.37            case OP_ARGREF_LIFO:
    1.38            case OP_OBJECT:
    1.39            case OP_GETMODULE_FN:
    1.40 +          case OP_GETGLOBAL_I:
    1.41 +          case OP_GETGLOBAL_F:
    1.42 +          case OP_GETGLOBAL_O:
    1.43 +          case OP_SETGLOBAL_I:
    1.44 +          case OP_SETGLOBAL_F:
    1.45 +          case OP_SETGLOBAL_O:
    1.46              fprintf(fp, "%u", READ_UINT32(pc));
    1.47              break;
    1.48