Mercurial > hg > truffle
diff src/share/vm/opto/compile.hpp @ 63:eac007780a58
6671807: (Escape Analysis) Add new ideal node to represent the state of a scalarized object at a safepoint
Summary: Values of non-static fields of a scalarized object should be saved in debug info to reallocate the object during deoptimization.
Reviewed-by: never
author | kvn |
---|---|
date | Thu, 13 Mar 2008 16:06:34 -0700 |
parents | b789bcaf2dd9 |
children | 99269dbf4ba8 |
line wrap: on
line diff
--- a/src/share/vm/opto/compile.hpp Thu Mar 13 05:40:44 2008 -0700 +++ b/src/share/vm/opto/compile.hpp Thu Mar 13 16:06:34 2008 -0700 @@ -606,8 +606,20 @@ // Build OopMaps for each GC point void BuildOopMaps(); - // Append debug info for the node to the array - void FillLocArray( int idx, Node *local, GrowableArray<ScopeValue*> *array ); + + // Append debug info for the node "local" at safepoint node "sfpt" to the + // "array", May also consult and add to "objs", which describes the + // scalar-replaced objects. + void FillLocArray( int idx, MachSafePointNode* sfpt, + Node *local, GrowableArray<ScopeValue*> *array, + GrowableArray<ScopeValue*> *objs ); + + // If "objs" contains an ObjectValue whose id is "id", returns it, else NULL. + static ObjectValue* sv_for_node_id(GrowableArray<ScopeValue*> *objs, int id); + // Requres that "objs" does not contains an ObjectValue whose id matches + // that of "sv. Appends "sv". + static void set_sv_for_object_node(GrowableArray<ScopeValue*> *objs, + ObjectValue* sv ); // Process an OopMap Element while emitting nodes void Process_OopMap_Node(MachNode *mach, int code_offset);