access.
* src/vm/jit/verify/typecheck-fields.inc: Check basic type of value.
* src/vm/jit/verify/typecheck-stackbased-gen.inc: Regenerated.
* src/vm/jit/verify/typecheck-variablesbased-gen.inc: Likewise.
* src/vm/jit/verify/typecheck.c (verify_fieldaccess): Define
VERIFY_ERROR for the include file.
* src/vm/jit/verify/typecheck-stackbased.c (VERIFY_ERROR): Fixed
macro.
* tests/regression/jasmin/test_verify_fail_putfieldconst_basic_type_instance.j,
tests/regression/jasmin/test_verify_fail_getfield_basic_type_instance.j,
tests/regression/jasmin/test_verify_fail_putfield_basic_type_value.j,
tests/regression/jasmin/test_verify_fail_putstatic_basic_type_value.j,
tests/regression/jasmin/test_verify_fail_putfieldconst_basic_type_value.j,
tests/regression/jasmin/test_verify_fail_getfield_basic_type_value.j,
tests/regression/jasmin/test_verify_fail_putfield_basic_type_instance.j,
tests/regression/jasmin/test_verify_fail_putfield_basic_type_lookup.j,
tests/regression/jasmin/test_verify_fail_getfield_basic_type_lookup.j,
tests/regression/jasmin/test_verify_fail_putstaticconst_basic_type_value.j:
New tests.
* tests/regression/jasmin/runtest: Look for specified ICMDs in -sia
output.
case ICMD_PUTFIELD: /* {STACKBASED} */
CHECK_STACK_DEPTH(2);
- if (IS_CAT1(stack[0]))
- stack -= 2;
- else {
- stack -= 3;
+ if (!IS_CAT1(stack[0])) {
+ CHECK_STACK_DEPTH(3);
+ stack -= 1;
}
- stack = typecheck_stackbased_verify_fieldaccess(STATE, stack+1, stack+2, stack);
+ CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
+ stack = typecheck_stackbased_verify_fieldaccess(STATE, stack-1, stack, stack-2);
if (stack == NULL)
EXCEPTION;
break;
case ICMD_PUTSTATIC: /* {STACKBASED} */
CHECK_STACK_DEPTH(1);
- if (IS_CAT1(stack[0]))
+ if (!IS_CAT1(stack[0])) {
+ /* (stack depth >= 2 is guaranteed) */
stack -= 1;
- else {
- stack -= 2;
}
- stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack+1, stack);
+ stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack, stack-1);
if (stack == NULL)
EXCEPTION;
break;
case ICMD_GETFIELD: /* {STACKBASED} */
- stack -= 1;
- stack = typecheck_stackbased_verify_fieldaccess(STATE, stack+1, NULL, stack);
+ CHECK_STACK_TYPE(stack[0], TYPE_ADR);
+ stack = typecheck_stackbased_verify_fieldaccess(STATE, stack, NULL, stack-1);
if (stack == NULL)
EXCEPTION;
break;
fieldref = state->iptr->sx.s23.s3.fmiref;
}
+ /* check the basic value type for PUT instructions */
+
+ if (value && value->type != fieldref->parseddesc.fd->type)
+ VERIFY_ERROR("Field type mismatch");
+
/* try to resolve the field reference lazily */
result = resolve_field_lazy(state->m, fieldref);
GENERATED /* may use stack[1] ... stack[1] */
GENERATED
GENERATED
-# line 308 "src/vm/jit/verify/icmds.c"
+# line 307 "src/vm/jit/verify/icmds.c"
GENERATED if (IPTR->flags.bits & INS_FLAG_CLASS) {
GENERATED /* a java.lang.Class reference */
GENERATED TYPEINFO_INIT_JAVA_LANG_CLASS(DST->typeinfo,IPTR->sx.val.c);
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 219 "src/vm/jit/verify/icmds.c"
+# line 218 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 229 "src/vm/jit/verify/icmds.c"
+# line 228 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 214 "src/vm/jit/verify/icmds.c"
+# line 213 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 209 "src/vm/jit/verify/icmds.c"
+# line 208 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 198 "src/vm/jit/verify/icmds.c"
+# line 197 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 204 "src/vm/jit/verify/icmds.c"
+# line 203 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 224 "src/vm/jit/verify/icmds.c"
+# line 223 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 255 "src/vm/jit/verify/icmds.c"
+# line 254 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-3] ... stack[0] */
GENERATED
GENERATED
-# line 265 "src/vm/jit/verify/icmds.c"
+# line 264 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 250 "src/vm/jit/verify/icmds.c"
+# line 249 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-3] ... stack[0] */
GENERATED
GENERATED
-# line 245 "src/vm/jit/verify/icmds.c"
+# line 244 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 270 "src/vm/jit/verify/icmds.c"
+# line 269 "src/vm/jit/verify/icmds.c"
GENERATED /* we just check the basic input types and that the */
GENERATED /* destination is an array of references. Assignability to */
GENERATED /* the actual array must be checked at runtime, each time the */
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 234 "src/vm/jit/verify/icmds.c"
+# line 233 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 240 "src/vm/jit/verify/icmds.c"
+# line 239 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[-2] ... stack[0] */
GENERATED
GENERATED
-# line 260 "src/vm/jit/verify/icmds.c"
+# line 259 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 656 "src/vm/jit/verify/icmds.c"
+# line 655 "src/vm/jit/verify/icmds.c"
GENERATED /* we pop 1 */
GENERATED CHECK_CAT1(stack[0]);
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 661 "src/vm/jit/verify/icmds.c"
+# line 660 "src/vm/jit/verify/icmds.c"
GENERATED /* we pop either 11 or 2 */
GENERATED if (IS_CAT1(stack[0]))
GENERATED CHECK_CAT1(stack[-1]);
GENERATED /* may use stack[0] ... stack[1] */
GENERATED
GENERATED
-# line 676 "src/vm/jit/verify/icmds.c"
+# line 675 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup 1 */
GENERATED CHECK_CAT1(stack[0]);
GENERATED
GENERATED /* may use stack[-1] ... stack[1] */
GENERATED
GENERATED
-# line 683 "src/vm/jit/verify/icmds.c"
+# line 682 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup 1 */
GENERATED CHECK_CAT1(stack[0]);
GENERATED /* we skip 1 */
GENERATED /* may use stack[-2] ... stack[1] */
GENERATED
GENERATED
-# line 694 "src/vm/jit/verify/icmds.c"
+# line 693 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup 1 */
GENERATED CHECK_CAT1(stack[0]);
GENERATED /* we skip either 11 or 2 */
GENERATED /* may use stack[-1] ... stack[2] */
GENERATED
GENERATED
-# line 707 "src/vm/jit/verify/icmds.c"
+# line 706 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup either 11 or 2 */
GENERATED if (IS_CAT1(stack[0]))
GENERATED CHECK_CAT1(stack[-1]);
GENERATED /* may use stack[-2] ... stack[2] */
GENERATED
GENERATED
-# line 716 "src/vm/jit/verify/icmds.c"
+# line 715 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup either 11 or 2 */
GENERATED if (IS_CAT1(stack[0]))
GENERATED CHECK_CAT1(stack[-1]);
GENERATED /* may use stack[-3] ... stack[2] */
GENERATED
GENERATED
-# line 730 "src/vm/jit/verify/icmds.c"
+# line 729 "src/vm/jit/verify/icmds.c"
GENERATED /* we dup either 11 or 2 */
GENERATED if (IS_CAT1(stack[0]))
GENERATED CHECK_CAT1(stack[-1]);
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 667 "src/vm/jit/verify/icmds.c"
+# line 666 "src/vm/jit/verify/icmds.c"
GENERATED CHECK_CAT1(stack[0]);
GENERATED CHECK_CAT1(stack[-1]);
GENERATED
GENERATED /* may use stack[1] ... stack[1] */
GENERATED
GENERATED
-# line 347 "src/vm/jit/verify/icmds.c"
+# line 346 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
GENERATED /* may use stack[1] ... stack[2] */
GENERATED
GENERATED
-# line 353 "src/vm/jit/verify/icmds.c"
+# line 352 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
GENERATED /* may use stack[1] ... stack[2] */
GENERATED
GENERATED
-# line 359 "src/vm/jit/verify/icmds.c"
+# line 358 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 344 "src/vm/jit/verify/icmds.c"
+# line 343 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 540 "src/vm/jit/verify/icmds.c"
+# line 539 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED tbptr = BLOCK_OF(IPTR->sx.s23.s3.jsrtarget.insindex);
GENERATED
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 559 "src/vm/jit/verify/icmds.c"
+# line 558 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR);
GENERATED if (!TYPEINFO_IS_PRIMITIVE(STATE->locals[IPTR->s1.varindex].typeinfo))
GENERATED /* may use stack[1] ... stack[1] */
GENERATED
GENERATED
-# line 411 "src/vm/jit/verify/icmds.c"
+# line 410 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_switch);
GENERATED
GENERATED /* may use stack[1] ... stack[1] */
GENERATED
GENERATED
-# line 427 "src/vm/jit/verify/icmds.c"
+# line 426 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_switch);
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 493 "src/vm/jit/verify/icmds.c"
+# line 492 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_INT)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 498 "src/vm/jit/verify/icmds.c"
+# line 497 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_LNG)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 503 "src/vm/jit/verify/icmds.c"
+# line 502 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_FLT)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
GENERATED /* may use stack[-1] ... stack[0] */
GENERATED
GENERATED
-# line 508 "src/vm/jit/verify/icmds.c"
+# line 507 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_DBL)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 468 "src/vm/jit/verify/icmds.c"
+# line 467 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_areturn);
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("illegal instruction: ARETURN on non-reference");
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 513 "src/vm/jit/verify/icmds.c"
+# line 512 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_VOID)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
GENERATED /* variable number of outslots! */
GENERATED
GENERATED
-# line 119 "src/vm/jit/verify/icmds.c"
+# line 118 "src/vm/jit/verify/icmds.c"
GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, NULL, stack);
GENERATED if (stack == NULL)
GENERATED EXCEPTION;
GENERATED
# line 100 "src/vm/jit/verify/icmds.c"
GENERATED CHECK_STACK_DEPTH(1);
- GENERATED if (IS_CAT1(stack[0]))
+ GENERATED if (!IS_CAT1(stack[0])) {
+ GENERATED /* (stack depth >= 2 is guaranteed) */
GENERATED stack -= 1;
- GENERATED else {
- GENERATED stack -= 2;
GENERATED }
- GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack+1, stack);
+ GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack, stack-1);
GENERATED if (stack == NULL)
GENERATED EXCEPTION;
GENERATED
-# line 1672 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1671 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* variable number of outslots! */
GENERATED
GENERATED
-# line 112 "src/vm/jit/verify/icmds.c"
- GENERATED stack -= 1;
- GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack+1, NULL, stack);
+# line 111 "src/vm/jit/verify/icmds.c"
+ GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
+ GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack, NULL, stack-1);
GENERATED if (stack == NULL)
GENERATED EXCEPTION;
GENERATED
-# line 1690 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1689 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED
# line 88 "src/vm/jit/verify/icmds.c"
GENERATED CHECK_STACK_DEPTH(2);
- GENERATED if (IS_CAT1(stack[0]))
- GENERATED stack -= 2;
- GENERATED else {
- GENERATED stack -= 3;
+ GENERATED if (!IS_CAT1(stack[0])) {
+ GENERATED CHECK_STACK_DEPTH(3);
+ GENERATED stack -= 1;
GENERATED }
- GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack+1, stack+2, stack);
+ GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
+ GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack-1, stack, stack-2);
GENERATED if (stack == NULL)
GENERATED EXCEPTION;
GENERATED
-# line 1712 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1711 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* variable number of outslots! */
GENERATED
GENERATED
-# line 582 "src/vm/jit/verify/icmds.c"
+# line 581 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_invoke);
GENERATED
GENERATED INSTRUCTION_GET_METHODDESC(IPTR, md);
GENERATED }
GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
GENERATED
-# line 1753 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1752 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 192 "src/vm/jit/verify/icmds.c"
+# line 191 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_ARRAY(OP1->typeinfo)
GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub)
GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array");
GENERATED
-# line 1775 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1774 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED stack[0].type = TYPE_INT;
GENERATED break;
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 447 "src/vm/jit/verify/icmds.c"
+# line 446 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_athrow);
GENERATED r = typeinfo_is_assignable_to_class(&OP1->typeinfo,
GENERATED CLASSREF_OR_CLASSINFO(class_java_lang_Throwable));
GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
GENERATED }
GENERATED
-# line 1817 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1816 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED stack += -1;
GENERATED break;
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 326 "src/vm/jit/verify/icmds.c"
+# line 325 "src/vm/jit/verify/icmds.c"
GENERATED /* returnAddress is not allowed */
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
GENERATED EXCEPTION;
GENERATED
-# line 1846 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1845 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* may use stack[0] ... stack[0] */
GENERATED
GENERATED
-# line 335 "src/vm/jit/verify/icmds.c"
+# line 334 "src/vm/jit/verify/icmds.c"
GENERATED /* returnAddress is not allowed */
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference");
GENERATED
-# line 1873 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1872 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED stack[0].type = TYPE_INT;
GENERATED break;
GENERATED /* variable number of inslots! */
GENERATED
GENERATED
-# line 620 "src/vm/jit/verify/icmds.c"
+# line 619 "src/vm/jit/verify/icmds.c"
GENERATED if (!typecheck_stackbased_multianewarray(STATE, stack, stackfloor))
GENERATED EXCEPTION;
GENERATED stack -= (IPTR->s1.argcount - 1);
GENERATED stack[0].type = TYPE_ADR;
GENERATED
-# line 1896 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1895 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* may use stack[1] ... stack[1] */
GENERATED
GENERATED
-# line 345 "src/vm/jit/verify/icmds.c"
+# line 344 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
GENERATED /* propagate stack and variables to the target block */
GENERATED REACH(IPTR->dst);
GENERATED
-# line 1920 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1919 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
GENERATED /* variable number of outslots! */
GENERATED
GENERATED
-# line 636 "src/vm/jit/verify/icmds.c"
+# line 635 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_builtin);
GENERATED if (!typecheck_stackbased_verify_builtin(STATE, stack, stackfloor))
GENERATED EXCEPTION;
GENERATED }
GENERATED }
GENERATED
-# line 1952 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
+# line 1951 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
GENERATED
GENERATED break;
GENERATED
#define VERIFY_ERROR(msg) \
do { \
LOG1("VerifyError: %s", msg); \
- exceptions_throw_verifyerror(state.m, msg); \
+ exceptions_throw_verifyerror(STATE->m, msg); \
return false; \
} while (0)
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 308 "src/vm/jit/verify/icmds.c"
+# line 307 "src/vm/jit/verify/icmds.c"
GENERATED if (IPTR->flags.bits & INS_FLAG_CLASS) {
GENERATED /* a java.lang.Class reference */
GENERATED TYPEINFO_INIT_JAVA_LANG_CLASS(DST->typeinfo,IPTR->sx.val.c);
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 219 "src/vm/jit/verify/icmds.c"
+# line 218 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 229 "src/vm/jit/verify/icmds.c"
+# line 228 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 214 "src/vm/jit/verify/icmds.c"
+# line 213 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 209 "src/vm/jit/verify/icmds.c"
+# line 208 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 198 "src/vm/jit/verify/icmds.c"
+# line 197 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
GENERATED VERIFY_ERROR("Array type mismatch");
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 204 "src/vm/jit/verify/icmds.c"
+# line 203 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 224 "src/vm/jit/verify/icmds.c"
+# line 223 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 362 "src/vm/jit/verify/icmds.c"
+# line 361 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 255 "src/vm/jit/verify/icmds.c"
+# line 254 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 265 "src/vm/jit/verify/icmds.c"
+# line 264 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 250 "src/vm/jit/verify/icmds.c"
+# line 249 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 245 "src/vm/jit/verify/icmds.c"
+# line 244 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 270 "src/vm/jit/verify/icmds.c"
+# line 269 "src/vm/jit/verify/icmds.c"
GENERATED /* we just check the basic input types and that the */
GENERATED /* destination is an array of references. Assignability to */
GENERATED /* the actual array must be checked at runtime, each time the */
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 234 "src/vm/jit/verify/icmds.c"
+# line 233 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
GENERATED VERIFY_ERROR("Array type mismatch");
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 240 "src/vm/jit/verify/icmds.c"
+# line 239 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 260 "src/vm/jit/verify/icmds.c"
+# line 259 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 344 "src/vm/jit/verify/icmds.c"
+# line 343 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_branch);
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 535 "src/vm/jit/verify/icmds.c"
+# line 534 "src/vm/jit/verify/icmds.c"
GENERATED TYPEINFO_INIT_RETURNADDRESS(DST->typeinfo, BPTR->next);
GENERATED REACH(IPTR->sx.s23.s3.jsrtarget);
GENERATED
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 552 "src/vm/jit/verify/icmds.c"
+# line 551 "src/vm/jit/verify/icmds.c"
GENERATED /* check returnAddress variable */
GENERATED if (!typevector_checkretaddr(jd->var,IPTR->s1.varindex))
GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 411 "src/vm/jit/verify/icmds.c"
+# line 410 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_switch);
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 427 "src/vm/jit/verify/icmds.c"
+# line 426 "src/vm/jit/verify/icmds.c"
GENERATED /* {RESULTNOW} */
GENERATED TYPECHECK_COUNT(stat_ins_switch);
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 493 "src/vm/jit/verify/icmds.c"
+# line 492 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_INT)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 498 "src/vm/jit/verify/icmds.c"
+# line 497 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_LNG)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 503 "src/vm/jit/verify/icmds.c"
+# line 502 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_FLT)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 508 "src/vm/jit/verify/icmds.c"
+# line 507 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_DBL)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 468 "src/vm/jit/verify/icmds.c"
+# line 467 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_areturn);
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("illegal instruction: ARETURN on non-reference");
GENERATED superblockend = true;
GENERATED
GENERATED
-# line 513 "src/vm/jit/verify/icmds.c"
+# line 512 "src/vm/jit/verify/icmds.c"
GENERATED if (STATE->returntype.type != TYPE_VOID)
GENERATED VERIFY_ERROR("Return type mismatch");
GENERATED
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 183 "src/vm/jit/verify/icmds.c"
+# line 182 "src/vm/jit/verify/icmds.c"
GENERATED if (!verify_fieldaccess(state, NULL, NULL))
GENERATED return false;
GENERATED maythrow = true;
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 131 "src/vm/jit/verify/icmds.c"
+# line 130 "src/vm/jit/verify/icmds.c"
GENERATED if (!verify_fieldaccess(state, NULL, VAROP(iptr->s1)))
GENERATED return false;
GENERATED maythrow = true;
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 177 "src/vm/jit/verify/icmds.c"
+# line 176 "src/vm/jit/verify/icmds.c"
GENERATED if (!verify_fieldaccess(state, VAROP(iptr->s1), NULL))
GENERATED return false;
GENERATED maythrow = true;
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 125 "src/vm/jit/verify/icmds.c"
+# line 124 "src/vm/jit/verify/icmds.c"
GENERATED if (!verify_fieldaccess(state, VAROP(iptr->s1), VAROP(iptr->sx.s23.s2)))
GENERATED return false;
GENERATED maythrow = true;
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 572 "src/vm/jit/verify/icmds.c"
+# line 571 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_invoke);
GENERATED if (!verify_invocation(state))
GENERATED EXCEPTION;
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 192 "src/vm/jit/verify/icmds.c"
+# line 191 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_ARRAY(OP1->typeinfo)
GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub)
GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array");
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 447 "src/vm/jit/verify/icmds.c"
+# line 446 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_athrow);
GENERATED r = typeinfo_is_assignable_to_class(&OP1->typeinfo,
GENERATED CLASSREF_OR_CLASSINFO(class_java_lang_Throwable));
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 326 "src/vm/jit/verify/icmds.c"
+# line 325 "src/vm/jit/verify/icmds.c"
GENERATED /* returnAddress is not allowed */
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 335 "src/vm/jit/verify/icmds.c"
+# line 334 "src/vm/jit/verify/icmds.c"
GENERATED /* returnAddress is not allowed */
GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference");
# define DST VAROP(iptr->dst)
GENERATED
GENERATED
-# line 615 "src/vm/jit/verify/icmds.c"
+# line 614 "src/vm/jit/verify/icmds.c"
GENERATED if (!verify_multianewarray(STATE))
GENERATED EXCEPTION;
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 279 "src/vm/jit/verify/icmds.c"
+# line 278 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_INT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 284 "src/vm/jit/verify/icmds.c"
+# line 283 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_LONG))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 289 "src/vm/jit/verify/icmds.c"
+# line 288 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_BOOLEAN)
GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_BYTE))
GENERATED VERIFY_ERROR("Array type mismatch");
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 295 "src/vm/jit/verify/icmds.c"
+# line 294 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_CHAR))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 300 "src/vm/jit/verify/icmds.c"
+# line 299 "src/vm/jit/verify/icmds.c"
GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_SHORT))
GENERATED VERIFY_ERROR("Array type mismatch");
GENERATED
GENERATED maythrow = true;
GENERATED
GENERATED
-# line 157 "src/vm/jit/verify/icmds.c"
+# line 156 "src/vm/jit/verify/icmds.c"
GENERATED /* XXX this mess will go away with const operands */
GENERATED INSTRUCTION_GET_FIELDREF(state->iptr, fieldref);
GENERATED constvalue.type = fieldref->parseddesc.fd->type;
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 137 "src/vm/jit/verify/icmds.c"
+# line 136 "src/vm/jit/verify/icmds.c"
GENERATED /* XXX this mess will go away with const operands */
GENERATED INSTRUCTION_GET_FIELDREF(state->iptr, fieldref);
GENERATED constvalue.type = fieldref->parseddesc.fd->type;
# define OP1 VAROP(iptr->s1)
GENERATED
GENERATED
-# line 630 "src/vm/jit/verify/icmds.c"
+# line 629 "src/vm/jit/verify/icmds.c"
GENERATED TYPECHECK_COUNT(stat_ins_builtin);
GENERATED if (!verify_builtin(state))
GENERATED EXCEPTION;
Changes: Christian Thalinger
- $Id: typecheck.c 5773 2006-10-13 14:34:19Z edwin $
+ $Id: typecheck.c 5777 2006-10-13 18:25:21Z edwin $
*/
#define TYPECHECK_VARIABLESBASED
#define EXCEPTION do { return false; } while (0)
+#define VERIFY_ERROR(msg) TYPECHECK_VERIFYERROR_bool(msg)
#include <typecheck-fields.inc>
#undef EXCEPTION
+#undef VERIFY_ERROR
#undef TYPECHECK_VARIABLESBASED
return true;
TESTEXPECT="TESTEXPECT"
TESTLOG="TESTLOG"
TESTERR="TESTERR"
+ TESTSIA="TESTSIA"
EXPECTSTATUS=0
+ CHECKICMD=0
# compile the test
EXPECTERROR=$(grep 'ERROR:.*' "$TEST" | sed 's,.*ERROR:[ \t]*,,')
fi
+ if grep 'ICMD:' "$TEST" >/dev/null ; then
+ CHECKICMD=1
+ EXPECTICMD=$(grep 'ICMD:.*' "$TEST" | sed 's,.*ICMD:[ \t]*,,')
+ fi
+
# run the test
$TIMEOUTRUN $JAVA $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
fi
fi
+ if [ "$CHECKICMD" -ne 0 ] ; then
+ rm -f "$TESTSIA"
+ touch "$TESTSIA"
+ $JAVA $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTSIA" 2>/dev/null
+ cat "$TESTSIA" | sed -n '/^'"$TESTBASENAME"'\.main/,$p' | sed '/^=====.*flags: -1/,$d' | tee TEST | grep "$EXPECTICMD"
+ fi
+
shift
done
--- /dev/null
+.class public test_verify_fail_getfield_basic_type_instance
+.super java/lang/Object
+
+.field public "intfield" I
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc 567
+ putfield test_verify_fail_getfield_basic_type_instance/intfield I
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_getfield_basic_type_instance
+ dup
+ invokespecial test_verify_fail_getfield_basic_type_instance/<init>()V
+
+ pop
+ iconst_1
+
+ getfield test_verify_fail_getfield_basic_type_instance/intfield I
+ ; ERROR: VerifyError
+
+ invokestatic test_verify_fail_getfield_basic_type_instance/check(I)V
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_getfield_basic_type_lookup
+.super java/lang/Object
+
+.field public "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc "test"
+ putfield test_verify_fail_getfield_basic_type_lookup/f Ljava/lang/String;
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_getfield_basic_type_lookup
+ dup
+ invokespecial test_verify_fail_getfield_basic_type_lookup/<init>()V
+
+ getfield test_verify_fail_getfield_basic_type_lookup/f I
+ ; ERROR: NoSuchFieldError
+
+ invokestatic test_verify_fail_getfield_basic_type_lookup/check(I)V
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_getfield_basic_type_value
+.super java/lang/Object
+
+.field public "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc "test"
+ putfield test_verify_fail_getfield_basic_type_value/f Ljava/lang/String;
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_getfield_basic_type_value
+ dup
+ invokespecial test_verify_fail_getfield_basic_type_value/<init>()V
+
+ getfield test_verify_fail_getfield_basic_type_value/f Ljava/lang/String;
+
+ invokestatic test_verify_fail_getfield_basic_type_value/check(I)V
+ ; ERROR: VerifyError
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putfield_basic_type_instance
+.super java/lang/Object
+
+.field public "intfield" I
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc 567
+ putfield test_verify_fail_putfield_basic_type_instance/intfield I
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ ldc 42
+ istore 1
+
+ new test_verify_fail_putfield_basic_type_instance
+ dup
+ invokespecial test_verify_fail_putfield_basic_type_instance/<init>()V
+
+ pop
+ iconst_1
+
+ iload 1
+ putfield test_verify_fail_putfield_basic_type_instance/intfield I
+ ; ERROR: VerifyError
+ ; ICMD: PUTFIELD
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putfield_basic_type_lookup
+.super java/lang/Object
+
+.field public "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc "test"
+ putfield test_verify_fail_putfield_basic_type_lookup/f Ljava/lang/String;
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_putfield_basic_type_lookup
+ dup
+ invokespecial test_verify_fail_putfield_basic_type_lookup/<init>()V
+
+ iconst_2
+ putfield test_verify_fail_putfield_basic_type_lookup/f I
+ ; ERROR: NoSuchFieldError
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putfield_basic_type_value
+.super java/lang/Object
+
+.field public "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc "test"
+ putfield test_verify_fail_putfield_basic_type_value/f Ljava/lang/String;
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ ldc 42
+ istore 1
+
+ new test_verify_fail_putfield_basic_type_value
+ dup
+ invokespecial test_verify_fail_putfield_basic_type_value/<init>()V
+
+ iload 1
+ putfield test_verify_fail_putfield_basic_type_value/f Ljava/lang/String;
+ ; ERROR: VerifyError
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putfieldconst_basic_type_instance
+.super java/lang/Object
+
+.field public "intfield" I
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc 567
+ putfield test_verify_fail_putfieldconst_basic_type_instance/intfield I
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_putfieldconst_basic_type_instance
+ dup
+ invokespecial test_verify_fail_putfieldconst_basic_type_instance/<init>()V
+
+ pop
+ iconst_1
+
+ iconst_2
+ putfield test_verify_fail_putfieldconst_basic_type_instance/intfield I
+ ; ERROR: VerifyError
+ ; CACAOICMD: PUTFIELDCONST
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putfieldconst_basic_type_value
+.super java/lang/Object
+
+.field public "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ aload_0
+ ldc "test"
+ putfield test_verify_fail_putfieldconst_basic_type_value/f Ljava/lang/String;
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ new test_verify_fail_putfieldconst_basic_type_value
+ dup
+ invokespecial test_verify_fail_putfieldconst_basic_type_value/<init>()V
+
+ ldc 42
+ putfield test_verify_fail_putfieldconst_basic_type_value/f Ljava/lang/String;
+ ; ERROR: VerifyError
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putstatic_basic_type_value
+.super java/lang/Object
+
+.field public static "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ ldc 42
+ istore 1
+
+ iload 1
+ putstatic test_verify_fail_putstatic_basic_type_value/f Ljava/lang/String;
+ ; ERROR: VerifyError
+
+ return
+.end method
+
--- /dev/null
+.class public test_verify_fail_putstaticconst_basic_type_value
+.super java/lang/Object
+
+.field public static "f" Ljava/lang/String;
+
+; ======================================================================
+
+.method public <init>()V
+ .limit stack 2
+
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+
+ return
+.end method
+
+; ======================================================================
+
+.method public static check(I)V
+ .limit locals 1
+ .limit stack 10
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ iload_0
+ invokevirtual java/io/PrintStream/println(I)V
+ return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+
+ ldc 42
+ putstatic test_verify_fail_putstaticconst_basic_type_value/f Ljava/lang/String;
+ ; ERROR: VerifyError
+
+ return
+.end method
+