int gen_new_default(struct value *gen) { struct value tuple, code_sym; value_symbol_new(&code_sym, "code", 4); value_tuple_new(&tuple, &code_sym, 8192); return gen_new(gen, &tuple, 0); }
int main(int argc, char **argv) { gen = gen_new(1); hello(); printf("\n"); compile_test(); printf("\n"); test(); return 0; }
void Compiler::handle_ik_obj(const JInst& jinst) { jtype jt = jvoid; bool store = false; switch(jinst.opcode) { case OPCODE_IASTORE: store = true; case OPCODE_IALOAD: jt = i32; break; case OPCODE_LASTORE: store = true; case OPCODE_LALOAD: jt = i64; break; case OPCODE_FASTORE: store = true; case OPCODE_FALOAD: jt = flt32; break; case OPCODE_DASTORE: store = true; case OPCODE_DALOAD: jt = dbl64; break; case OPCODE_AASTORE: store = true; case OPCODE_AALOAD: jt = jobj; break; case OPCODE_BASTORE: store = true; case OPCODE_BALOAD: jt = i8; break; case OPCODE_CASTORE: store = true; case OPCODE_CALOAD: jt = u16; break; case OPCODE_SASTORE: store = true; case OPCODE_SALOAD: jt = i16; break; default: break; } if (jt != jvoid) { // that was indeed *aload/*astore if (store) { gen_arr_store(jt); } else { gen_arr_load(jt); } return; } switch(jinst.opcode) { case OPCODE_NEW: gen_new(m_klass, (unsigned short)jinst.op0); break; case OPCODE_PUTSTATIC: case OPCODE_GETSTATIC: case OPCODE_PUTFIELD: case OPCODE_GETFIELD: gen_field_op(jinst.opcode, m_klass, (unsigned short)jinst.op0); break; case OPCODE_ARRAYLENGTH: gen_array_length(); break; case OPCODE_ANEWARRAY: gen_new_array(m_klass, (unsigned short)jinst.op0); break; case OPCODE_NEWARRAY: { VM_Data_Type atype; switch(jinst.op0) { case 4: atype = VM_DATA_TYPE_BOOLEAN; break; case 5: atype = VM_DATA_TYPE_CHAR; break; case 6: atype = VM_DATA_TYPE_F4; break; case 7: atype = VM_DATA_TYPE_F8; break; case 8: atype = VM_DATA_TYPE_INT8; break; case 9: atype = VM_DATA_TYPE_INT16; break; case 10: atype = VM_DATA_TYPE_INT32; break; case 11: atype = VM_DATA_TYPE_INT64; break; default: assert(false); atype = VM_DATA_TYPE_INVALID; break; } Class_Handle elem_class = class_get_class_of_primitive_type(atype); Class_Handle array_class = class_get_array_of_class(elem_class); Allocation_Handle ah = class_get_allocation_handle(array_class); gen_new_array(ah); } break; case OPCODE_MULTIANEWARRAY: gen_multianewarray(m_klass, (unsigned short)jinst.op0, jinst.op1); break; case OPCODE_MONITORENTER: case OPCODE_MONITOREXIT: gen_monitor_ee(); break; case OPCODE_CHECKCAST: case OPCODE_INSTANCEOF: gen_instanceof_cast(jinst.opcode, m_klass, (unsigned short)jinst.op0); break; default: assert(false); break; } }