hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
changeset 37152 29e68f1d35bb
parent 36301 cb578d8c6cba
child 38074 8475fdc6dcc3
equal deleted inserted replaced
37053:4eac559b9503 37152:29e68f1d35bb
  1828   // prepare expression stack
  1828   // prepare expression stack
  1829   __ pop(rcx);          // pop return address so expression stack is 'pure'
  1829   __ pop(rcx);          // pop return address so expression stack is 'pure'
  1830   __ push(state);       // save tosca
  1830   __ push(state);       // save tosca
  1831 
  1831 
  1832   // pass tosca registers as arguments & call tracer
  1832   // pass tosca registers as arguments & call tracer
  1833   __ call_VM(noreg, CAST_FROM_FN_PTR(address, SharedRuntime::trace_bytecode), rcx, rax, rdx);
  1833   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::trace_bytecode), rcx, rax, rdx);
  1834   __ mov(rcx, rax);     // make sure return address is not destroyed by pop(state)
  1834   __ mov(rcx, rax);     // make sure return address is not destroyed by pop(state)
  1835   __ pop(state);        // restore tosca
  1835   __ pop(state);        // restore tosca
  1836 
  1836 
  1837   // return
  1837   // return
  1838   __ jmp(rcx);
  1838   __ jmp(rcx);
  1845   __ mov(c_rarg2, rax);  // Pass itos
  1845   __ mov(c_rarg2, rax);  // Pass itos
  1846 #ifdef _WIN64
  1846 #ifdef _WIN64
  1847   __ movflt(xmm3, xmm0); // Pass ftos
  1847   __ movflt(xmm3, xmm0); // Pass ftos
  1848 #endif
  1848 #endif
  1849   __ call_VM(noreg,
  1849   __ call_VM(noreg,
  1850              CAST_FROM_FN_PTR(address, SharedRuntime::trace_bytecode),
  1850              CAST_FROM_FN_PTR(address, InterpreterRuntime::trace_bytecode),
  1851              c_rarg1, c_rarg2, c_rarg3);
  1851              c_rarg1, c_rarg2, c_rarg3);
  1852   __ pop(c_rarg3);
  1852   __ pop(c_rarg3);
  1853   __ pop(c_rarg2);
  1853   __ pop(c_rarg2);
  1854   __ pop(c_rarg1);
  1854   __ pop(c_rarg1);
  1855   __ pop(c_rarg0);
  1855   __ pop(c_rarg0);