comparison src/share/vm/opto/node.hpp @ 14422:2b8e28fdf503

Merge
author kvn
date Tue, 05 Nov 2013 17:38:04 -0800
parents 59e8ad757e19
children 044b28168e20 085b304a1cc5
comparison
equal deleted inserted replaced
14421:3068270ba476 14422:2b8e28fdf503
1 /* 1 /*
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 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 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
67 class EncodeNarrowPtrNode; 67 class EncodeNarrowPtrNode;
68 class EncodePNode; 68 class EncodePNode;
69 class EncodePKlassNode; 69 class EncodePKlassNode;
70 class FastLockNode; 70 class FastLockNode;
71 class FastUnlockNode; 71 class FastUnlockNode;
72 class FlagsProjNode;
72 class IfNode; 73 class IfNode;
73 class IfFalseNode; 74 class IfFalseNode;
74 class IfTrueNode; 75 class IfTrueNode;
75 class InitializeNode; 76 class InitializeNode;
76 class JVMState; 77 class JVMState;
97 class MachReturnNode; 98 class MachReturnNode;
98 class MachSafePointNode; 99 class MachSafePointNode;
99 class MachSpillCopyNode; 100 class MachSpillCopyNode;
100 class MachTempNode; 101 class MachTempNode;
101 class Matcher; 102 class Matcher;
103 class MathExactNode;
102 class MemBarNode; 104 class MemBarNode;
103 class MemBarStoreStoreNode; 105 class MemBarStoreStoreNode;
104 class MemNode; 106 class MemNode;
105 class MergeMemNode; 107 class MergeMemNode;
106 class MulNode; 108 class MulNode;
209 // field is a local cache of a value defined in some "program fragment" for 211 // field is a local cache of a value defined in some "program fragment" for
210 // which these Nodes are just a part of. 212 // which these Nodes are just a part of.
211 213
212 // New Operator that takes a Compile pointer, this will eventually 214 // New Operator that takes a Compile pointer, this will eventually
213 // be the "new" New operator. 215 // be the "new" New operator.
214 inline void* operator new( size_t x, Compile* C) { 216 inline void* operator new( size_t x, Compile* C) throw() {
215 Node* n = (Node*)C->node_arena()->Amalloc_D(x); 217 Node* n = (Node*)C->node_arena()->Amalloc_D(x);
216 #ifdef ASSERT 218 #ifdef ASSERT
217 n->_in = (Node**)n; // magic cookie for assertion check 219 n->_in = (Node**)n; // magic cookie for assertion check
218 #endif 220 #endif
219 n->_out = (Node**)C; 221 n->_out = (Node**)C;
382 384
383 // Set a required input edge, also updates corresponding output edge 385 // Set a required input edge, also updates corresponding output edge
384 void add_req( Node *n ); // Append a NEW required input 386 void add_req( Node *n ); // Append a NEW required input
385 void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n). 387 void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n).
386 void del_req( uint idx ); // Delete required edge & compact 388 void del_req( uint idx ); // Delete required edge & compact
389 void del_req_ordered( uint idx ); // Delete required edge & compact with preserved order
387 void ins_req( uint i, Node *n ); // Insert a NEW required input 390 void ins_req( uint i, Node *n ); // Insert a NEW required input
388 void set_req( uint i, Node *n ) { 391 void set_req( uint i, Node *n ) {
389 assert( is_not_dead(n), "can not use dead node"); 392 assert( is_not_dead(n), "can not use dead node");
390 assert( i < _cnt, err_msg_res("oob: i=%d, _cnt=%d", i, _cnt)); 393 assert( i < _cnt, err_msg_res("oob: i=%d, _cnt=%d", i, _cnt));
391 assert( !VerifyHashTableKeys || _hash_lock == 0, 394 assert( !VerifyHashTableKeys || _hash_lock == 0,
564 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2) 567 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
565 DEFINE_CLASS_ID(Start, Multi, 2) 568 DEFINE_CLASS_ID(Start, Multi, 2)
566 DEFINE_CLASS_ID(MemBar, Multi, 3) 569 DEFINE_CLASS_ID(MemBar, Multi, 3)
567 DEFINE_CLASS_ID(Initialize, MemBar, 0) 570 DEFINE_CLASS_ID(Initialize, MemBar, 0)
568 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1) 571 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
572 DEFINE_CLASS_ID(MathExact, Multi, 4)
569 573
570 DEFINE_CLASS_ID(Mach, Node, 1) 574 DEFINE_CLASS_ID(Mach, Node, 1)
571 DEFINE_CLASS_ID(MachReturn, Mach, 0) 575 DEFINE_CLASS_ID(MachReturn, Mach, 0)
572 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0) 576 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
573 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0) 577 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
620 624
621 DEFINE_CLASS_ID(Sub, Node, 6) 625 DEFINE_CLASS_ID(Sub, Node, 6)
622 DEFINE_CLASS_ID(Cmp, Sub, 0) 626 DEFINE_CLASS_ID(Cmp, Sub, 0)
623 DEFINE_CLASS_ID(FastLock, Cmp, 0) 627 DEFINE_CLASS_ID(FastLock, Cmp, 0)
624 DEFINE_CLASS_ID(FastUnlock, Cmp, 1) 628 DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
629 DEFINE_CLASS_ID(FlagsProj, Cmp, 2)
625 630
626 DEFINE_CLASS_ID(MergeMem, Node, 7) 631 DEFINE_CLASS_ID(MergeMem, Node, 7)
627 DEFINE_CLASS_ID(Bool, Node, 8) 632 DEFINE_CLASS_ID(Bool, Node, 8)
628 DEFINE_CLASS_ID(AddP, Node, 9) 633 DEFINE_CLASS_ID(AddP, Node, 9)
629 DEFINE_CLASS_ID(BoxLock, Node, 10) 634 DEFINE_CLASS_ID(BoxLock, Node, 10)
723 DEFINE_CLASS_QUERY(EncodeNarrowPtr) 728 DEFINE_CLASS_QUERY(EncodeNarrowPtr)
724 DEFINE_CLASS_QUERY(EncodeP) 729 DEFINE_CLASS_QUERY(EncodeP)
725 DEFINE_CLASS_QUERY(EncodePKlass) 730 DEFINE_CLASS_QUERY(EncodePKlass)
726 DEFINE_CLASS_QUERY(FastLock) 731 DEFINE_CLASS_QUERY(FastLock)
727 DEFINE_CLASS_QUERY(FastUnlock) 732 DEFINE_CLASS_QUERY(FastUnlock)
733 DEFINE_CLASS_QUERY(FlagsProj)
728 DEFINE_CLASS_QUERY(If) 734 DEFINE_CLASS_QUERY(If)
729 DEFINE_CLASS_QUERY(IfFalse) 735 DEFINE_CLASS_QUERY(IfFalse)
730 DEFINE_CLASS_QUERY(IfTrue) 736 DEFINE_CLASS_QUERY(IfTrue)
731 DEFINE_CLASS_QUERY(Initialize) 737 DEFINE_CLASS_QUERY(Initialize)
732 DEFINE_CLASS_QUERY(Jump) 738 DEFINE_CLASS_QUERY(Jump)
751 DEFINE_CLASS_QUERY(MachProj) 757 DEFINE_CLASS_QUERY(MachProj)
752 DEFINE_CLASS_QUERY(MachReturn) 758 DEFINE_CLASS_QUERY(MachReturn)
753 DEFINE_CLASS_QUERY(MachSafePoint) 759 DEFINE_CLASS_QUERY(MachSafePoint)
754 DEFINE_CLASS_QUERY(MachSpillCopy) 760 DEFINE_CLASS_QUERY(MachSpillCopy)
755 DEFINE_CLASS_QUERY(MachTemp) 761 DEFINE_CLASS_QUERY(MachTemp)
762 DEFINE_CLASS_QUERY(MathExact)
756 DEFINE_CLASS_QUERY(Mem) 763 DEFINE_CLASS_QUERY(Mem)
757 DEFINE_CLASS_QUERY(MemBar) 764 DEFINE_CLASS_QUERY(MemBar)
758 DEFINE_CLASS_QUERY(MemBarStoreStore) 765 DEFINE_CLASS_QUERY(MemBarStoreStore)
759 DEFINE_CLASS_QUERY(MergeMem) 766 DEFINE_CLASS_QUERY(MergeMem)
760 DEFINE_CLASS_QUERY(Mul) 767 DEFINE_CLASS_QUERY(Mul)