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; }