Mercurial > hg > truffle
comparison src/share/vm/opto/chaitin.hpp @ 14498:04e7587c97dc
8032656: Tag the MachSpillCopies with purpose information
Summary: Subclassed the MachSpillCopyNode with different subnodes for different spill purposes to enhance debugging / visualization
Reviewed-by: kvn, roland
author | adlertz |
---|---|
date | Tue, 25 Feb 2014 14:09:02 +0100 |
parents | 99fc8c086679 |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14497:9a83b7b3e37c | 14498:04e7587c97dc |
---|---|
32 #include "opto/live.hpp" | 32 #include "opto/live.hpp" |
33 #include "opto/matcher.hpp" | 33 #include "opto/matcher.hpp" |
34 #include "opto/phase.hpp" | 34 #include "opto/phase.hpp" |
35 #include "opto/regalloc.hpp" | 35 #include "opto/regalloc.hpp" |
36 #include "opto/regmask.hpp" | 36 #include "opto/regmask.hpp" |
37 #include "opto/machnode.hpp" | |
37 | 38 |
38 class LoopTree; | 39 class LoopTree; |
39 class MachCallNode; | |
40 class MachSafePointNode; | |
41 class Matcher; | 40 class Matcher; |
42 class PhaseCFG; | 41 class PhaseCFG; |
43 class PhaseLive; | 42 class PhaseLive; |
44 class PhaseRegAlloc; | 43 class PhaseRegAlloc; |
45 class PhaseChaitin; | 44 class PhaseChaitin; |
422 uint _lo_stk_degree; // Head of lo-stk-degree LRGs list | 421 uint _lo_stk_degree; // Head of lo-stk-degree LRGs list |
423 uint _hi_degree; // Head of hi-degree LRGs list | 422 uint _hi_degree; // Head of hi-degree LRGs list |
424 uint _simplified; // Linked list head of simplified LRGs | 423 uint _simplified; // Linked list head of simplified LRGs |
425 | 424 |
426 // Helper functions for Split() | 425 // Helper functions for Split() |
427 uint split_DEF( Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx ); | 426 uint split_DEF(Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx ); |
428 uint split_USE( Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx ); | 427 uint split_USE(MachSpillCopyNode::SpillType spill_type, Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx ); |
429 | 428 |
430 //------------------------------clone_projs------------------------------------ | 429 //------------------------------clone_projs------------------------------------ |
431 // After cloning some rematerialized instruction, clone any MachProj's that | 430 // After cloning some rematerialized instruction, clone any MachProj's that |
432 // follow it. Example: Intel zero is XOR, kills flags. Sparc FP constants | 431 // follow it. Example: Intel zero is XOR, kills flags. Sparc FP constants |
433 // use G3 as an address temp. | 432 // use G3 as an address temp. |
445 | 444 |
446 Node *split_Rematerialize(Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits, | 445 Node *split_Rematerialize(Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits, |
447 int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru); | 446 int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru); |
448 // True if lidx is used before any real register is def'd in the block | 447 // True if lidx is used before any real register is def'd in the block |
449 bool prompt_use( Block *b, uint lidx ); | 448 bool prompt_use( Block *b, uint lidx ); |
450 Node *get_spillcopy_wide( Node *def, Node *use, uint uidx ); | 449 Node *get_spillcopy_wide(MachSpillCopyNode::SpillType spill_type, Node *def, Node *use, uint uidx ); |
451 // Insert the spill at chosen location. Skip over any intervening Proj's or | 450 // Insert the spill at chosen location. Skip over any intervening Proj's or |
452 // Phis. Skip over a CatchNode and projs, inserting in the fall-through block | 451 // Phis. Skip over a CatchNode and projs, inserting in the fall-through block |
453 // instead. Update high-pressure indices. Create a new live range. | 452 // instead. Update high-pressure indices. Create a new live range. |
454 void insert_proj( Block *b, uint i, Node *spill, uint maxlrg ); | 453 void insert_proj( Block *b, uint i, Node *spill, uint maxlrg ); |
455 | 454 |