1.1 --- a/src/share/vm/code/nmethod.hpp Mon Jan 04 07:04:46 2010 -0800 1.2 +++ b/src/share/vm/code/nmethod.hpp Mon Jan 04 18:38:08 2010 +0100 1.3 @@ -81,18 +81,19 @@ 1.4 1.5 struct nmFlags { 1.6 friend class VMStructs; 1.7 - unsigned int version:8; // version number (0 = first version) 1.8 - unsigned int level:4; // optimization level 1.9 - unsigned int age:4; // age (in # of sweep steps) 1.10 + unsigned int version:8; // version number (0 = first version) 1.11 + unsigned int level:4; // optimization level 1.12 + unsigned int age:4; // age (in # of sweep steps) 1.13 1.14 - unsigned int state:2; // {alive, zombie, unloaded) 1.15 + unsigned int state:2; // {alive, zombie, unloaded) 1.16 1.17 - unsigned int isUncommonRecompiled:1; // recompiled because of uncommon trap? 1.18 - unsigned int isToBeRecompiled:1; // to be recompiled as soon as it matures 1.19 - unsigned int hasFlushedDependencies:1; // Used for maintenance of dependencies 1.20 - unsigned int markedForReclamation:1; // Used by NMethodSweeper 1.21 + unsigned int isUncommonRecompiled:1; // recompiled because of uncommon trap? 1.22 + unsigned int isToBeRecompiled:1; // to be recompiled as soon as it matures 1.23 + unsigned int hasFlushedDependencies:1; // Used for maintenance of dependencies 1.24 + unsigned int markedForReclamation:1; // Used by NMethodSweeper 1.25 1.26 - unsigned int has_unsafe_access:1; // May fault due to unsafe access. 1.27 + unsigned int has_unsafe_access:1; // May fault due to unsafe access. 1.28 + unsigned int has_method_handle_invokes:1; // Has this method MethodHandle invokes? 1.29 1.30 void clear(); 1.31 }; 1.32 @@ -409,6 +410,9 @@ 1.33 bool has_unsafe_access() const { return flags.has_unsafe_access; } 1.34 void set_has_unsafe_access(bool z) { flags.has_unsafe_access = z; } 1.35 1.36 + bool has_method_handle_invokes() const { return flags.has_method_handle_invokes; } 1.37 + void set_has_method_handle_invokes(bool z) { flags.has_method_handle_invokes = z; } 1.38 + 1.39 int level() const { return flags.level; } 1.40 void set_level(int newLevel) { check_safepoint(); flags.level = newLevel; } 1.41 1.42 @@ -541,6 +545,9 @@ 1.43 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); } 1.44 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; } 1.45 1.46 + // MethodHandle 1.47 + bool is_method_handle_return(address return_pc); 1.48 + 1.49 // jvmti support: 1.50 void post_compiled_method_load_event(); 1.51