interp_masm_x86_64.hpp revision 1426
1426N/A * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/A * CA 95054 USA or visit www.sun.com if you need additional information or 0N/A * have any questions. 0N/A// This file specializes the assember with interpreter-specific macros 0N/A // Interpreter specific version of call_VM_base 0N/A // base routine for all dispatches 304N/A void save_bcp() {
/* not needed in c++ interpreter and harmless */ }
0N/A // Interpreter-specific registers 0N/A // NULL last_sp until next java call 1426N/A // Helpers for swap and dup 0N/A // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls 0N/A // Generate a subtype check: branch to ok_is_subtype if sub_klass is 0N/A // a subtype of super_klass. 0N/A // dispatch via ebx (assume ebx is loaded already) 0N/A // dispatch normal table via ebx (assume ebx is loaded already) 0N/A // load ebx from [esi + step] and dispatch via ebx 0N/A // load ebx from [esi] and dispatch via ebx and table 0N/A // jump to an invoked target 0N/A // Returning from interpreted functions 0N/A // Removes the current activation (incl. unlocking of monitors) 0N/A // and sets up the return address. This code is also used for 0N/A // exception unwindwing. In that case, we do not want to throw 0N/A // IllegalMonitorStateExceptions, since that might get us into an 0N/A // infinite rethrow exception loop. 0N/A // Additionally this code is used for popFrame and earlyReturn. 0N/A // In popFrame case we want to skip throwing an exception, 0N/A // installing an exception, and notifying jvmdi. 0N/A // In earlyReturn case we only want to skip throwing an exception 0N/A // and installing an exception. 0N/A // Interpreter profiling operations 0N/A // only if +VerifyOops && state == atos 0N/A // only if +VerifyFPU && (state == ftos || state == dtos)