src/share/vm/runtime/compilationPolicy.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/runtime/compilationPolicy.cpp	Fri Jan 15 11:50:53 2010
--- new/src/share/vm/runtime/compilationPolicy.cpp	Fri Jan 15 11:50:53 2010

*** 1,7 **** --- 1,7 ---- /* ! * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. ! * Copyright 2000-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 72,81 **** --- 72,91 ---- // Returns true if m is allowed to be compiled bool CompilationPolicy::canBeCompiled(methodHandle m) { if (m->is_abstract()) return false; if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false; + // Math intrinsics should never be compiled as this can lead to + // monotonicity problems because the interpreter will prefer the + // compiled code to the intrinsic version. This can't happen in + // production because the invocation counter can't be incremented + // but we shouldn't expose the system to this problem in testing + // modes. + if (!AbstractInterpreter::can_be_compiled(m)) { + return false; + } + return !m->is_not_compilable(); } #ifndef PRODUCT void CompilationPolicy::print_time() {

src/share/vm/runtime/compilationPolicy.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File