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);