Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/cppInterpreter_x86.cpp @ 14676:d3f14809b051
8036146: make CPP interpreter build again
Summary: fix build of CPP interpreter on x86 and sparc
Reviewed-by: kvn
author | roland |
---|---|
date | Wed, 05 Mar 2014 15:14:25 +0100 |
parents | bd3237e0e18d |
children | 92aa6797d639 |
comparison
equal
deleted
inserted
replaced
14675:bb4db06fd36f | 14676:d3f14809b051 |
---|---|
572 Label done; | 572 Label done; |
573 const Address invocation_counter(rax, | 573 const Address invocation_counter(rax, |
574 MethodCounters::invocation_counter_offset() + | 574 MethodCounters::invocation_counter_offset() + |
575 InvocationCounter::counter_offset()); | 575 InvocationCounter::counter_offset()); |
576 const Address backedge_counter (rax, | 576 const Address backedge_counter (rax, |
577 MethodCounter::backedge_counter_offset() + | 577 MethodCounters::backedge_counter_offset() + |
578 InvocationCounter::counter_offset()); | 578 InvocationCounter::counter_offset()); |
579 | 579 |
580 __ get_method_counters(rbx, rax, done); | 580 __ get_method_counters(rbx, rax, done); |
581 | 581 |
582 if (ProfileInterpreter) { | 582 if (ProfileInterpreter) { |
980 // rsi/r13: previous interpreter state (if called from C++ interpreter) must preserve | 980 // rsi/r13: previous interpreter state (if called from C++ interpreter) must preserve |
981 // in any case. If called via c1/c2/call_stub rsi/r13 is junk (to use) but harmless | 981 // in any case. If called via c1/c2/call_stub rsi/r13 is junk (to use) but harmless |
982 // to save/restore. | 982 // to save/restore. |
983 address entry_point = __ pc(); | 983 address entry_point = __ pc(); |
984 | 984 |
985 const Address constMethod (rbx, Method::const_offset()); | |
986 const Address access_flags (rbx, Method::access_flags_offset()); | 985 const Address access_flags (rbx, Method::access_flags_offset()); |
987 const Address size_of_parameters(rcx, ConstMethod::size_of_parameters_offset()); | |
988 | 986 |
989 // rsi/r13 == state/locals rdi == prevstate | 987 // rsi/r13 == state/locals rdi == prevstate |
990 const Register locals = rdi; | 988 const Register locals = rdi; |
991 | 989 |
992 // get parameter size (always needed) | 990 // get parameter size (always needed) |
993 __ movptr(rcx, constMethod); | 991 { |
994 __ load_unsigned_short(rcx, size_of_parameters); | 992 const Address constMethod (rbx, Method::const_offset()); |
993 const Address size_of_parameters(rcx, ConstMethod::size_of_parameters_offset()); | |
994 __ movptr(rcx, constMethod); | |
995 __ load_unsigned_short(rcx, size_of_parameters); | |
996 } | |
995 | 997 |
996 // rbx: Method* | 998 // rbx: Method* |
997 // rcx: size of parameters | 999 // rcx: size of parameters |
998 __ pop(rax); // get return address | 1000 __ pop(rax); // get return address |
999 // for natives the size of locals is zero | 1001 // for natives the size of locals is zero |
1109 | 1111 |
1110 // work registers | 1112 // work registers |
1111 const Register method = rbx; | 1113 const Register method = rbx; |
1112 const Register thread = LP64_ONLY(r15_thread) NOT_LP64(rdi); | 1114 const Register thread = LP64_ONLY(r15_thread) NOT_LP64(rdi); |
1113 const Register t = InterpreterRuntime::SignatureHandlerGenerator::temp(); // rcx|rscratch1 | 1115 const Register t = InterpreterRuntime::SignatureHandlerGenerator::temp(); // rcx|rscratch1 |
1114 const Address constMethod (method, Method::const_offset()); | 1116 |
1115 const Address size_of_parameters(t, ConstMethod::size_of_parameters_offset()); | 1117 // allocate space for parameters |
1116 | |
1117 // allocate space for parameters | |
1118 __ movptr(method, STATE(_method)); | 1118 __ movptr(method, STATE(_method)); |
1119 __ verify_method_ptr(method); | 1119 __ verify_method_ptr(method); |
1120 __ movptr(t, constMethod); | 1120 { |
1121 __ load_unsigned_short(t, size_of_parameters); | 1121 const Address constMethod (method, Method::const_offset()); |
1122 const Address size_of_parameters(t, ConstMethod::size_of_parameters_offset()); | |
1123 __ movptr(t, constMethod); | |
1124 __ load_unsigned_short(t, size_of_parameters); | |
1125 } | |
1122 __ shll(t, 2); | 1126 __ shll(t, 2); |
1123 #ifdef _LP64 | 1127 #ifdef _LP64 |
1124 __ subptr(rsp, t); | 1128 __ subptr(rsp, t); |
1125 __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows | 1129 __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows |
1126 __ andptr(rsp, -16); // must be 16 byte boundary (see amd64 ABI) | 1130 __ andptr(rsp, -16); // must be 16 byte boundary (see amd64 ABI) |
2219 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; | 2223 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; |
2220 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; | 2224 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; |
2221 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; | 2225 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; |
2222 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; | 2226 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; |
2223 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; | 2227 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; |
2224 case Interpreter::method_handle : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break; | |
2225 | 2228 |
2226 case Interpreter::java_lang_math_sin : // fall thru | 2229 case Interpreter::java_lang_math_sin : // fall thru |
2227 case Interpreter::java_lang_math_cos : // fall thru | 2230 case Interpreter::java_lang_math_cos : // fall thru |
2228 case Interpreter::java_lang_math_tan : // fall thru | 2231 case Interpreter::java_lang_math_tan : // fall thru |
2229 case Interpreter::java_lang_math_abs : // fall thru | 2232 case Interpreter::java_lang_math_abs : // fall thru |
2230 case Interpreter::java_lang_math_log : // fall thru | 2233 case Interpreter::java_lang_math_log : // fall thru |
2231 case Interpreter::java_lang_math_log10 : // fall thru | 2234 case Interpreter::java_lang_math_log10 : // fall thru |
2232 case Interpreter::java_lang_math_sqrt : entry_point = ((InterpreterGenerator*)this)->generate_math_entry(kind); break; | 2235 case Interpreter::java_lang_math_sqrt : // fall thru |
2236 case Interpreter::java_lang_math_pow : // fall thru | |
2237 case Interpreter::java_lang_math_exp : // fall thru | |
2238 entry_point = ((InterpreterGenerator*)this)->generate_math_entry(kind); break; | |
2233 case Interpreter::java_lang_ref_reference_get | 2239 case Interpreter::java_lang_ref_reference_get |
2234 : entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); break; | 2240 : entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); break; |
2235 default : ShouldNotReachHere(); break; | 2241 default : ShouldNotReachHere(); break; |
2236 } | 2242 } |
2237 | 2243 |
2449 // BytecodeInterpreter::pd_layout_interpreterState(cur_state, interpreter_return_address, interpreter_frame->fp()); | 2455 // BytecodeInterpreter::pd_layout_interpreterState(cur_state, interpreter_return_address, interpreter_frame->fp()); |
2450 } | 2456 } |
2451 return frame_size/BytesPerWord; | 2457 return frame_size/BytesPerWord; |
2452 } | 2458 } |
2453 | 2459 |
2460 bool AbstractInterpreter::can_be_compiled(methodHandle m) { | |
2461 switch (method_kind(m)) { | |
2462 case Interpreter::java_lang_math_sin : // fall thru | |
2463 case Interpreter::java_lang_math_cos : // fall thru | |
2464 case Interpreter::java_lang_math_tan : // fall thru | |
2465 case Interpreter::java_lang_math_abs : // fall thru | |
2466 case Interpreter::java_lang_math_log : // fall thru | |
2467 case Interpreter::java_lang_math_log10 : // fall thru | |
2468 case Interpreter::java_lang_math_sqrt : // fall thru | |
2469 case Interpreter::java_lang_math_pow : // fall thru | |
2470 case Interpreter::java_lang_math_exp : | |
2471 return false; | |
2472 default: | |
2473 return true; | |
2474 } | |
2475 } | |
2476 | |
2477 | |
2454 #endif // CC_INTERP (all) | 2478 #endif // CC_INTERP (all) |