< prev index next >

src/share/vm/c1/c1_LIRGenerator.hpp

Print this page




 258   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 259   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 260 
 261   // GC Barriers
 262 
 263   // generic interface
 264 
 265   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 266   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 267 
 268   // specific implementations
 269   // pre barriers
 270 
 271   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 272                                          bool do_load, bool patch, CodeEmitInfo* info);
 273 
 274   // post barriers
 275 
 276   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 277   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);



 278 
 279 
 280   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 281 
 282   ciObject* get_jobject_constant(Value value);
 283 
 284   LIRItemList* invoke_visit_arguments(Invoke* x);
 285   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 286 
 287   void trace_block_entry(BlockBegin* block);
 288 
 289   // volatile field operations are never patchable because a klass
 290   // must be loaded to know it's volatile which means that the offset
 291   // it always known as well.
 292   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 293   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);
 294 
 295   void put_Object_unsafe(LIR_Opr src, LIR_Opr offset, LIR_Opr data, BasicType type, bool is_volatile);
 296   void get_Object_unsafe(LIR_Opr dest, LIR_Opr src, LIR_Opr offset, BasicType type, bool is_volatile);
 297 


 528   virtual void do_LookupSwitch   (LookupSwitch*    x);
 529   virtual void do_Return         (Return*          x);
 530   virtual void do_Throw          (Throw*           x);
 531   virtual void do_Base           (Base*            x);
 532   virtual void do_OsrEntry       (OsrEntry*        x);
 533   virtual void do_ExceptionObject(ExceptionObject* x);
 534   virtual void do_RoundFP        (RoundFP*         x);
 535   virtual void do_UnsafeGetRaw   (UnsafeGetRaw*    x);
 536   virtual void do_UnsafePutRaw   (UnsafePutRaw*    x);
 537   virtual void do_UnsafeGetObject(UnsafeGetObject* x);
 538   virtual void do_UnsafePutObject(UnsafePutObject* x);
 539   virtual void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x);
 540   virtual void do_ProfileCall    (ProfileCall*     x);
 541   virtual void do_ProfileReturnType (ProfileReturnType* x);
 542   virtual void do_ProfileInvoke  (ProfileInvoke*   x);
 543   virtual void do_RuntimeCall    (RuntimeCall*     x);
 544   virtual void do_MemBar         (MemBar*          x);
 545   virtual void do_RangeCheckPredicate(RangeCheckPredicate* x);
 546 #ifdef ASSERT
 547   virtual void do_Assert         (Assert*          x);




 548 #endif
 549 };
 550 
 551 
 552 class LIRItem: public CompilationResourceObj {
 553  private:
 554   Value         _value;
 555   LIRGenerator* _gen;
 556   LIR_Opr       _result;
 557   bool          _destroys_register;
 558   LIR_Opr       _new_result;
 559 
 560   LIRGenerator* gen() const { return _gen; }
 561 
 562  public:
 563   LIRItem(Value value, LIRGenerator* gen) {
 564     _destroys_register = false;
 565     _gen = gen;
 566     set_instruction(value);
 567   }




 258   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 259   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 260 
 261   // GC Barriers
 262 
 263   // generic interface
 264 
 265   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 266   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 267 
 268   // specific implementations
 269   // pre barriers
 270 
 271   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 272                                          bool do_load, bool patch, CodeEmitInfo* info);
 273 
 274   // post barriers
 275 
 276   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 277   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 278 #ifdef CARDTABLEMODREF_POST_BARRIER_HELPER
 279   void CardTableModRef_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 280 #endif
 281 
 282 
 283   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 284 
 285   ciObject* get_jobject_constant(Value value);
 286 
 287   LIRItemList* invoke_visit_arguments(Invoke* x);
 288   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 289 
 290   void trace_block_entry(BlockBegin* block);
 291 
 292   // volatile field operations are never patchable because a klass
 293   // must be loaded to know it's volatile which means that the offset
 294   // it always known as well.
 295   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 296   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);
 297 
 298   void put_Object_unsafe(LIR_Opr src, LIR_Opr offset, LIR_Opr data, BasicType type, bool is_volatile);
 299   void get_Object_unsafe(LIR_Opr dest, LIR_Opr src, LIR_Opr offset, BasicType type, bool is_volatile);
 300 


 531   virtual void do_LookupSwitch   (LookupSwitch*    x);
 532   virtual void do_Return         (Return*          x);
 533   virtual void do_Throw          (Throw*           x);
 534   virtual void do_Base           (Base*            x);
 535   virtual void do_OsrEntry       (OsrEntry*        x);
 536   virtual void do_ExceptionObject(ExceptionObject* x);
 537   virtual void do_RoundFP        (RoundFP*         x);
 538   virtual void do_UnsafeGetRaw   (UnsafeGetRaw*    x);
 539   virtual void do_UnsafePutRaw   (UnsafePutRaw*    x);
 540   virtual void do_UnsafeGetObject(UnsafeGetObject* x);
 541   virtual void do_UnsafePutObject(UnsafePutObject* x);
 542   virtual void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x);
 543   virtual void do_ProfileCall    (ProfileCall*     x);
 544   virtual void do_ProfileReturnType (ProfileReturnType* x);
 545   virtual void do_ProfileInvoke  (ProfileInvoke*   x);
 546   virtual void do_RuntimeCall    (RuntimeCall*     x);
 547   virtual void do_MemBar         (MemBar*          x);
 548   virtual void do_RangeCheckPredicate(RangeCheckPredicate* x);
 549 #ifdef ASSERT
 550   virtual void do_Assert         (Assert*          x);
 551 #endif
 552 
 553 #ifdef C1_LIRGENERATOR_MD_HPP
 554 #include C1_LIRGENERATOR_MD_HPP
 555 #endif
 556 };
 557 
 558 
 559 class LIRItem: public CompilationResourceObj {
 560  private:
 561   Value         _value;
 562   LIRGenerator* _gen;
 563   LIR_Opr       _result;
 564   bool          _destroys_register;
 565   LIR_Opr       _new_result;
 566 
 567   LIRGenerator* gen() const { return _gen; }
 568 
 569  public:
 570   LIRItem(Value value, LIRGenerator* gen) {
 571     _destroys_register = false;
 572     _gen = gen;
 573     set_instruction(value);
 574   }


< prev index next >