Index: vm/jitrino/src/jet/cg_meth.cpp =================================================================== --- vm/jitrino/src/jet/cg_meth.cpp (revision 577140) +++ vm/jitrino/src/jet/cg_meth.cpp (working copy) @@ -768,8 +768,8 @@ // on registers. if (opcod != OPCODE_INVOKEINTERFACE && meth != NULL) { stackFix = gen_stack_to_args(true, cs, 0); + vpark(); gen_gc_stack(-1, true); - vpark(); } // // Check for null here - we just spilled all the args and @@ -814,8 +814,8 @@ //2. call java method stackFix = gen_stack_to_args(true, cs, 0); + vpark(); gen_gc_stack(-1, true); - vpark(); AR gr = valloc(iplatf); ld(jobj, gr, gr_ret); //load indirect addr @@ -843,8 +843,8 @@ rlock(gr_ret); //st(jobj, gr_ret, m_base, voff(m_stack.scratch())); stackFix = gen_stack_to_args(true, cs, 0); + vpark(); gen_gc_stack(-1, true); - vpark(); unsigned offset = method_get_offset(meth); //ld(jobj, gr_ret, m_base, voff(m_stack.scratch())); runlock(gr_ret); Index: vm/jitrino/src/jet/bcproc.cpp =================================================================== --- vm/jitrino/src/jet/bcproc.cpp (revision 577140) +++ vm/jitrino/src/jet/bcproc.cpp (working copy) @@ -91,6 +91,9 @@ // Do not allow values to cross instruction boundaries // on a temporary registers vpark(); + // We must have GC info at every bytecode instruction + // to support possible enumeration at a breakpoint + gen_gc_stack(-1, false); } const bool has_fall_through = !jinst.is_set(OPF_DEAD_END); Index: vm/jitrino/src/jet/rt.cpp =================================================================== --- vm/jitrino/src/jet/rt.cpp (revision 577140) +++ vm/jitrino/src/jet/rt.cpp (working copy) @@ -267,8 +267,8 @@ void rt_enum(JIT_Handle jit, Method_Handle method, GC_Enumeration_Handle henum, JitFrameContext * context) { - if (!context->is_ip_past) { - // The IP pointts directly to the instructions - this must be a + if (!context->is_ip_past && !StaticConsts::g_jvmtiMode) { + // The IP points directly to the instructions - this must be a // hardware NPE happened. Check the presumption: assert(method_get_num_handlers(method) == 0); #ifdef _DEBUG