< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

Print this page
*** 2222,11 ***
    // resolve first time through
    // Class initialization barrier slow path lands here as well.
    __ bind(L_clinit_barrier_slow);
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(temp, code);
!   __ call_VM(noreg, entry, temp);
    // Update registers with resolved info
    __ load_method_entry(cache, index);
  
    __ bind(resolved);
  
--- 2222,11 ---
    // resolve first time through
    // Class initialization barrier slow path lands here as well.
    __ bind(L_clinit_barrier_slow);
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(temp, code);
!   __ call_VM_preemptable(noreg, entry, temp);
    // Update registers with resolved info
    __ load_method_entry(cache, index);
  
    __ bind(resolved);
  

*** 2267,11 ***
    __ jcc(Assembler::equal, resolved);
  
    // resolve first time through
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(temp, code);
!   __ call_VM(noreg, entry, temp);
    // Update registers with resolved info
    __ load_field_entry(cache, index);
  
    __ bind(resolved);
  }
--- 2267,11 ---
    __ jcc(Assembler::equal, resolved);
  
    // resolve first time through
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(temp, code);
!   __ call_VM_preemptable(noreg, entry, temp);
    // Update registers with resolved info
    __ load_field_entry(cache, index);
  
    __ bind(resolved);
  }

*** 2324,11 ***
    Bytecodes::Code code = bytecode();
  
    // Call to the interpreter runtime to resolve invokedynamic
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(method, code); // this is essentially Bytecodes::_invokedynamic
!   __ call_VM(noreg, entry, method);
    // Update registers with resolved info
    __ load_resolved_indy_entry(cache, index);
    __ movptr(method, Address(cache, in_bytes(ResolvedIndyEntry::method_offset())));
  
  #ifdef ASSERT
--- 2324,11 ---
    Bytecodes::Code code = bytecode();
  
    // Call to the interpreter runtime to resolve invokedynamic
    address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
    __ movl(method, code); // this is essentially Bytecodes::_invokedynamic
!   __ call_VM_preemptable(noreg, entry, method);
    // Update registers with resolved info
    __ load_resolved_indy_entry(cache, index);
    __ movptr(method, Address(cache, in_bytes(ResolvedIndyEntry::method_offset())));
  
  #ifdef ASSERT

*** 3632,12 ***
    __ pop(rcx);   // restore stack pointer to what it was when we came in.
    __ bind(slow_case_no_pop);
  
    __ get_constant_pool(c_rarg1);
    __ get_unsigned_2_byte_index_at_bcp(c_rarg2, 1);
!   call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::_new), c_rarg1, c_rarg2);
!    __ verify_oop(rax);
  
    // continue
    __ bind(done);
  }
  
--- 3632,12 ---
    __ pop(rcx);   // restore stack pointer to what it was when we came in.
    __ bind(slow_case_no_pop);
  
    __ get_constant_pool(c_rarg1);
    __ get_unsigned_2_byte_index_at_bcp(c_rarg2, 1);
!   __ call_VM_preemptable(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::_new), c_rarg1, c_rarg2);
!   __ verify_oop(rax);
  
    // continue
    __ bind(done);
  }
  
< prev index next >