Mercurial > hg > graal-compiler
comparison src/share/vm/utilities/accessFlags.hpp @ 6266:1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
6984705: JSR 292 method handle creation should not go through JNI
Summary: remove assembly code for JDK 7 chained method handles
Reviewed-by: jrose, twisti, kvn, mhaupt
Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author | twisti |
---|---|
date | Tue, 24 Jul 2012 10:51:00 -0700 |
parents | 71afdabfd05b |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
53 JVM_ACC_HAS_JSRS = 0x00800000, | 53 JVM_ACC_HAS_JSRS = 0x00800000, |
54 JVM_ACC_IS_OLD = 0x00010000, // RedefineClasses() has replaced this method | 54 JVM_ACC_IS_OLD = 0x00010000, // RedefineClasses() has replaced this method |
55 JVM_ACC_IS_OBSOLETE = 0x00020000, // RedefineClasses() has made method obsolete | 55 JVM_ACC_IS_OBSOLETE = 0x00020000, // RedefineClasses() has made method obsolete |
56 JVM_ACC_IS_PREFIXED_NATIVE = 0x00040000, // JVMTI has prefixed this native method | 56 JVM_ACC_IS_PREFIXED_NATIVE = 0x00040000, // JVMTI has prefixed this native method |
57 | 57 |
58 JVM_MH_INVOKE_BITS // = 0x10001100 // MethodHandle.invoke quasi-native | |
59 = (JVM_ACC_NATIVE | JVM_ACC_SYNTHETIC | JVM_ACC_MONITOR_MATCH), | |
60 | |
61 // klassOop flags | 58 // klassOop flags |
62 JVM_ACC_HAS_MIRANDA_METHODS = 0x10000000, // True if this class has miranda methods in it's vtable | 59 JVM_ACC_HAS_MIRANDA_METHODS = 0x10000000, // True if this class has miranda methods in it's vtable |
63 JVM_ACC_HAS_VANILLA_CONSTRUCTOR = 0x20000000, // True if klass has a vanilla default constructor | 60 JVM_ACC_HAS_VANILLA_CONSTRUCTOR = 0x20000000, // True if klass has a vanilla default constructor |
64 JVM_ACC_HAS_FINALIZER = 0x40000000, // True if klass has a non-empty finalize() method | 61 JVM_ACC_HAS_FINALIZER = 0x40000000, // True if klass has a non-empty finalize() method |
65 JVM_ACC_IS_CLONEABLE = (int)0x80000000,// True if klass supports the Clonable interface | 62 JVM_ACC_IS_CLONEABLE = (int)0x80000000,// True if klass supports the Clonable interface |
130 bool has_checked_exceptions () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; } | 127 bool has_checked_exceptions () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; } |
131 bool has_jsrs () const { return (_flags & JVM_ACC_HAS_JSRS ) != 0; } | 128 bool has_jsrs () const { return (_flags & JVM_ACC_HAS_JSRS ) != 0; } |
132 bool is_old () const { return (_flags & JVM_ACC_IS_OLD ) != 0; } | 129 bool is_old () const { return (_flags & JVM_ACC_IS_OLD ) != 0; } |
133 bool is_obsolete () const { return (_flags & JVM_ACC_IS_OBSOLETE ) != 0; } | 130 bool is_obsolete () const { return (_flags & JVM_ACC_IS_OBSOLETE ) != 0; } |
134 bool is_prefixed_native () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE ) != 0; } | 131 bool is_prefixed_native () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE ) != 0; } |
135 | |
136 // JSR 292: A method of the form MethodHandle.invoke(A...)R method is | |
137 // neither bytecoded nor a JNI native, but rather a fast call through | |
138 // a lightweight method handle object. Because it is not bytecoded, | |
139 // it has the native bit set, but the monitor-match bit is also set | |
140 // to distinguish it from a JNI native (which never has the match bit set). | |
141 // The synthetic bit is also present, because such a method is never | |
142 // explicitly defined in Java code. | |
143 bool is_method_handle_invoke () const { return (_flags & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS; } | |
144 | 132 |
145 // klassOop flags | 133 // klassOop flags |
146 bool has_miranda_methods () const { return (_flags & JVM_ACC_HAS_MIRANDA_METHODS ) != 0; } | 134 bool has_miranda_methods () const { return (_flags & JVM_ACC_HAS_MIRANDA_METHODS ) != 0; } |
147 bool has_vanilla_constructor () const { return (_flags & JVM_ACC_HAS_VANILLA_CONSTRUCTOR) != 0; } | 135 bool has_vanilla_constructor () const { return (_flags & JVM_ACC_HAS_VANILLA_CONSTRUCTOR) != 0; } |
148 bool has_finalizer () const { return (_flags & JVM_ACC_HAS_FINALIZER ) != 0; } | 136 bool has_finalizer () const { return (_flags & JVM_ACC_HAS_FINALIZER ) != 0; } |