Mercurial > hg > truffle
comparison src/share/vm/classfile/javaClasses.cpp @ 1507:cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
Summary: split MethodHandle.invoke into invokeExact and invokeGeneric; also clean up JVM-to-Java interfaces
Reviewed-by: twisti
author | jrose |
---|---|
date | Sat, 01 May 2010 02:42:18 -0700 |
parents | 6484c4ee11cb |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1506:2338d41fbd81 | 1507:cd5dbf694d45 |
---|---|
2444 } | 2444 } |
2445 | 2445 |
2446 | 2446 |
2447 // Support for java_dyn_CallSite | 2447 // Support for java_dyn_CallSite |
2448 | 2448 |
2449 int java_dyn_CallSite::_type_offset; | |
2450 int java_dyn_CallSite::_target_offset; | 2449 int java_dyn_CallSite::_target_offset; |
2451 int java_dyn_CallSite::_vmmethod_offset; | 2450 int java_dyn_CallSite::_caller_method_offset; |
2451 int java_dyn_CallSite::_caller_bci_offset; | |
2452 | 2452 |
2453 void java_dyn_CallSite::compute_offsets() { | 2453 void java_dyn_CallSite::compute_offsets() { |
2454 if (!EnableInvokeDynamic) return; | 2454 if (!EnableInvokeDynamic) return; |
2455 klassOop k = SystemDictionary::CallSite_klass(); | 2455 klassOop k = SystemDictionary::CallSite_klass(); |
2456 if (k != NULL) { | 2456 if (k != NULL) { |
2457 compute_offset(_type_offset, k, vmSymbols::type_name(), vmSymbols::java_dyn_MethodType_signature(), true); | 2457 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature()); |
2458 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature(), true); | 2458 compute_offset(_caller_method_offset, k, vmSymbols::vmmethod_name(), vmSymbols::sun_dyn_MemberName_signature()); |
2459 compute_offset(_vmmethod_offset, k, vmSymbols::vmmethod_name(), vmSymbols::object_signature(), true); | 2459 compute_offset(_caller_bci_offset, k, vmSymbols::vmindex_name(), vmSymbols::int_signature()); |
2460 } | 2460 } |
2461 } | |
2462 | |
2463 oop java_dyn_CallSite::type(oop site) { | |
2464 return site->obj_field(_type_offset); | |
2465 } | 2461 } |
2466 | 2462 |
2467 oop java_dyn_CallSite::target(oop site) { | 2463 oop java_dyn_CallSite::target(oop site) { |
2468 return site->obj_field(_target_offset); | 2464 return site->obj_field(_target_offset); |
2469 } | 2465 } |
2470 | 2466 |
2471 void java_dyn_CallSite::set_target(oop site, oop target) { | 2467 void java_dyn_CallSite::set_target(oop site, oop target) { |
2472 site->obj_field_put(_target_offset, target); | 2468 site->obj_field_put(_target_offset, target); |
2473 } | 2469 } |
2474 | 2470 |
2475 oop java_dyn_CallSite::vmmethod(oop site) { | 2471 oop java_dyn_CallSite::caller_method(oop site) { |
2476 return site->obj_field(_vmmethod_offset); | 2472 return site->obj_field(_caller_method_offset); |
2477 } | 2473 } |
2478 | 2474 |
2479 void java_dyn_CallSite::set_vmmethod(oop site, oop ref) { | 2475 void java_dyn_CallSite::set_caller_method(oop site, oop ref) { |
2480 site->obj_field_put(_vmmethod_offset, ref); | 2476 site->obj_field_put(_caller_method_offset, ref); |
2477 } | |
2478 | |
2479 jint java_dyn_CallSite::caller_bci(oop site) { | |
2480 return site->int_field(_caller_bci_offset); | |
2481 } | |
2482 | |
2483 void java_dyn_CallSite::set_caller_bci(oop site, jint bci) { | |
2484 site->int_field_put(_caller_bci_offset, bci); | |
2481 } | 2485 } |
2482 | 2486 |
2483 | 2487 |
2484 // Support for java_security_AccessControlContext | 2488 // Support for java_security_AccessControlContext |
2485 | 2489 |