1.1 --- a/src/BytecodeEmitter.h Sun Aug 05 00:49:31 2012 -0700
1.2 +++ b/src/BytecodeEmitter.h Sun Aug 05 01:10:49 2012 -0700
1.3 @@ -365,39 +365,16 @@
1.4 writeUint32(argc);
1.5 }
1.6
1.7 - void getarray(Type *type) {
1.8 - if (type->isTraceable()) {
1.9 - singleByteOp(OP_GETARRAY_O);
1.10 - markOop(1);
1.11 - return;
1.12 - }
1.13 + void getelem(Type *type) {
1.14 + singleByteOp(OP_GETELEM);
1.15
1.16 - switch (type->pod()) {
1.17 - case PrimitiveType_Float:
1.18 - singleByteOp(OP_GETARRAY_F);
1.19 - break;
1.20 - case PrimitiveType_Int32:
1.21 - singleByteOp(OP_GETARRAY_I);
1.22 - break;
1.23 - default:
1.24 - assert(type->pod() == PrimitiveType_Char);
1.25 - singleByteOp(OP_GETARRAY_C);
1.26 - break;
1.27 - }
1.28 + if (type->isTraceable())
1.29 + markOop(1);
1.30 }
1.31 - void setarray(Type *type) {
1.32 - switch (type->pod()) {
1.33 - case PrimitiveType_Float:
1.34 - singleByteOp(OP_SETARRAY_F);
1.35 - break;
1.36 - case PrimitiveType_Int32:
1.37 - singleByteOp(OP_SETARRAY_I);
1.38 - break;
1.39 - default:
1.40 - assert(type->pod() == PrimitiveType_Char);
1.41 - singleByteOp(OP_SETARRAY_C);
1.42 - break;
1.43 - }
1.44 + void setelem(Type *type) {
1.45 + singleByteOp(OP_SETELEM);
1.46 +
1.47 + assert(!type->isTraceable());
1.48 }
1.49
1.50 void getfield(unsigned index, Type *type) {