comparison src/cpu/x86/vm/templateInterpreter_x86_64.cpp @ 8883:b9a918201d47

Merge with hsx25
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sat, 06 Apr 2013 20:04:06 +0200
parents 6b6cbd8b8914 e961c11b85fe
children ff5a32117e02
comparison
equal deleted inserted replaced
8660:d47b52b0ff68 8883:b9a918201d47
1121 1121
1122 // Call the native method. 1122 // Call the native method.
1123 __ call(rax); 1123 __ call(rax);
1124 // result potentially in rax or xmm0 1124 // result potentially in rax or xmm0
1125 1125
1126 // Depending on runtime options, either restore the MXCSR 1126 // Verify or restore cpu control state after JNI call
1127 // register after returning from the JNI Call or verify that 1127 __ restore_cpu_control_state_after_jni();
1128 // it wasn't changed during -Xcheck:jni.
1129 if (RestoreMXCSROnJNICalls) {
1130 __ ldmxcsr(ExternalAddress(StubRoutines::x86::mxcsr_std()));
1131 }
1132 else if (CheckJNICalls) {
1133 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::x86::verify_mxcsr_entry())));
1134 }
1135 1128
1136 // NOTE: The order of these pushes is known to frame::interpreter_frame_result 1129 // NOTE: The order of these pushes is known to frame::interpreter_frame_result
1137 // in order to extract the result of a method call. If the order of these 1130 // in order to extract the result of a method call. If the order of these
1138 // pushes change or anything else is added to the stack then the code in 1131 // pushes change or anything else is added to the stack then the code in
1139 // interpreter_frame_result must also change. 1132 // interpreter_frame_result must also change.
1641 int caller_actual_parameters, 1634 int caller_actual_parameters,
1642 int callee_param_count, 1635 int callee_param_count,
1643 int callee_locals, 1636 int callee_locals,
1644 frame* caller, 1637 frame* caller,
1645 frame* interpreter_frame, 1638 frame* interpreter_frame,
1646 bool is_top_frame) { 1639 bool is_top_frame,
1640 bool is_bottom_frame) {
1647 // Note: This calculation must exactly parallel the frame setup 1641 // Note: This calculation must exactly parallel the frame setup
1648 // in AbstractInterpreterGenerator::generate_method_entry. 1642 // in AbstractInterpreterGenerator::generate_method_entry.
1649 // If interpreter_frame!=NULL, set up the method, locals, and monitors. 1643 // If interpreter_frame!=NULL, set up the method, locals, and monitors.
1650 // The frame interpreter_frame, if not NULL, is guaranteed to be the 1644 // The frame interpreter_frame, if not NULL, is guaranteed to be the
1651 // right size, as determined by a previous call to this method. 1645 // right size, as determined by a previous call to this method.