hotspot/src/cpu/x86/vm/x86_32.ad
changeset 5690 796ff3814b23
parent 5352 cee8f7acb7bc
child 5698 091095915ee6
equal deleted inserted replaced
5689:257370c65507 5690:796ff3814b23
  1839   enc_class preserve_SP %{
  1839   enc_class preserve_SP %{
  1840     debug_only(int off0 = cbuf.code_size());
  1840     debug_only(int off0 = cbuf.code_size());
  1841     MacroAssembler _masm(&cbuf);
  1841     MacroAssembler _masm(&cbuf);
  1842     // RBP is preserved across all calls, even compiled calls.
  1842     // RBP is preserved across all calls, even compiled calls.
  1843     // Use it to preserve RSP in places where the callee might change the SP.
  1843     // Use it to preserve RSP in places where the callee might change the SP.
  1844     __ movptr(rbp, rsp);
  1844     __ movptr(rbp_mh_SP_save, rsp);
  1845     debug_only(int off1 = cbuf.code_size());
  1845     debug_only(int off1 = cbuf.code_size());
  1846     assert(off1 - off0 == preserve_SP_size(), "correct size prediction");
  1846     assert(off1 - off0 == preserve_SP_size(), "correct size prediction");
  1847   %}
  1847   %}
  1848 
  1848 
  1849   enc_class restore_SP %{
  1849   enc_class restore_SP %{
  1850     MacroAssembler _masm(&cbuf);
  1850     MacroAssembler _masm(&cbuf);
  1851     __ movptr(rsp, rbp);
  1851     __ movptr(rsp, rbp_mh_SP_save);
  1852   %}
  1852   %}
  1853 
  1853 
  1854   enc_class Java_Static_Call (method meth) %{    // JAVA STATIC CALL
  1854   enc_class Java_Static_Call (method meth) %{    // JAVA STATIC CALL
  1855     // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
  1855     // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
  1856     // who we intended to call.
  1856     // who we intended to call.
 13568 %}
 13568 %}
 13569 
 13569 
 13570 // Call Java Static Instruction (method handle version)
 13570 // Call Java Static Instruction (method handle version)
 13571 // Note: If this code changes, the corresponding ret_addr_offset() and
 13571 // Note: If this code changes, the corresponding ret_addr_offset() and
 13572 //       compute_padding() functions will have to be adjusted.
 13572 //       compute_padding() functions will have to be adjusted.
 13573 instruct CallStaticJavaHandle(method meth, eBPRegP ebp) %{
 13573 instruct CallStaticJavaHandle(method meth, eBPRegP ebp_mh_SP_save) %{
 13574   match(CallStaticJava);
 13574   match(CallStaticJava);
 13575   predicate(((CallStaticJavaNode*)n)->is_method_handle_invoke());
 13575   predicate(((CallStaticJavaNode*)n)->is_method_handle_invoke());
 13576   effect(USE meth);
 13576   effect(USE meth);
 13577   // EBP is saved by all callees (for interpreter stack correction).
 13577   // EBP is saved by all callees (for interpreter stack correction).
 13578   // We use it here for a similar purpose, in {preserve,restore}_SP.
 13578   // We use it here for a similar purpose, in {preserve,restore}_SP.