harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From 史成荣 <icyr...@gmail.com>
Subject [drlvm][vmcore]a problem about CodeChunkInfo
Date Wed, 18 Feb 2009 02:03:52 GMT
hi, all.
    I modify the vmcore, but an assert error happened when the method
"si_goto_previous" in stack_iterator_ia32.cpp is executed. The souce code of
method "si_goto_previous" is as follow. The bold line is the error assert
and it is the second condition " si->cci->get_method()" that makes the whole
express false.
    Could anyone tell me why the "_method" field of  "si->cci" is NULL and
when it will happen?
void si_goto_previous(StackIterator* si, bool over_popped)
{
    ASSERT_NO_INTERPRETER
    if (si->cci) {
        TRACE2("si", ("si_goto_previous from ip = %p (%s%s)",
            (void*)si_get_ip(si),
            method_get_name(si->cci->get_method()),
            method_get_descriptor(si->cci->get_method())));
        *assert(si->cci->get_jit() && si->cci->get_method());
*        si->cci->get_jit()->unwind_stack_frame(si->cci->get_method(),
si_get_jit_context(si));
        si->c.is_ip_past = TRUE;
    } else {
        TRACE2("si", ("si_goto_previous from ip = %p (M2N)",
            (void*)si_get_ip(si)));
        if (!si->m2nfl) return;
        si_unwind_from_m2n(si, over_popped);
    }
    Global_Env *vm_env = VM_Global_State::loader_env;
    si->cci = vm_env->vm_methods->find(si_get_ip(si),
si_get_jit_context(si)->is_ip_past);
    if (si->cci) {
        TRACE2("si", ("si_goto_previous to ip = %p (%s%s)",
            (void*)si_get_ip(si),
            method_get_name(si->cci->get_method()),
            method_get_descriptor(si->cci->get_method())));
    } else {
        TRACE2("si", ("si_goto_previous to ip = %p (M2N)",
            (void*)si_get_ip(si)));
    }
}

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message