src/share/vm/runtime/stackValue.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/runtime/stackValue.cpp	Thu Feb 18 19:05:39 2010
--- new/src/share/vm/runtime/stackValue.cpp	Thu Feb 18 19:05:39 2010

*** 56,74 **** --- 56,68 ---- // a stack slot (jlong/jdouble) that we capture the proper part // of the value for the stack slot in question. // switch( loc.type() ) { case Location::float_in_dbl: { // Holds a float in a double register? // The callee has no clue whether the register holds a float, // double or is unused. He always saves a double. Here we know // a double was saved, but we only want a float back. Narrow the // saved double to the float that the JVM wants. assert( loc.is_register(), "floats always saved to stack in 1 word" ); union { intptr_t p; jfloat jf; } value; ! value.p = (intptr_t) CONST64(0xDEADDEAFDEADDEAF); value.jf = (jfloat) *(jdouble*) value_addr; return new StackValue(value.p); // 64-bit high half is stack junk + // Call platform specific function defined in sharedRuntime_.cpp. ! return create_float_stack_value(value_addr); } case Location::int_in_long: { // Holds an int in a long register? // The callee has no clue whether the register holds an int, // long or is unused. He always saves a long. Here we know // a long was saved, but we only want an int back. Narrow the

src/share/vm/runtime/stackValue.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File