src/cpu/zero/vm/sharedRuntime_zero.cpp

Mon, 04 Apr 2011 03:02:00 -0700

author
twisti
date
Mon, 04 Apr 2011 03:02:00 -0700
changeset 2729
e863062e521d
parent 2314
f95d63e2154a
child 3045
a3142bdb6707
permissions
-rw-r--r--

7032458: Zero and Shark fixes
Reviewed-by: twisti
Contributed-by: Gary Benson <gbenson@redhat.com>

never@1445 1 /*
stefank@2314 2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
twisti@2729 3 * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
never@1445 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
never@1445 5 *
never@1445 6 * This code is free software; you can redistribute it and/or modify it
never@1445 7 * under the terms of the GNU General Public License version 2 only, as
never@1445 8 * published by the Free Software Foundation.
never@1445 9 *
never@1445 10 * This code is distributed in the hope that it will be useful, but WITHOUT
never@1445 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
never@1445 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
never@1445 13 * version 2 for more details (a copy is included in the LICENSE file that
never@1445 14 * accompanied this code).
never@1445 15 *
never@1445 16 * You should have received a copy of the GNU General Public License version
never@1445 17 * 2 along with this work; if not, write to the Free Software Foundation,
never@1445 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
never@1445 19 *
trims@1907 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 21 * or visit www.oracle.com if you need additional information or have any
trims@1907 22 * questions.
never@1445 23 *
never@1445 24 */
never@1445 25
stefank@2314 26 #include "precompiled.hpp"
stefank@2314 27 #include "asm/assembler.hpp"
stefank@2314 28 #include "assembler_zero.inline.hpp"
stefank@2314 29 #include "code/debugInfoRec.hpp"
stefank@2314 30 #include "code/icBuffer.hpp"
stefank@2314 31 #include "code/vtableStubs.hpp"
stefank@2314 32 #include "interpreter/interpreter.hpp"
stefank@2314 33 #include "oops/compiledICHolderOop.hpp"
stefank@2314 34 #include "prims/jvmtiRedefineClassesTrace.hpp"
stefank@2314 35 #include "runtime/sharedRuntime.hpp"
stefank@2314 36 #include "runtime/vframeArray.hpp"
stefank@2314 37 #include "vmreg_zero.inline.hpp"
stefank@2314 38 #ifdef COMPILER1
stefank@2314 39 #include "c1/c1_Runtime1.hpp"
stefank@2314 40 #endif
stefank@2314 41 #ifdef COMPILER2
stefank@2314 42 #include "opto/runtime.hpp"
stefank@2314 43 #endif
stefank@2314 44 #ifdef SHARK
stefank@2314 45 #include "compiler/compileBroker.hpp"
stefank@2314 46 #include "shark/sharkCompiler.hpp"
stefank@2314 47 #endif
never@1445 48
never@1445 49 DeoptimizationBlob *SharedRuntime::_deopt_blob;
never@1445 50 SafepointBlob *SharedRuntime::_polling_page_safepoint_handler_blob;
never@1445 51 SafepointBlob *SharedRuntime::_polling_page_return_handler_blob;
never@1445 52 RuntimeStub *SharedRuntime::_wrong_method_blob;
never@1445 53 RuntimeStub *SharedRuntime::_ic_miss_blob;
never@1445 54 RuntimeStub *SharedRuntime::_resolve_opt_virtual_call_blob;
never@1445 55 RuntimeStub *SharedRuntime::_resolve_virtual_call_blob;
never@1445 56 RuntimeStub *SharedRuntime::_resolve_static_call_blob;
never@1445 57
never@1445 58 int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
never@1445 59 VMRegPair *regs,
never@1445 60 int total_args_passed,
never@1445 61 int is_outgoing) {
never@1445 62 return 0;
never@1445 63 }
never@1445 64
never@1445 65 AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(
never@1445 66 MacroAssembler *masm,
never@1445 67 int total_args_passed,
never@1445 68 int comp_args_on_stack,
never@1445 69 const BasicType *sig_bt,
twisti@1632 70 const VMRegPair *regs,
twisti@1632 71 AdapterFingerPrint *fingerprint) {
twisti@1632 72 return AdapterHandlerLibrary::new_entry(
twisti@1632 73 fingerprint,
never@1445 74 ShouldNotCallThisStub(),
never@1445 75 ShouldNotCallThisStub(),
never@1445 76 ShouldNotCallThisStub());
never@1445 77 }
never@1445 78
never@1445 79 nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
never@1445 80 methodHandle method,
twisti@2729 81 int compile_id,
twisti@2729 82 int total_args_passed,
twisti@2729 83 int max_arg,
twisti@2729 84 BasicType *sig_bt,
twisti@2729 85 VMRegPair *regs,
never@1445 86 BasicType ret_type) {
twisti@1513 87 #ifdef SHARK
twisti@1513 88 return SharkCompiler::compiler()->generate_native_wrapper(masm,
twisti@1513 89 method,
twisti@2729 90 compile_id,
twisti@2729 91 sig_bt,
twisti@1513 92 ret_type);
twisti@1513 93 #else
never@1445 94 ShouldNotCallThis();
twisti@1513 95 #endif // SHARK
never@1445 96 }
never@1445 97
never@1445 98 int Deoptimization::last_frame_adjust(int callee_parameters,
never@1445 99 int callee_locals) {
never@1445 100 return 0;
never@1445 101 }
never@1445 102
never@1445 103 uint SharedRuntime::out_preserve_stack_slots() {
never@1445 104 ShouldNotCallThis();
never@1445 105 }
never@1445 106
never@1445 107 static RuntimeStub* generate_empty_runtime_stub(const char* name) {
never@1445 108 CodeBuffer buffer(name, 0, 0);
never@1445 109 return RuntimeStub::new_runtime_stub(name, &buffer, 0, 0, NULL, false);
never@1445 110 }
never@1445 111
never@1445 112 static SafepointBlob* generate_empty_safepoint_blob() {
never@1445 113 CodeBuffer buffer("handler_blob", 0, 0);
never@1445 114 return SafepointBlob::create(&buffer, NULL, 0);
never@1445 115 }
never@1445 116
never@1445 117 void SharedRuntime::generate_stubs() {
never@1445 118 _wrong_method_blob =
never@1445 119 generate_empty_runtime_stub("wrong_method_stub");
never@1445 120 _ic_miss_blob =
never@1445 121 generate_empty_runtime_stub("ic_miss_stub");
never@1445 122 _resolve_opt_virtual_call_blob =
never@1445 123 generate_empty_runtime_stub("resolve_opt_virtual_call");
never@1445 124 _resolve_virtual_call_blob =
never@1445 125 generate_empty_runtime_stub("resolve_virtual_call");
never@1445 126 _resolve_static_call_blob =
never@1445 127 generate_empty_runtime_stub("resolve_static_call");
never@1445 128
never@1445 129 _polling_page_safepoint_handler_blob =
never@1445 130 generate_empty_safepoint_blob();
never@1445 131 _polling_page_return_handler_blob =
never@1445 132 generate_empty_safepoint_blob();
never@1445 133 }
never@1445 134
never@1445 135 int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
never@1445 136 VMRegPair *regs,
never@1445 137 int total_args_passed) {
never@1445 138 ShouldNotCallThis();
never@1445 139 }

mercurial