author | erikj |
Tue, 12 Sep 2017 19:03:39 +0200 | |
changeset 47216 | 71c04702a3d5 |
parent 35551 | hotspot/src/share/vm/opto/rootnode.hpp@36ef3841fb34 |
child 53244 | 9807daeb47c4 |
permissions | -rw-r--r-- |
1 | 1 |
/* |
32084
7743e6943cdf
8004073: Implement C2 Ideal node specific dump() method
mhaupt
parents:
7397
diff
changeset
|
2 |
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
1 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. |
|
8 |
* |
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
13 |
* accompanied this code). |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License version |
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
18 |
* |
|
5547
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
21 |
* questions. |
1 | 22 |
* |
23 |
*/ |
|
24 |
||
7397 | 25 |
#ifndef SHARE_VM_OPTO_ROOTNODE_HPP |
26 |
#define SHARE_VM_OPTO_ROOTNODE_HPP |
|
27 |
||
28 |
#include "opto/loopnode.hpp" |
|
29 |
||
1 | 30 |
//------------------------------RootNode--------------------------------------- |
31 |
// The one-and-only before-all-else and after-all-else RootNode. The RootNode |
|
32 |
// represents what happens if the user runs the whole program repeatedly. The |
|
33 |
// RootNode produces the initial values of I/O and memory for the program or |
|
34 |
// procedure start. |
|
35 |
class RootNode : public LoopNode { |
|
36 |
public: |
|
37 |
RootNode( ) : LoopNode(0,0) { |
|
38 |
init_class_id(Class_Root); |
|
39 |
del_req(2); |
|
40 |
del_req(1); |
|
41 |
} |
|
42 |
virtual int Opcode() const; |
|
43 |
virtual const Node *is_block_proj() const { return this; } |
|
44 |
virtual const Type *bottom_type() const { return Type::BOTTOM; } |
|
35551
36ef3841fb34
8146629: Make phase->is_IterGVN() accessible from Node::Identity and Node::Value
thartmann
parents:
32084
diff
changeset
|
45 |
virtual Node* Identity(PhaseGVN* phase) { return this; } |
1 | 46 |
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); |
35551
36ef3841fb34
8146629: Make phase->is_IterGVN() accessible from Node::Identity and Node::Value
thartmann
parents:
32084
diff
changeset
|
47 |
virtual const Type* Value(PhaseGVN* phase) const { return Type::BOTTOM; } |
1 | 48 |
}; |
49 |
||
50 |
//------------------------------HaltNode--------------------------------------- |
|
51 |
// Throw an exception & die |
|
52 |
class HaltNode : public Node { |
|
53 |
public: |
|
54 |
HaltNode( Node *ctrl, Node *frameptr ); |
|
55 |
virtual int Opcode() const; |
|
56 |
virtual bool pinned() const { return true; }; |
|
57 |
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); |
|
35551
36ef3841fb34
8146629: Make phase->is_IterGVN() accessible from Node::Identity and Node::Value
thartmann
parents:
32084
diff
changeset
|
58 |
virtual const Type* Value(PhaseGVN* phase) const; |
1 | 59 |
virtual const Type *bottom_type() const; |
60 |
virtual bool is_CFG() const { return true; } |
|
61 |
virtual uint hash() const { return NO_HASH; } // CFG nodes do not hash |
|
62 |
virtual bool depends_only_on_test() const { return false; } |
|
63 |
virtual const Node *is_block_proj() const { return this; } |
|
64 |
virtual const RegMask &out_RegMask() const; |
|
65 |
virtual uint ideal_reg() const { return NotAMachineReg; } |
|
66 |
virtual uint match_edge(uint idx) const { return 0; } |
|
32084
7743e6943cdf
8004073: Implement C2 Ideal node specific dump() method
mhaupt
parents:
7397
diff
changeset
|
67 |
|
7743e6943cdf
8004073: Implement C2 Ideal node specific dump() method
mhaupt
parents:
7397
diff
changeset
|
68 |
#ifndef PRODUCT |
7743e6943cdf
8004073: Implement C2 Ideal node specific dump() method
mhaupt
parents:
7397
diff
changeset
|
69 |
virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const; |
7743e6943cdf
8004073: Implement C2 Ideal node specific dump() method
mhaupt
parents:
7397
diff
changeset
|
70 |
#endif |
1 | 71 |
}; |
7397 | 72 |
|
73 |
#endif // SHARE_VM_OPTO_ROOTNODE_HPP |