Fri, 12 Feb 2010 10:34:11 -0800
6926048: Improve Zero performance
Summary: Make Zero figure out result types in a similar way to C++ interpreter implementation.
Reviewed-by: kvn
Contributed-by: gbenson@redhat.com
1 /*
2 * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
3 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 *
24 */
26 #include "incls/_precompiled.incl"
27 #include "incls/_interpreter_zero.cpp.incl"
29 address AbstractInterpreterGenerator::generate_slow_signature_handler() {
30 _masm->advance(1);
31 return (address) InterpreterRuntime::slow_signature_handler;
32 }
34 address InterpreterGenerator::generate_math_entry(
35 AbstractInterpreter::MethodKind kind) {
36 if (!InlineIntrinsics)
37 return NULL;
39 Unimplemented();
40 }
42 address InterpreterGenerator::generate_abstract_entry() {
43 return ShouldNotCallThisEntry();
44 }
46 address InterpreterGenerator::generate_method_handle_entry() {
47 return ShouldNotCallThisEntry();
48 }
50 bool AbstractInterpreter::can_be_compiled(methodHandle m) {
51 return true;
52 }
54 int AbstractInterpreter::size_activation(methodOop method,
55 int tempcount,
56 int popframe_extra_args,
57 int moncount,
58 int callee_param_count,
59 int callee_locals,
60 bool is_top_frame) {
61 return layout_activation(method,
62 tempcount,
63 popframe_extra_args,
64 moncount,
65 callee_param_count,
66 callee_locals,
67 (frame*) NULL,
68 (frame*) NULL,
69 is_top_frame);
70 }
72 void Deoptimization::unwind_callee_save_values(frame* f,
73 vframeArray* vframe_array) {
74 }