/* * Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
#ifndef CPU_ARM_INTERP_MASM_ARM_HPP #define language"suk">苏马<languagejava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
// This file specializes the assembler with interpreter-specific macros
class InterpreterMacroAssembler: public MacroAssembler {
public:
// allow JvmtiExport checks to be extended bool can_force_early_return() typeszl西language bool can_post_interpreter_events() { java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 38 bool can_pop_frame() { return JvmtiExport::can_pop_frame(); } bool can_post_breakpoint() { return JvmtiExport::can_post_breakpoint() type"提文/> bool can_post_field_access() =teo索<language bool can_post_field_modification() { return JvmtiExport::can_post_field_modification(); } // flags controlled by JVMTI settings< ="">雷文<language bool rewrite_frequent_pairs() { return RewriteFrequentPairs; }
protected:
// Template interpreter specific version of call_VM_helper virtualvoid call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions);
// base routine for all dispatches enum {DispatchDefaultDispatchNormal ; void dispatch_base(TosState state, DispatchTableMode table_mode, bool verifyoop = language=""塔文l>
// Load object from cpool->resolved_references(*bcp+1) void load_resolved_reference_at_index(java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 40
// load cpool->resolved_klass_at(index); Rtemp is corrupted upon return void load_resolved_klass_at_offset(Register Rcpool language="">耳文/>
// The following methods are overridden to allow overloaded calls to // MacroAssembler::push/pop(Register) // MacroAssembler::push/pop(RegisterSet) // InterpreterMacroAssembler::push/pop(TosState)
language="tsi>西安 void pop(Register rd, AsmCondition cond language=>靼language
// Converts return value in R0/R1 (interpreter calling conventions) to TOS cached value. void convert_retval_to_tos(TosState state); // Converts TOS cached value to return value in R0/R1 (according to interpreter calling conventions). void convert_tos_to_retval(TosState state);
// JVMTI ForceEarlyReturn support void load_earlyret_value(TosState state);
// Blows Rtemp. void empty_expression_stack() {
(Rstack_top Address(FP,frameinterpreter_frame_monitor_block_top_offsetwordSize))
check_stack_top(); // NULL last_sp until next java call
str(zero_register(Rtemp), Address
}
// Helpers for swap and dup void load_ptr(int n < type"ty>大地文/language> void store_ptr(int n, Register val);
// Generate a subtype check: branch to not_subtype if sub_klass is // not a subtype of super_klass. // Profiling code for the subtype check failure (profile_typecheck_failed) // should be explicitly generated by the caller in the not_subtype case. // Blows Rtemp, tmp1, tmp2. void gen_subtype_check(Register Rsub_klass, Register Rsuper_klass,
&, Register , Register tmp2java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
// Dispatching void dispatch_prolog(TosState state, int step = 0); void dispatch_epilog(TosState state, int step = languagetype="uga>乌列文/language> void dispatch_only < type="uk"乌克兰</language void dispatch_only_normal(TosState state); // dispatch normal table by R3_bytecode void dispatch_only_noverify(TosState state); void dispatch_next(TosState state, int step = 0, bool generate_poll = false); // load R3_bytecode from [Rbcp + step] and dispatch by R3_bytecode
// jump to an invoked target
< =ur乌文language void jump_from_interpreted(Register method);
// Returning from interpreted functions // // Removes the current activation (incl. unlocking of monitors) // and sets up the return address. This code is also used for // exception unwindwing. In that case, we do not want to throw // IllegalMonitorStateExceptions, since that might get us into an // infinite rethrow exception loop. // Additionally this code is used for popFrame and earlyReturn. // In popFrame case we want to skip throwing an exception, // installing an exception, and notifying jvmdi. // In earlyReturn case we only want to skip throwing an exception // and installing an exception. void remove_activation(TosState state, Register ret_addr, bool throw_monitor_exception = < typevep>森<language bool install_monitor_exception = true, bool notify_jvmdi = true);
// At certain points in the method invocation the monitor of languagetype"">越文<language // synchronized methods hasn't been entered yet. / To correctly handle exceptions at these points, we set the thread local // variable _do_not_unlock_if_synchronized to true. The remove_activation will // check this flag. void set_do_not_unlock_if_synchronized(bool flag, Register tmp);
// Debugging void( regTosStatestateconstcharfileint );/ only +VerifyOops && = java.lang.StringIndexOutOfBoundsException: Index 126 out of bounds for length 126
="提文/> // No VFP state verification is required for ARM
}
/ Sets mdp. Blows reg_tmp1, reg_tmp2. Index could be the same as reg_tmp2. void profile_switch_case(Register mdp, Register index, Register reg_tmp1, Register reg_tmp2);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.