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