hotspot/src/share/vm/opto/matcher.hpp

Print this page
rev 611 : Merge

*** 1,10 **** #ifdef USE_PRAGMA_IDENT_HDR #pragma ident "@(#)matcher.hpp 1.188 07/07/19 19:08:27 JVM" #endif /* ! * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,10 ---- #ifdef USE_PRAGMA_IDENT_HDR #pragma ident "@(#)matcher.hpp 1.188 07/07/19 19:08:27 JVM" #endif /* ! * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 49,59 **** void ReduceInst_Chain_Rule( State *s, int rule, Node *&mem, MachNode *mach); uint ReduceInst_Interior(State *s, int rule, Node *&mem, MachNode *mach, uint num_opnds); void ReduceOper( State *s, int newrule, Node *&mem, MachNode *mach ); // If this node already matched using "rule", return the MachNode for it. ! MachNode* find_shared_constant(Node* con, uint rule); // Convert a dense opcode number to an expanded rule number const int *_reduceOp; const int *_leftOp; const int *_rightOp; --- 49,59 ---- void ReduceInst_Chain_Rule( State *s, int rule, Node *&mem, MachNode *mach); uint ReduceInst_Interior(State *s, int rule, Node *&mem, MachNode *mach, uint num_opnds); void ReduceOper( State *s, int newrule, Node *&mem, MachNode *mach ); // If this node already matched using "rule", return the MachNode for it. ! MachNode* find_shared_node(Node* n, uint rule); // Convert a dense opcode number to an expanded rule number const int *_reduceOp; const int *_leftOp; const int *_rightOp;
*** 82,94 **** Node *transform( Node *dummy ); Node_List &_proj_list; // For Machine nodes killing many values ! Node_Array _shared_constants; debug_only(Node_Array _old2new_map;) // Map roots of ideal-trees to machine-roots // Accessors for the inherited field PhaseTransform::_nodes: void grow_new_node_array(uint idx_limit) { _nodes.map(idx_limit-1, NULL); } --- 82,95 ---- Node *transform( Node *dummy ); Node_List &_proj_list; // For Machine nodes killing many values ! Node_Array _shared_nodes; debug_only(Node_Array _old2new_map;) // Map roots of ideal-trees to machine-roots + debug_only(Node_Array _new2old_map;) // Maps machine nodes back to ideal // Accessors for the inherited field PhaseTransform::_nodes: void grow_new_node_array(uint idx_limit) { _nodes.map(idx_limit-1, NULL); }
*** 105,114 **** --- 106,117 ---- } #ifdef ASSERT // Make sure only new nodes are reachable from this node void verify_new_nodes_only(Node* root); + + Node* _mem_node; // Ideal memory node consumed by mach node #endif public: int LabelRootDepth; static const int base2reg[]; // Map Types to machine register types
*** 164,174 **** static bool is_spillable_arg( int reg ); // List of IfFalse or IfTrue Nodes that indicate a taken null test. // List is valid in the post-matching space. Node_List _null_check_tests; ! void collect_null_checks( Node *proj ); void validate_null_checks( ); Matcher( Node_List &proj_list ); // Select instructions for entire method --- 167,177 ---- static bool is_spillable_arg( int reg ); // List of IfFalse or IfTrue Nodes that indicate a taken null test. // List is valid in the post-matching space. Node_List _null_check_tests; ! void collect_null_checks( Node *proj, Node *orig_proj ); void validate_null_checks( ); Matcher( Node_List &proj_list ); // Select instructions for entire method
*** 322,332 **** // !!!!! Special stuff for building ScopeDescs virtual int regnum_to_fpu_offset(int regnum); // Is this branch offset small enough to be addressed by a short branch? ! bool is_short_branch_offset(int offset); // Optional scaling for the parameter to the ClearArray/CopyArray node. static const bool init_array_count_is_in_bytes; // Threshold small size (in bytes) for a ClearArray/CopyArray node. --- 325,335 ---- // !!!!! Special stuff for building ScopeDescs virtual int regnum_to_fpu_offset(int regnum); // Is this branch offset small enough to be addressed by a short branch? ! bool is_short_branch_offset(int rule, int offset); // Optional scaling for the parameter to the ClearArray/CopyArray node. static const bool init_array_count_is_in_bytes; // Threshold small size (in bytes) for a ClearArray/CopyArray node.
*** 389,395 **** --- 392,402 ---- static bool post_store_load_barrier(const Node* mb); #ifdef ASSERT void dump_old2new_map(); // machine-independent to machine-dependent + + Node* find_old_node(Node* new_node) { + return _new2old_map[new_node->_idx]; + } #endif };