# HG changeset patch # User stefank # Date 1499247527 0 # Node ID 0eb948496d9b6d476041ae8ba85a53c692ec37b7 # Parent edefffab74e2d2d38d511e304a600e4ee4e05417# Parent a39c091ad97a2b6123a585f6758b50e75610e556 Merge diff -r edefffab74e2 -r 0eb948496d9b hotspot/src/share/vm/code/compiledMethod.cpp --- a/hotspot/src/share/vm/code/compiledMethod.cpp Wed Jul 05 11:33:17 2017 +0200 +++ b/hotspot/src/share/vm/code/compiledMethod.cpp Wed Jul 05 09:38:47 2017 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "code/compiledIC.hpp" +#include "code/compiledMethod.inline.hpp" #include "code/scopeDesc.hpp" #include "code/codeCache.hpp" #include "prims/methodHandles.hpp" @@ -59,15 +60,6 @@ return pd->is_method_handle_invoke(); } -// When using JVMCI the address might be off by the size of a call instruction. -bool CompiledMethod::is_deopt_entry(address pc) { - return pc == deopt_handler_begin() -#if INCLUDE_JVMCI - || (is_compiled_by_jvmci() && pc == (deopt_handler_begin() + NativeCall::instruction_size)) -#endif - ; -} - // Returns a string version of the method state. const char* CompiledMethod::state() const { int state = get_state(); @@ -315,22 +307,6 @@ #endif // !SHARK } -// ----------------------------------------------------------------------------- -// CompiledMethod::get_deopt_original_pc -// -// Return the original PC for the given PC if: -// (a) the given PC belongs to a nmethod and -// (b) it is a deopt PC -address CompiledMethod::get_deopt_original_pc(const frame* fr) { - if (fr->cb() == NULL) return NULL; - - CompiledMethod* cm = fr->cb()->as_compiled_method_or_null(); - if (cm != NULL && cm->is_deopt_pc(fr->pc())) - return cm->get_original_pc(fr); - - return NULL; -} - Method* CompiledMethod::attached_method(address call_instr) { assert(code_contains(call_instr), "not part of the nmethod"); RelocIterator iter(this, call_instr, call_instr + 1); diff -r edefffab74e2 -r 0eb948496d9b hotspot/src/share/vm/code/compiledMethod.inline.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/code/compiledMethod.inline.hpp Wed Jul 05 09:38:47 2017 +0000 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_VM_CODE_COMPILEDMETHOD_INLINE_HPP +#define SHARE_VM_CODE_COMPILEDMETHOD_INLINE_HPP + +#include "code/compiledMethod.hpp" +#include "code/nativeInst.hpp" +#include "runtime/frame.hpp" + +// When using JVMCI the address might be off by the size of a call instruction. +inline bool CompiledMethod::is_deopt_entry(address pc) { + return pc == deopt_handler_begin() +#if INCLUDE_JVMCI + || (is_compiled_by_jvmci() && pc == (deopt_handler_begin() + NativeCall::instruction_size)) +#endif + ; +} + + +// ----------------------------------------------------------------------------- +// CompiledMethod::get_deopt_original_pc +// +// Return the original PC for the given PC if: +// (a) the given PC belongs to a nmethod and +// (b) it is a deopt PC + +inline address CompiledMethod::get_deopt_original_pc(const frame* fr) { + if (fr->cb() == NULL) return NULL; + + CompiledMethod* cm = fr->cb()->as_compiled_method_or_null(); + if (cm != NULL && cm->is_deopt_pc(fr->pc())) + return cm->get_original_pc(fr); + + return NULL; +} + +#endif //SHARE_VM_CODE_COMPILEDMETHOD_INLINE_HPP diff -r edefffab74e2 -r 0eb948496d9b hotspot/src/share/vm/runtime/frame.inline.hpp --- a/hotspot/src/share/vm/runtime/frame.inline.hpp Wed Jul 05 11:33:17 2017 +0200 +++ b/hotspot/src/share/vm/runtime/frame.inline.hpp Wed Jul 05 09:38:47 2017 +0000 @@ -25,6 +25,7 @@ #ifndef SHARE_VM_RUNTIME_FRAME_INLINE_HPP #define SHARE_VM_RUNTIME_FRAME_INLINE_HPP +#include "code/compiledMethod.inline.hpp" #include "interpreter/bytecodeInterpreter.hpp" #include "interpreter/bytecodeInterpreter.inline.hpp" #include "interpreter/interpreter.hpp"