385 if (VerifyOops) { |
385 if (VerifyOops) { |
386 __ verify_oop(rax); |
386 __ verify_oop(rax); |
387 } |
387 } |
388 |
388 |
389 __ bind(Done); |
389 __ bind(Done); |
|
390 } |
|
391 |
|
392 // Fast path for caching oop constants. |
|
393 // %%% We should use this to handle Class and String constants also. |
|
394 // %%% It will simplify the ldc/primitive path considerably. |
|
395 void TemplateTable::fast_aldc(bool wide) { |
|
396 transition(vtos, atos); |
|
397 |
|
398 if (!EnableMethodHandles) { |
|
399 // We should not encounter this bytecode if !EnableMethodHandles. |
|
400 // The verifier will stop it. However, if we get past the verifier, |
|
401 // this will stop the thread in a reasonable way, without crashing the JVM. |
|
402 __ call_VM(noreg, CAST_FROM_FN_PTR(address, |
|
403 InterpreterRuntime::throw_IncompatibleClassChangeError)); |
|
404 // the call_VM checks for exception, so we should never return here. |
|
405 __ should_not_reach_here(); |
|
406 return; |
|
407 } |
|
408 |
|
409 const Register cache = rcx; |
|
410 const Register index = rdx; |
|
411 |
|
412 resolve_cache_and_index(f1_oop, rax, cache, index, wide ? sizeof(u2) : sizeof(u1)); |
|
413 if (VerifyOops) { |
|
414 __ verify_oop(rax); |
|
415 } |
390 } |
416 } |
391 |
417 |
392 void TemplateTable::ldc2_w() { |
418 void TemplateTable::ldc2_w() { |
393 transition(vtos, vtos); |
419 transition(vtos, vtos); |
394 Label Long, Done; |
420 Label Long, Done; |
2061 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke); |
2087 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke); |
2062 break; |
2088 break; |
2063 case Bytecodes::_invokedynamic: |
2089 case Bytecodes::_invokedynamic: |
2064 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic); |
2090 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic); |
2065 break; |
2091 break; |
|
2092 case Bytecodes::_fast_aldc: |
|
2093 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc); |
|
2094 break; |
|
2095 case Bytecodes::_fast_aldc_w: |
|
2096 entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc); |
|
2097 break; |
2066 default: |
2098 default: |
2067 ShouldNotReachHere(); |
2099 ShouldNotReachHere(); |
2068 break; |
2100 break; |
2069 } |
2101 } |
2070 __ movl(temp, (int) bytecode()); |
2102 __ movl(temp, (int) bytecode()); |