float get_float_parameter( StackFrame *stack, SimpleConstantPool *p)
{
    float value = 0;
    if ( is_ref_entry(stack) ) {
        int index = popInt(stack);
        value = get_float_from_constant_pool(p, index);
    } else {
        value = popFloat(stack);
    }
    return value;
}
long long get_long_parameter( StackFrame *stack, SimpleConstantPool *p)
{
    long long value = 0;
    if ( is_ref_entry(stack) ) {
        int index = popInt(stack);
        value = get_long_from_constant_pool(p, index);
    } else {
        value = popLong(stack);
    }
    return value;
}
Example #3
0
static double get_double_parameter(StackFrame *stack, SimpleConstantPool *p)
{
    double value = 0.0f;
    if (is_ref_entry(stack)) {
        int index = popInt(stack);
        value = get_double_from_constant_pool(p, index);
#if SIMPLE_JVM_DEBUG
        printf("index %d\n", index);
        printf("get value from constant pool = %f\n", value);
#endif
    } else {
        value = popDouble(stack);
#if SIMPLE_JVM_DEBUG
        printf("get value from stack = %f\n", value);
#endif
    }
    return value;
}