src/share/vm/opto/superword.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/superword.hpp

Print this page
rev 7391 : 8077504: Unsafe load can loose control dependency and cause crash
Summary: Node::depends_only_on_test() should return false for Unsafe loads
Reviewed-by: kvn, adinn


 382   // Construct reverse postorder list of block members
 383   bool construct_bb();
 384   // Initialize per node info
 385   void initialize_bb();
 386   // Insert n into block after pos
 387   void bb_insert_after(Node* n, int pos);
 388   // Compute max depth for expressions from beginning of block
 389   void compute_max_depth();
 390   // Compute necessary vector element type for expressions
 391   void compute_vector_element_type();
 392   // Are s1 and s2 in a pack pair and ordered as s1,s2?
 393   bool in_packset(Node* s1, Node* s2);
 394   // Is s in pack p?
 395   Node_List* in_pack(Node* s, Node_List* p);
 396   // Remove the pack at position pos in the packset
 397   void remove_pack_at(int pos);
 398   // Return the node executed first in pack p.
 399   Node* executed_first(Node_List* p);
 400   // Return the node executed last in pack p.
 401   Node* executed_last(Node_List* p);

 402   // Alignment within a vector memory reference
 403   int memory_alignment(MemNode* s, int iv_adjust);
 404   // (Start, end] half-open range defining which operands are vector
 405   void vector_opd_range(Node* n, uint* start, uint* end);
 406   // Smallest type containing range of values
 407   const Type* container_type(Node* n);
 408   // Adjust pre-loop limit so that in main loop, a load/store reference
 409   // to align_to_ref will be a position zero in the vector.
 410   void align_initial_loop_index(MemNode* align_to_ref);
 411   // Find pre loop end from main loop.  Returns null if none.
 412   CountedLoopEndNode* get_pre_loop_end(CountedLoopNode *cl);
 413   // Is the use of d1 in u1 at the same operand position as d2 in u2?
 414   bool opnd_positions_match(Node* d1, Node* u1, Node* d2, Node* u2);
 415   void init();
 416 
 417   // print methods
 418   void print_packset();
 419   void print_pack(Node_List* p);
 420   void print_bb();
 421   void print_stmt(Node* s);




 382   // Construct reverse postorder list of block members
 383   bool construct_bb();
 384   // Initialize per node info
 385   void initialize_bb();
 386   // Insert n into block after pos
 387   void bb_insert_after(Node* n, int pos);
 388   // Compute max depth for expressions from beginning of block
 389   void compute_max_depth();
 390   // Compute necessary vector element type for expressions
 391   void compute_vector_element_type();
 392   // Are s1 and s2 in a pack pair and ordered as s1,s2?
 393   bool in_packset(Node* s1, Node* s2);
 394   // Is s in pack p?
 395   Node_List* in_pack(Node* s, Node_List* p);
 396   // Remove the pack at position pos in the packset
 397   void remove_pack_at(int pos);
 398   // Return the node executed first in pack p.
 399   Node* executed_first(Node_List* p);
 400   // Return the node executed last in pack p.
 401   Node* executed_last(Node_List* p);
 402   static LoadNode::ControlDependency control_dependency(Node_List* p);
 403   // Alignment within a vector memory reference
 404   int memory_alignment(MemNode* s, int iv_adjust);
 405   // (Start, end] half-open range defining which operands are vector
 406   void vector_opd_range(Node* n, uint* start, uint* end);
 407   // Smallest type containing range of values
 408   const Type* container_type(Node* n);
 409   // Adjust pre-loop limit so that in main loop, a load/store reference
 410   // to align_to_ref will be a position zero in the vector.
 411   void align_initial_loop_index(MemNode* align_to_ref);
 412   // Find pre loop end from main loop.  Returns null if none.
 413   CountedLoopEndNode* get_pre_loop_end(CountedLoopNode *cl);
 414   // Is the use of d1 in u1 at the same operand position as d2 in u2?
 415   bool opnd_positions_match(Node* d1, Node* u1, Node* d2, Node* u2);
 416   void init();
 417 
 418   // print methods
 419   void print_packset();
 420   void print_pack(Node_List* p);
 421   void print_bb();
 422   void print_stmt(Node* s);


src/share/vm/opto/superword.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File