< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.hpp

Print this page

243 
244   // platform dependent
245   LIR_Opr getThreadPointer();
246 
247  private:
248   // code emission
249   void do_ArithmeticOp_Long(ArithmeticOp* x);
250   void do_ArithmeticOp_Int (ArithmeticOp* x);
251   void do_ArithmeticOp_FPU (ArithmeticOp* x);
252 
253   void do_RegisterFinalizer(Intrinsic* x);
254   void do_isInstance(Intrinsic* x);
255   void do_isPrimitive(Intrinsic* x);
256   void do_getModifiers(Intrinsic* x);
257   void do_getClass(Intrinsic* x);
258   void do_getObjectSize(Intrinsic* x);
259   void do_currentCarrierThread(Intrinsic* x);
260   void do_extentLocalCache(Intrinsic* x);
261   void do_vthread(Intrinsic* x);
262   void do_JavaThreadField(Intrinsic* x, ByteSize offset);


263   void do_FmaIntrinsic(Intrinsic* x);
264   void do_MathIntrinsic(Intrinsic* x);
265   void do_LibmIntrinsic(Intrinsic* x);
266   void do_ArrayCopy(Intrinsic* x);
267   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
268   void do_PreconditionsCheckIndex(Intrinsic* x, BasicType type);
269   void do_FPIntrinsics(Intrinsic* x);
270   void do_Reference_get(Intrinsic* x);
271   void do_update_CRC32(Intrinsic* x);
272   void do_update_CRC32C(Intrinsic* x);
273   void do_vectorizedMismatch(Intrinsic* x);
274   void do_blackhole(Intrinsic* x);
275 
276  public:
277   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
278   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
279 
280   // convenience functions
281   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
282   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);

466 #endif // __SOFTFP__
467 
468   SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
469   SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
470   void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
471 
472 #ifdef JFR_HAVE_INTRINSICS
473   void do_getEventWriter(Intrinsic* x);
474 #endif
475 
476   void do_RuntimeCall(address routine, Intrinsic* x);
477 
478   ciKlass* profile_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k,
479                         Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
480                         ciKlass* callee_signature_k);
481   void profile_arguments(ProfileCall* x);
482   void profile_parameters(Base* x);
483   void profile_parameters_at_call(ProfileCall* x);
484   LIR_Opr mask_boolean(LIR_Opr array, LIR_Opr value, CodeEmitInfo*& null_check_info);
485 


486  public:
487   Compilation*  compilation() const              { return _compilation; }
488   FrameMap*     frame_map() const                { return _compilation->frame_map(); }
489   ciMethod*     method() const                   { return _method; }
490   BlockBegin*   block() const                    { return _block; }
491   IRScope*      scope() const                    { return block()->scope(); }
492 
493   int max_virtual_register_number() const        { return _virtual_register_number; }
494 
495   void block_do(BlockBegin* block);
496 
497   // Flags that can be set on vregs
498   enum VregFlag {
499       must_start_in_memory = 0  // needs to be assigned a memory location at beginning, but may then be loaded in a register
500     , callee_saved     = 1    // must be in a callee saved register
501     , byte_reg         = 2    // must be in a byte register
502     , num_vreg_flags
503 
504   };
505 

243 
244   // platform dependent
245   LIR_Opr getThreadPointer();
246 
247  private:
248   // code emission
249   void do_ArithmeticOp_Long(ArithmeticOp* x);
250   void do_ArithmeticOp_Int (ArithmeticOp* x);
251   void do_ArithmeticOp_FPU (ArithmeticOp* x);
252 
253   void do_RegisterFinalizer(Intrinsic* x);
254   void do_isInstance(Intrinsic* x);
255   void do_isPrimitive(Intrinsic* x);
256   void do_getModifiers(Intrinsic* x);
257   void do_getClass(Intrinsic* x);
258   void do_getObjectSize(Intrinsic* x);
259   void do_currentCarrierThread(Intrinsic* x);
260   void do_extentLocalCache(Intrinsic* x);
261   void do_vthread(Intrinsic* x);
262   void do_JavaThreadField(Intrinsic* x, ByteSize offset);
263   void do_sizeOf(Intrinsic* x);
264   void do_addressOf(Intrinsic* x);
265   void do_FmaIntrinsic(Intrinsic* x);
266   void do_MathIntrinsic(Intrinsic* x);
267   void do_LibmIntrinsic(Intrinsic* x);
268   void do_ArrayCopy(Intrinsic* x);
269   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
270   void do_PreconditionsCheckIndex(Intrinsic* x, BasicType type);
271   void do_FPIntrinsics(Intrinsic* x);
272   void do_Reference_get(Intrinsic* x);
273   void do_update_CRC32(Intrinsic* x);
274   void do_update_CRC32C(Intrinsic* x);
275   void do_vectorizedMismatch(Intrinsic* x);
276   void do_blackhole(Intrinsic* x);
277 
278  public:
279   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
280   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
281 
282   // convenience functions
283   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
284   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);

468 #endif // __SOFTFP__
469 
470   SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
471   SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
472   void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
473 
474 #ifdef JFR_HAVE_INTRINSICS
475   void do_getEventWriter(Intrinsic* x);
476 #endif
477 
478   void do_RuntimeCall(address routine, Intrinsic* x);
479 
480   ciKlass* profile_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k,
481                         Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
482                         ciKlass* callee_signature_k);
483   void profile_arguments(ProfileCall* x);
484   void profile_parameters(Base* x);
485   void profile_parameters_at_call(ProfileCall* x);
486   LIR_Opr mask_boolean(LIR_Opr array, LIR_Opr value, CodeEmitInfo*& null_check_info);
487 
488   void do_sizeOf_impl(Intrinsic* x, int arg_idx);
489 
490  public:
491   Compilation*  compilation() const              { return _compilation; }
492   FrameMap*     frame_map() const                { return _compilation->frame_map(); }
493   ciMethod*     method() const                   { return _method; }
494   BlockBegin*   block() const                    { return _block; }
495   IRScope*      scope() const                    { return block()->scope(); }
496 
497   int max_virtual_register_number() const        { return _virtual_register_number; }
498 
499   void block_do(BlockBegin* block);
500 
501   // Flags that can be set on vregs
502   enum VregFlag {
503       must_start_in_memory = 0  // needs to be assigned a memory location at beginning, but may then be loaded in a register
504     , callee_saved     = 1    // must be in a callee saved register
505     , byte_reg         = 2    // must be in a byte register
506     , num_vreg_flags
507 
508   };
509 
< prev index next >