src/cpu/sparc/vm/assembler_sparc.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6930772 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/assembler_sparc.hpp

Print this page




  70 // The following globals are used for the new C1 & interpreter calling convention:
  71 REGISTER_DECLARATION(Register, Gargs        , G4); // pointing to the last argument
  72 
  73 // This local is used to preserve G2_thread in the interpreter and in stubs:
  74 REGISTER_DECLARATION(Register, L7_thread_cache , L7);
  75 
  76 // These globals are used as scratch registers in the interpreter:
  77 
  78 REGISTER_DECLARATION(Register, Gframe_size   , G1); // SAME REG as G1_scratch
  79 REGISTER_DECLARATION(Register, G1_scratch    , G1); // also SAME
  80 REGISTER_DECLARATION(Register, G3_scratch    , G3);
  81 REGISTER_DECLARATION(Register, G4_scratch    , G4);
  82 
  83 // These globals are used as short-lived scratch registers in the compiler:
  84 
  85 REGISTER_DECLARATION(Register, Gtemp  , G5);
  86 
  87 // JSR 292 fixed register usages:
  88 REGISTER_DECLARATION(Register, G5_method_type        , G5);
  89 REGISTER_DECLARATION(Register, G3_method_handle      , G3);

  90 
  91 // The compiler requires that G5_megamorphic_method is G5_inline_cache_klass,
  92 // because a single patchable "set" instruction (NativeMovConstReg,
  93 // or NativeMovConstPatching for compiler1) instruction
  94 // serves to set up either quantity, depending on whether the compiled
  95 // call site is an inline cache or is megamorphic.  See the function
  96 // CompiledIC::set_to_megamorphic.
  97 //
  98 // If a inline cache targets an interpreted method, then the
  99 // G5 register will be used twice during the call.  First,
 100 // the call site will be patched to load a compiledICHolder
 101 // into G5. (This is an ordered pair of ic_klass, method.)
 102 // The c2i adapter will first check the ic_klass, then load
 103 // G5_method with the method part of the pair just before
 104 // jumping into the interpreter.
 105 //
 106 // Note that G5_method is only the method-self for the interpreter,
 107 // and is logically unrelated to G5_megamorphic_method.
 108 //
 109 // Invariants on G2_thread (the JavaThread pointer):




  70 // The following globals are used for the new C1 & interpreter calling convention:
  71 REGISTER_DECLARATION(Register, Gargs        , G4); // pointing to the last argument
  72 
  73 // This local is used to preserve G2_thread in the interpreter and in stubs:
  74 REGISTER_DECLARATION(Register, L7_thread_cache , L7);
  75 
  76 // These globals are used as scratch registers in the interpreter:
  77 
  78 REGISTER_DECLARATION(Register, Gframe_size   , G1); // SAME REG as G1_scratch
  79 REGISTER_DECLARATION(Register, G1_scratch    , G1); // also SAME
  80 REGISTER_DECLARATION(Register, G3_scratch    , G3);
  81 REGISTER_DECLARATION(Register, G4_scratch    , G4);
  82 
  83 // These globals are used as short-lived scratch registers in the compiler:
  84 
  85 REGISTER_DECLARATION(Register, Gtemp  , G5);
  86 
  87 // JSR 292 fixed register usages:
  88 REGISTER_DECLARATION(Register, G5_method_type        , G5);
  89 REGISTER_DECLARATION(Register, G3_method_handle      , G3);
  90 REGISTER_DECLARATION(Register, L7_mh_SP_save         , L7);
  91 
  92 // The compiler requires that G5_megamorphic_method is G5_inline_cache_klass,
  93 // because a single patchable "set" instruction (NativeMovConstReg,
  94 // or NativeMovConstPatching for compiler1) instruction
  95 // serves to set up either quantity, depending on whether the compiled
  96 // call site is an inline cache or is megamorphic.  See the function
  97 // CompiledIC::set_to_megamorphic.
  98 //
  99 // If a inline cache targets an interpreted method, then the
 100 // G5 register will be used twice during the call.  First,
 101 // the call site will be patched to load a compiledICHolder
 102 // into G5. (This is an ordered pair of ic_klass, method.)
 103 // The c2i adapter will first check the ic_klass, then load
 104 // G5_method with the method part of the pair just before
 105 // jumping into the interpreter.
 106 //
 107 // Note that G5_method is only the method-self for the interpreter,
 108 // and is logically unrelated to G5_megamorphic_method.
 109 //
 110 // Invariants on G2_thread (the JavaThread pointer):


src/cpu/sparc/vm/assembler_sparc.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File