< 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   void do_continuation_doYield(Intrinsic* x);
276 
277  public:
278   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
279   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
280 
281   // convenience functions
282   LIR_Opr call_runtime(Value arg1, 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  public:
489   Compilation*  compilation() const              { return _compilation; }
490   FrameMap*     frame_map() const                { return _compilation->frame_map(); }
491   ciMethod*     method() const                   { return _method; }
492   BlockBegin*   block() const                    { return _block; }
493   IRScope*      scope() const                    { return block()->scope(); }
494 
495   int max_virtual_register_number() const        { return _virtual_register_number; }
496 
497   void block_do(BlockBegin* block);
498 
499   // Flags that can be set on vregs
500   enum VregFlag {
501       must_start_in_memory = 0  // needs to be assigned a memory location at beginning, but may then be loaded in a register
502     , callee_saved     = 1    // must be in a callee saved register
503     , byte_reg         = 2    // must be in a byte register
504     , num_vreg_flags
505 
506   };
507 

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   void do_continuation_doYield(Intrinsic* x);
278 
279  public:
280   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
281   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
282 
283   // convenience functions
284   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);

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