< prev index next >

src/hotspot/cpu/x86/interp_masm_x86.cpp

Print this page




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   {


< prev index next >