comparison src/share/vm/opto/macro.hpp @ 73:a8880a78d355

6259129: (Escape Analysis) scalar replacement for not escaping objects Summary: Use scalar replacement with EA to remove allocations for objects which do not escape the compiled method. Reviewed-by: rasbold, never, jrose
author kvn
date Thu, 20 Mar 2008 13:51:55 -0700
parents 6dbf1a175d6b
children ba764ed4b6f2
comparison
equal deleted inserted replaced
72:f705f25597eb 73:a8880a78d355
76 void expand_allocate_array(AllocateArrayNode *alloc); 76 void expand_allocate_array(AllocateArrayNode *alloc);
77 void expand_allocate_common(AllocateNode* alloc, 77 void expand_allocate_common(AllocateNode* alloc,
78 Node* length, 78 Node* length,
79 const TypeFunc* slow_call_type, 79 const TypeFunc* slow_call_type,
80 address slow_call_address); 80 address slow_call_address);
81 Node *value_from_mem(Node *mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc);
82 Node *value_from_mem_phi(Node *mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc, int level);
83
84 bool eliminate_allocate_node(AllocateNode *alloc);
85 bool can_eliminate_allocation(AllocateNode *alloc, GrowableArray <SafePointNode *>& safepoints);
86 bool scalar_replacement(AllocateNode *alloc, GrowableArray <SafePointNode *>& safepoints_done);
87 void process_users_of_allocation(AllocateNode *alloc);
88
89 void eliminate_card_mark(Node *cm);
81 bool eliminate_locking_node(AbstractLockNode *alock); 90 bool eliminate_locking_node(AbstractLockNode *alock);
82 void expand_lock_node(LockNode *lock); 91 void expand_lock_node(LockNode *lock);
83 void expand_unlock_node(UnlockNode *unlock); 92 void expand_unlock_node(UnlockNode *unlock);
84 93
85 int replace_input(Node *use, Node *oldref, Node *newref); 94 int replace_input(Node *use, Node *oldref, Node *newref);