1 /*
2 * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
3 * Copyright 2012, 2014 SAP AG. All rights reserved.
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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
68 void dispatch_next(TosState state, int step = 0);
69 void dispatch_via (TosState state, address* table);
70 void load_dispatch_table(Register dst, address* table);
71 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false);
72
73 // Called by shared interpreter generator.
74 void dispatch_prolog(TosState state, int step = 0);
75 void dispatch_epilog(TosState state, int step = 0);
76
77 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
78 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
79 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
80 address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
81
82 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
83 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3.
84 void gen_subtype_check(Register sub_klass, Register super_klass,
85 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
86
87 // Load object from cpool->resolved_references(index).
88 void load_resolved_reference_at_index(Register result, Register index);
89
90 void generate_stack_overflow_check_with_compare_and_throw(Register Rmem_frame_size, Register Rscratch1);
91 void load_receiver(Register Rparam_count, Register Rrecv_dst);
92
93 // helpers for expression stack
94 void pop_i( Register r = R17_tos);
95 void pop_ptr( Register r = R17_tos);
96 void pop_l( Register r = R17_tos);
97 void pop_f(FloatRegister f = F15_ftos);
98 void pop_d(FloatRegister f = F15_ftos );
99
100 void push_i( Register r = R17_tos);
101 void push_ptr( Register r = R17_tos);
102 void push_l( Register r = R17_tos);
103 void push_f(FloatRegister f = F15_ftos );
104 void push_d(FloatRegister f = F15_ftos);
105
106 void push_2ptrs(Register first, Register second);
107
108 void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos);
|
1 /*
2 * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
3 * Copyright 2012, 2015 SAP AG. All rights reserved.
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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
68 void dispatch_next(TosState state, int step = 0);
69 void dispatch_via (TosState state, address* table);
70 void load_dispatch_table(Register dst, address* table);
71 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false);
72
73 // Called by shared interpreter generator.
74 void dispatch_prolog(TosState state, int step = 0);
75 void dispatch_epilog(TosState state, int step = 0);
76
77 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
78 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
79 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
80 address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
81
82 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
83 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3.
84 void gen_subtype_check(Register sub_klass, Register super_klass,
85 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
86
87 // Load object from cpool->resolved_references(index).
88 void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);
89
90 void generate_stack_overflow_check_with_compare_and_throw(Register Rmem_frame_size, Register Rscratch1);
91 void load_receiver(Register Rparam_count, Register Rrecv_dst);
92
93 // helpers for expression stack
94 void pop_i( Register r = R17_tos);
95 void pop_ptr( Register r = R17_tos);
96 void pop_l( Register r = R17_tos);
97 void pop_f(FloatRegister f = F15_ftos);
98 void pop_d(FloatRegister f = F15_ftos );
99
100 void push_i( Register r = R17_tos);
101 void push_ptr( Register r = R17_tos);
102 void push_l( Register r = R17_tos);
103 void push_f(FloatRegister f = F15_ftos );
104 void push_d(FloatRegister f = F15_ftos);
105
106 void push_2ptrs(Register first, Register second);
107
108 void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos);
|