Mercurial > hg > graal-jvmci-8
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. |