49 return (offset == 0)? ptr: basic_plus_adr(base, ptr, MakeConX(offset)); 50 } 51 Node* basic_plus_adr(Node* base, Node* offset) { 52 return basic_plus_adr(base, base, offset); 53 } 54 Node* basic_plus_adr(Node* base, Node* ptr, Node* offset) { 55 Node* adr = new AddPNode(base, ptr, offset); 56 return transform_later(adr); 57 } 58 Node* transform_later(Node* n) { 59 // equivalent to _gvn.transform in GraphKit, Ideal, etc. 60 _igvn.register_new_node_with_optimizer(n); 61 return n; 62 } 63 void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr); 64 Node* make_load( Node* ctl, Node* mem, Node* base, int offset, 65 const Type* value_type, BasicType bt); 66 Node* make_store(Node* ctl, Node* mem, Node* base, int offset, 67 Node* value, BasicType bt); 68 69 // projections extracted from a call node 70 ProjNode *_fallthroughproj; 71 ProjNode *_fallthroughcatchproj; 72 ProjNode *_ioproj_fallthrough; 73 ProjNode *_ioproj_catchall; 74 ProjNode *_catchallcatchproj; 75 ProjNode *_memproj_fallthrough; 76 ProjNode *_memproj_catchall; 77 ProjNode *_resproj; 78 79 // Additional data collected during macro expansion 80 bool _has_locks; 81 82 void expand_allocate(AllocateNode *alloc); 83 void expand_allocate_array(AllocateArrayNode *alloc); 84 void expand_allocate_common(AllocateNode* alloc, 85 Node* length, 86 const TypeFunc* slow_call_type, 87 address slow_call_address); 88 Node *value_from_mem(Node *mem, Node *ctl, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, AllocateNode *alloc); | 49 return (offset == 0)? ptr: basic_plus_adr(base, ptr, MakeConX(offset)); 50 } 51 Node* basic_plus_adr(Node* base, Node* offset) { 52 return basic_plus_adr(base, base, offset); 53 } 54 Node* basic_plus_adr(Node* base, Node* ptr, Node* offset) { 55 Node* adr = new AddPNode(base, ptr, offset); 56 return transform_later(adr); 57 } 58 Node* transform_later(Node* n) { 59 // equivalent to _gvn.transform in GraphKit, Ideal, etc. 60 _igvn.register_new_node_with_optimizer(n); 61 return n; 62 } 63 void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr); 64 Node* make_load( Node* ctl, Node* mem, Node* base, int offset, 65 const Type* value_type, BasicType bt); 66 Node* make_store(Node* ctl, Node* mem, Node* base, int offset, 67 Node* value, BasicType bt); 68 69 // For Heap-related sampling - will generate code to invoke call() 70 // if the given sampling parameters are true. 71 void conditional_sample(Node *should_sample, 72 BoolTest::mask test, 73 float probability, 74 CallLeafNode *call, 75 Node *thread, 76 Node **fast_oop_ctrl, 77 Node **fast_oop_rawmem, 78 Node **fast_oop, 79 Node* size_in_bytes, 80 Node *in_node); 81 82 // projections extracted from a call node 83 ProjNode *_fallthroughproj; 84 ProjNode *_fallthroughcatchproj; 85 ProjNode *_ioproj_fallthrough; 86 ProjNode *_ioproj_catchall; 87 ProjNode *_catchallcatchproj; 88 ProjNode *_memproj_fallthrough; 89 ProjNode *_memproj_catchall; 90 ProjNode *_resproj; 91 92 // Additional data collected during macro expansion 93 bool _has_locks; 94 95 void expand_allocate(AllocateNode *alloc); 96 void expand_allocate_array(AllocateArrayNode *alloc); 97 void expand_allocate_common(AllocateNode* alloc, 98 Node* length, 99 const TypeFunc* slow_call_type, 100 address slow_call_address); 101 Node *value_from_mem(Node *mem, Node *ctl, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, AllocateNode *alloc); |