22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.inline.hpp"
27 #include "classfile/stringTable.hpp"
28 #include "code/codeCache.hpp"
29 #include "code/dependencyContext.hpp"
30 #include "compiler/compileBroker.hpp"
31 #include "interpreter/interpreter.hpp"
32 #include "interpreter/oopMapCache.hpp"
33 #include "interpreter/linkResolver.hpp"
34 #include "memory/allocation.inline.hpp"
35 #include "memory/oopFactory.hpp"
36 #include "memory/resourceArea.hpp"
37 #include "oops/objArrayOop.inline.hpp"
38 #include "oops/oop.inline.hpp"
39 #include "oops/typeArrayOop.inline.hpp"
40 #include "prims/methodHandles.hpp"
41 #include "runtime/compilationPolicy.hpp"
42 #include "runtime/javaCalls.hpp"
43 #include "runtime/jniHandles.inline.hpp"
44 #include "runtime/timerTrace.hpp"
45 #include "runtime/reflection.hpp"
46 #include "runtime/signature.hpp"
47 #include "runtime/stubRoutines.hpp"
48 #include "utilities/exceptions.hpp"
49
50
51 /*
52 * JSR 292 reference implementation: method handles
53 * The JDK 7 reference implementation represented method handle
54 * combinations as chains. Each link in the chain had a "vmentry"
55 * field which pointed at a bit of assembly code which performed
56 * one transformation before dispatching to the next link in the chain.
57 *
58 * The current reference implementation pushes almost all code generation
59 * responsibility to (trusted) Java code. A method handle contains a
60 * pointer to its "LambdaForm", which embodies all details of the method
61 * handle's behavior. The LambdaForm is a normal Java object, managed
|
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.inline.hpp"
27 #include "classfile/stringTable.hpp"
28 #include "code/codeCache.hpp"
29 #include "code/dependencyContext.hpp"
30 #include "compiler/compileBroker.hpp"
31 #include "interpreter/interpreter.hpp"
32 #include "interpreter/oopMapCache.hpp"
33 #include "interpreter/linkResolver.hpp"
34 #include "memory/allocation.inline.hpp"
35 #include "memory/oopFactory.hpp"
36 #include "memory/resourceArea.hpp"
37 #include "oops/objArrayOop.inline.hpp"
38 #include "oops/oop.inline.hpp"
39 #include "oops/typeArrayOop.inline.hpp"
40 #include "prims/methodHandles.hpp"
41 #include "runtime/compilationPolicy.hpp"
42 #include "runtime/interfaceSupport.inline.hpp"
43 #include "runtime/javaCalls.hpp"
44 #include "runtime/jniHandles.inline.hpp"
45 #include "runtime/timerTrace.hpp"
46 #include "runtime/reflection.hpp"
47 #include "runtime/signature.hpp"
48 #include "runtime/stubRoutines.hpp"
49 #include "utilities/exceptions.hpp"
50
51
52 /*
53 * JSR 292 reference implementation: method handles
54 * The JDK 7 reference implementation represented method handle
55 * combinations as chains. Each link in the chain had a "vmentry"
56 * field which pointed at a bit of assembly code which performed
57 * one transformation before dispatching to the next link in the chain.
58 *
59 * The current reference implementation pushes almost all code generation
60 * responsibility to (trusted) Java code. A method handle contains a
61 * pointer to its "LambdaForm", which embodies all details of the method
62 * handle's behavior. The LambdaForm is a normal Java object, managed
|