1.1 --- a/jitcraft/BytecodeEmitter.h Fri Jul 20 00:03:10 2012 -0700
1.2 +++ b/jitcraft/BytecodeEmitter.h Mon Jul 23 01:19:44 2012 -0700
1.3 @@ -364,6 +364,7 @@
1.4 writeUint32(index);
1.5 writeUint32(argc);
1.6 }
1.7 +
1.8 void getarray(PrimitiveType type) {
1.9 switch (type) {
1.10 case PrimitiveType_Float:
1.11 @@ -392,6 +393,43 @@
1.12 break;
1.13 }
1.14 }
1.15 +
1.16 + void getglobal(Variable *var) {
1.17 + ensure(OP_GETGLOBAL_F_LENGTH);
1.18 + if (var->type()->isPrimitive()) {
1.19 + switch (var->type()->primitive()) {
1.20 + case PrimitiveType_Float:
1.21 + writeOp(OP_GETGLOBAL_F);
1.22 + break;
1.23 + default:
1.24 + assert(var->type()->primitive() == PrimitiveType_Int32);
1.25 + writeOp(OP_GETGLOBAL_I);
1.26 + break;
1.27 + }
1.28 + } else {
1.29 + writeOp(OP_GETGLOBAL_O);
1.30 + markOop(1);
1.31 + }
1.32 + writeUint32(var->slot());
1.33 + }
1.34 + void setglobal(Variable *var) {
1.35 + ensure(OP_SETGLOBAL_F_LENGTH);
1.36 + if (var->type()->isPrimitive()) {
1.37 + switch (var->type()->primitive()) {
1.38 + case PrimitiveType_Float:
1.39 + writeOp(OP_SETGLOBAL_F);
1.40 + break;
1.41 + default:
1.42 + assert(var->type()->primitive() == PrimitiveType_Int32);
1.43 + writeOp(OP_SETGLOBAL_I);
1.44 + break;
1.45 + }
1.46 + } else {
1.47 + writeOp(OP_SETGLOBAL_O);
1.48 + }
1.49 + writeUint32(var->slot());
1.50 + }
1.51 +
1.52 void getarray_o() {
1.53 singleByteOp(OP_GETARRAY_O);
1.54 markOop(1);
1.55 @@ -408,10 +446,11 @@
1.56 void cvt_i2f() {
1.57 singleByteOp(OP_CVT_I2F);
1.58 }
1.59 - void newarray_lifo(Handle<Map> map) {
1.60 + void newarray(Handle<Map> map, Heap::Tenure tenure) {
1.61 recordOops();
1.62 - ensure(OP_NEWARRAY_LIFO_LENGTH);
1.63 - writeOp(OP_NEWARRAY_LIFO);
1.64 + ensure(OP_NEWARRAY_LENGTH);
1.65 + writeOp(OP_NEWARRAY);
1.66 + writeUint8(tenure);
1.67 writeObject(map);
1.68 markOop(1);
1.69 }