1946 void InterpreterMacroAssembler::verify_FPU(int stack_depth, TosState state) { 1947 #ifndef _LP64 1948 if ((state == ftos && UseSSE < 1) || 1949 (state == dtos && UseSSE < 2)) { 1950 MacroAssembler::verify_FPU(stack_depth); 1951 } 1952 #endif 1953 } 1954 1955 // Jump if ((*counter_addr += increment) & mask) satisfies the condition. 1956 void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr, 1957 int increment, Address mask, 1958 Register scratch, bool preloaded, 1959 Condition cond, Label* where) { 1960 if (!preloaded) { 1961 movl(scratch, counter_addr); 1962 } 1963 incrementl(scratch, increment); 1964 movl(counter_addr, scratch); 1965 andl(scratch, mask); 1966 jcc(cond, *where); 1967 } 1968 1969 void InterpreterMacroAssembler::notify_method_entry() { 1970 // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to 1971 // track stack depth. If it is possible to enter interp_only_mode we add 1972 // the code to check if the event should be sent. 1973 Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx); 1974 Register rarg = LP64_ONLY(c_rarg1) NOT_LP64(rbx); 1975 if (JvmtiExport::can_post_interpreter_events()) { 1976 Label L; 1977 NOT_LP64(get_thread(rthread);) 1978 movl(rdx, Address(rthread, JavaThread::interp_only_mode_offset())); 1979 testl(rdx, rdx); 1980 jcc(Assembler::zero, L); 1981 call_VM(noreg, CAST_FROM_FN_PTR(address, 1982 InterpreterRuntime::post_method_entry)); 1983 bind(L); 1984 } 1985 1986 { | 1946 void InterpreterMacroAssembler::verify_FPU(int stack_depth, TosState state) { 1947 #ifndef _LP64 1948 if ((state == ftos && UseSSE < 1) || 1949 (state == dtos && UseSSE < 2)) { 1950 MacroAssembler::verify_FPU(stack_depth); 1951 } 1952 #endif 1953 } 1954 1955 // Jump if ((*counter_addr += increment) & mask) satisfies the condition. 1956 void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr, 1957 int increment, Address mask, 1958 Register scratch, bool preloaded, 1959 Condition cond, Label* where) { 1960 if (!preloaded) { 1961 movl(scratch, counter_addr); 1962 } 1963 incrementl(scratch, increment); 1964 movl(counter_addr, scratch); 1965 andl(scratch, mask); 1966 if (where != NULL) { 1967 jcc(cond, *where); 1968 } 1969 } 1970 1971 void InterpreterMacroAssembler::notify_method_entry() { 1972 // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to 1973 // track stack depth. If it is possible to enter interp_only_mode we add 1974 // the code to check if the event should be sent. 1975 Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx); 1976 Register rarg = LP64_ONLY(c_rarg1) NOT_LP64(rbx); 1977 if (JvmtiExport::can_post_interpreter_events()) { 1978 Label L; 1979 NOT_LP64(get_thread(rthread);) 1980 movl(rdx, Address(rthread, JavaThread::interp_only_mode_offset())); 1981 testl(rdx, rdx); 1982 jcc(Assembler::zero, L); 1983 call_VM(noreg, CAST_FROM_FN_PTR(address, 1984 InterpreterRuntime::post_method_entry)); 1985 bind(L); 1986 } 1987 1988 { |