1 /* 2 * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. 3 * Copyright (c) 2012, 2016 SAP SE. 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 * 61 void dispatch_via (TosState state, address* table); 62 void load_dispatch_table(Register dst, address* table); 63 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false); 64 65 // Called by shared interpreter generator. 66 void dispatch_prolog(TosState state, int step = 0); 67 void dispatch_epilog(TosState state, int step = 0); 68 69 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls. 70 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1); 71 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp, 72 address entry_point, Register arg_1, Register arg_2, bool check_exception = true); 73 74 // Generate a subtype check: branch to ok_is_subtype if sub_klass is 75 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3. 76 void gen_subtype_check(Register sub_klass, Register super_klass, 77 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype); 78 79 // Load object from cpool->resolved_references(index). 80 void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL); 81 82 void load_receiver(Register Rparam_count, Register Rrecv_dst); 83 84 // helpers for expression stack 85 void pop_i( Register r = R17_tos); 86 void pop_ptr( Register r = R17_tos); 87 void pop_l( Register r = R17_tos); 88 void pop_f(FloatRegister f = F15_ftos); 89 void pop_d(FloatRegister f = F15_ftos ); 90 91 void push_i( Register r = R17_tos); 92 void push_ptr( Register r = R17_tos); 93 void push_l( Register r = R17_tos); 94 void push_f(FloatRegister f = F15_ftos ); 95 void push_d(FloatRegister f = F15_ftos); 96 97 void push_2ptrs(Register first, Register second); 98 99 void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos); 100 void push_d_pop_l(FloatRegister d = F15_ftos, Register l = R17_tos); | 1 /* 2 * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved. 3 * Copyright (c) 2012, 2017 SAP SE. 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 * 61 void dispatch_via (TosState state, address* table); 62 void load_dispatch_table(Register dst, address* table); 63 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false); 64 65 // Called by shared interpreter generator. 66 void dispatch_prolog(TosState state, int step = 0); 67 void dispatch_epilog(TosState state, int step = 0); 68 69 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls. 70 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1); 71 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp, 72 address entry_point, Register arg_1, Register arg_2, bool check_exception = true); 73 74 // Generate a subtype check: branch to ok_is_subtype if sub_klass is 75 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3. 76 void gen_subtype_check(Register sub_klass, Register super_klass, 77 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype); 78 79 // Load object from cpool->resolved_references(index). 80 void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL); 81 82 // load cpool->resolved_klass_at(index) 83 void load_resolved_klass_at_offset(Register Rcpool, Register Roffset, Register Rklass); 84 85 void load_receiver(Register Rparam_count, Register Rrecv_dst); 86 87 // helpers for expression stack 88 void pop_i( Register r = R17_tos); 89 void pop_ptr( Register r = R17_tos); 90 void pop_l( Register r = R17_tos); 91 void pop_f(FloatRegister f = F15_ftos); 92 void pop_d(FloatRegister f = F15_ftos ); 93 94 void push_i( Register r = R17_tos); 95 void push_ptr( Register r = R17_tos); 96 void push_l( Register r = R17_tos); 97 void push_f(FloatRegister f = F15_ftos ); 98 void push_d(FloatRegister f = F15_ftos); 99 100 void push_2ptrs(Register first, Register second); 101 102 void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos); 103 void push_d_pop_l(FloatRegister d = F15_ftos, Register l = R17_tos); |