Mercurial > hg > truffle
diff 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 |
line wrap: on
line diff
--- a/src/share/vm/opto/macro.hpp Thu Mar 20 10:43:42 2008 -0700 +++ b/src/share/vm/opto/macro.hpp Thu Mar 20 13:51:55 2008 -0700 @@ -78,6 +78,15 @@ Node* length, const TypeFunc* slow_call_type, address slow_call_address); + Node *value_from_mem(Node *mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc); + Node *value_from_mem_phi(Node *mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc, int level); + + 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(AllocateNode *alloc); + + void eliminate_card_mark(Node *cm); bool eliminate_locking_node(AbstractLockNode *alock); void expand_lock_node(LockNode *lock); void expand_unlock_node(UnlockNode *unlock);