compiledIC_zero.cpp revision 9319:3b0fdfa8029c
10SN/A/*
21520SN/A * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
30SN/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
40SN/A *
50SN/A * This code is free software; you can redistribute it and/or modify it
60SN/A * under the terms of the GNU General Public License version 2 only, as
7553SN/A * published by the Free Software Foundation.
80SN/A *
9553SN/A * This code is distributed in the hope that it will be useful, but WITHOUT
100SN/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
110SN/A * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
120SN/A * version 2 for more details (a copy is included in the LICENSE file that
130SN/A * accompanied this code).
140SN/A *
150SN/A * You should have received a copy of the GNU General Public License version
160SN/A * 2 along with this work; if not, write to the Free Software Foundation,
170SN/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
180SN/A *
190SN/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
200SN/A * or visit www.oracle.com if you need additional information or have any
21553SN/A * questions.
22553SN/A *
23553SN/A */
240SN/A
250SN/A#include "precompiled.hpp"
263386Sjjg#include "classfile/systemDictionary.hpp"
270SN/A#include "code/codeCache.hpp"
28196SN/A#include "code/compiledIC.hpp"
29196SN/A#include "code/icBuffer.hpp"
30196SN/A#include "code/nmethod.hpp"
310SN/A#include "code/vtableStubs.hpp"
320SN/A#include "interpreter/interpreter.hpp"
331442SN/A#include "interpreter/linkResolver.hpp"
34196SN/A#include "memory/metadataFactory.hpp"
35196SN/A#include "memory/oopFactory.hpp"
36196SN/A#include "oops/method.hpp"
370SN/A#include "oops/oop.inline.hpp"
380SN/A#include "oops/symbol.hpp"
390SN/A#include "runtime/icache.hpp"
400SN/A#include "runtime/sharedRuntime.hpp"
410SN/A#include "runtime/stubRoutines.hpp"
420SN/A#include "utilities/events.hpp"
431358SN/A
441358SN/A
451358SN/A// Release the CompiledICHolder* associated with this call site is there is one.
461358SN/Avoid CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
471358SN/A  // This call site might have become stale so inspect it carefully.
480SN/A  NativeCall* call = nativeCall_at(call_site->addr());
490SN/A  if (is_icholder_entry(call->destination())) {
500SN/A    NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
510SN/A    InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
520SN/A  }
530SN/A}
543445Sjjg
550SN/Abool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
560SN/A  // This call site might have become stale so inspect it carefully.
570SN/A  NativeCall* call = nativeCall_at(call_site->addr());
580SN/A  return is_icholder_entry(call->destination());
590SN/A}
600SN/A
610SN/A// ----------------------------------------------------------------------------
620SN/A
631442SN/Aaddress CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf, address mark) {
641442SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
650SN/A  return NULL;
660SN/A}
670SN/A
680SN/Aint CompiledStaticCall::to_interp_stub_size() {
690SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
700SN/A  return 0;
710SN/A}
721442SN/A
730SN/A// Relocation entries for call stub, compiled java to interpreter.
740SN/Aint CompiledStaticCall::reloc_to_interp_stub() {
750SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
760SN/A  return 0;
770SN/A}
780SN/A
790SN/Avoid CompiledStaticCall::set_to_interpreted(methodHandle callee, address entry) {
800SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
810SN/A}
820SN/A
830SN/Avoid CompiledStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
840SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
850SN/A}
860SN/A
870SN/A//-----------------------------------------------------------------------------
880SN/A// Non-product mode code.
890SN/A#ifndef PRODUCT
900SN/A
910SN/Avoid CompiledStaticCall::verify() {
920SN/A  ShouldNotReachHere(); // Only needed for COMPILER2.
930SN/A}
940SN/A
950SN/A#endif // !PRODUCT
960SN/A