Mercurial > hg > graal-jvmci-8
changeset 12172:40ed2dc92a79
Merge
author | adlertz |
---|---|
date | Sun, 01 Sep 2013 19:52:02 +0200 |
parents | 4b078f877b56 (current diff) 8947af8a9cec (diff) |
children | 27ffd1c4537b |
files | |
diffstat | 2 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/oops/method.cpp Sun Sep 01 19:21:05 2013 +0200 +++ b/src/share/vm/oops/method.cpp Sun Sep 01 19:52:02 2013 +0200 @@ -720,11 +720,22 @@ } } +bool Method::is_always_compilable() const { + // Generated adapters must be compiled + if (is_method_handle_intrinsic() && is_synthetic()) { + assert(!is_not_c1_compilable(), "sanity check"); + assert(!is_not_c2_compilable(), "sanity check"); + return true; + } + + return false; +} + bool Method::is_not_compilable(int comp_level) const { if (number_of_breakpoints() > 0) return true; - if (is_method_handle_intrinsic()) - return !is_synthetic(); // the generated adapters must be compiled + if (is_always_compilable()) + return false; if (comp_level == CompLevel_any) return is_not_c1_compilable() || is_not_c2_compilable(); if (is_c1_compile(comp_level)) @@ -736,6 +747,10 @@ // call this when compiler finds that this method is not compilable void Method::set_not_compilable(int comp_level, bool report, const char* reason) { + if (is_always_compilable()) { + // Don't mark a method which should be always compilable + return; + } print_made_not_compilable(comp_level, /*is_osr*/ false, report, reason); if (comp_level == CompLevel_all) { set_not_c1_compilable();
--- a/src/share/vm/oops/method.hpp Sun Sep 01 19:21:05 2013 +0200 +++ b/src/share/vm/oops/method.hpp Sun Sep 01 19:52:02 2013 +0200 @@ -796,6 +796,7 @@ void set_not_osr_compilable_quietly(int comp_level = CompLevel_all) { set_not_osr_compilable(comp_level, false); } + bool is_always_compilable() const; private: void print_made_not_compilable(int comp_level, bool is_osr, bool report, const char* reason);