< prev index next > src/hotspot/share/opto/macro.hpp
Print this page
address slow_call_address);
void yank_initalize_node(InitializeNode* node);
void yank_alloc_node(AllocateNode* alloc);
Node *value_from_mem(Node *mem, Node *ctl, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, AllocateNode *alloc);
Node *value_from_mem_phi(Node *mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, AllocateNode *alloc, Node_Stack *value_phis, int level);
+ const Type* field_type_from_element(ciField* field, ciType* elem_type, BasicType& basic_elem_type);
+ void adjust_safepoint_jvms(SafePointNode* sfpt, Node* res, SafePointScalarObjectNode* sobj);
+ void retrieve_type_and_size_info(AllocateNode *alloc, Node *res, const TypeOopPtr** res_type, ciKlass** klass, ciInstanceKlass** iklass, int* nfields);
+ void retrieve_array_type_and_size_info(ciKlass* klass, ciType** elem_type, BasicType* basic_elem_type, int* element_size, int* array_base);
bool eliminate_boxing_node(CallStaticJavaNode *boxing);
bool eliminate_allocate_node(AllocateNode *alloc);
bool can_eliminate_allocation(AllocateNode *alloc, GrowableArray <SafePointNode *>& safepoints);
bool scalar_replacement(AllocateNode *alloc, GrowableArray <SafePointNode *>& safepoints_done);
void process_users_of_allocation(CallNode *alloc);
+ bool stack_allocation(AllocateNode *alloc);
+ void eliminate_unused_allocation_edges(CallNode* alloc);
+ void handle_safepoint_for_stack_allocation(Dict* safepoint_map, AllocateNode* alloc, Node* oop_node, Node* parent, SafePointNode* sfpt);
+ bool process_write_barriers_on_stack_allocated_objects(AllocateNode* alloc);
+ bool register_stack_allocated_object_with_safepoints(AllocateNode* alloc, Node* stack_oop);
+ void stack_allocation_init_array_length_on_entry(AllocateNode *alloc, Node *length, Node *stack_oop);
+ #ifndef PRODUCT
+ void stack_allocation_clear_object_data(AllocateNode *alloc, Node *stack_oop);
+ #endif
+ void estimate_stack_allocation_size(AllocateNode* alloc);
+ bool can_stack_allocate(AllocateNode* alloc, Node *res, intptr_t size_of_object);
+ bool stack_allocation_location_representable(int n);
+ int next_stack_allocated_object(int num_slots);
void eliminate_gc_barrier(Node *p2x);
void mark_eliminated_box(Node* box, Node* obj);
void mark_eliminated_locking_nodes(AbstractLockNode *alock);
bool eliminate_locking_node(AbstractLockNode *alock);
Node* klass_node, Node* length,
Node* size_in_bytes);
Node* make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset, Node* ctl, Node* mem, BasicType ft, const Type *ftype, AllocateNode *alloc);
+ bool should_stack_allocate() {
+ return C->do_stack_allocation();
+ }
+
+ #ifndef PRODUCT
+ bool print_eliminate_allocations() {
+ return PrintEliminateAllocations || C->directive()->PrintEliminateAllocationsOption;
+ }
+ bool print_stack_allocation() {
+ return PrintStackAllocation || C->directive()->PrintStackAllocationOption;
+ }
+ #endif
+
public:
PhaseMacroExpand(PhaseIterGVN &igvn) : Phase(Macro_Expand), _igvn(igvn), _has_locks(false) {
_igvn.set_delay_transform(true);
}
void eliminate_macro_nodes();
< prev index next >