Exemple #1
0
void
frame_get_location(FrameIndex index, SerialNumber *pserial_num,
                   jmethodID *pmethod, jlocation *plocation, jint *plineno)
{
    FrameKey  *pkey;
    FrameInfo *info;
    jint       lineno;

    pkey       = get_pkey(index);
    *pmethod   = pkey->method;
    *plocation = pkey->location;
    info       = get_info(index);
    lineno     = (jint)info->lineno;
    if ( info->lineno_state == LINENUM_UNINITIALIZED ) {
        info->lineno_state = LINENUM_UNAVAILABLE;
        if ( gdata->lineno_in_traces ) {
            if ( pkey->location >= 0 && !isMethodNative(pkey->method) ) {
                lineno = getLineNumber(pkey->method, pkey->location);
                if ( lineno >= 0 ) {
                    info->lineno = (unsigned short)lineno; /* save it */
                    info->lineno_state = LINENUM_AVAILABLE;
                }
            }
        }
    }
    if ( info->lineno_state == LINENUM_UNAVAILABLE ) {
        lineno = -1;
    }
    *plineno     = lineno;
    *pserial_num = info->serial_num;
}
Exemple #2
0
void
frame_get_location(FrameIndex index, jmethodID *pmethod, 
			jlocation *plocation, jint *plineno)
{
    FrameKey  *pkey;
    FrameInfo *info;

    pkey       = get_pkey(index);
    *pmethod   = pkey->method;
    *plocation = pkey->location;
    info       = get_info(index);
    if ( info->lineno == 0 ) {
	if ( gdata->lineno_in_traces ) {
	    if ( pkey->location >= 0 && !isMethodNative(pkey->method) ) {
		info->lineno = getLineNumber(pkey->method, pkey->location);
	    } else { 
		info->lineno = -1;
	    }
	}
    }
    *plineno   = info->lineno;
}