comparison src/share/vm/opto/phaseX.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents 99269dbf4ba8
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
742 #endif 742 #endif
743 743
744 //============================================================================= 744 //=============================================================================
745 //------------------------------PhaseIterGVN----------------------------------- 745 //------------------------------PhaseIterGVN-----------------------------------
746 // Initialize hash table to fresh and clean for +VerifyOpto 746 // Initialize hash table to fresh and clean for +VerifyOpto
747 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ) { 747 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ),
748 _delay_transform(false) {
748 } 749 }
749 750
750 //------------------------------PhaseIterGVN----------------------------------- 751 //------------------------------PhaseIterGVN-----------------------------------
751 // Initialize with previous PhaseIterGVN info; used by PhaseCCP 752 // Initialize with previous PhaseIterGVN info; used by PhaseCCP
752 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn ) : PhaseGVN(igvn), 753 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn ) : PhaseGVN(igvn),
753 _worklist( igvn->_worklist ) 754 _worklist( igvn->_worklist ),
755 _delay_transform(igvn->_delay_transform)
754 { 756 {
755 } 757 }
756 758
757 //------------------------------PhaseIterGVN----------------------------------- 759 //------------------------------PhaseIterGVN-----------------------------------
758 // Initialize with previous PhaseGVN info from Parser 760 // Initialize with previous PhaseGVN info from Parser
759 PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn), 761 PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn),
760 _worklist(*C->for_igvn()) 762 _worklist(*C->for_igvn()),
763 _delay_transform(false)
761 { 764 {
762 uint max; 765 uint max;
763 766
764 // Dead nodes in the hash table inherited from GVN were not treated as 767 // Dead nodes in the hash table inherited from GVN were not treated as
765 // roots during def-use info creation; hence they represent an invisible 768 // roots during def-use info creation; hence they represent an invisible
951 } 954 }
952 955
953 //------------------------------transform-------------------------------------- 956 //------------------------------transform--------------------------------------
954 // Non-recursive: idealize Node 'n' with respect to its inputs and its value 957 // Non-recursive: idealize Node 'n' with respect to its inputs and its value
955 Node *PhaseIterGVN::transform( Node *n ) { 958 Node *PhaseIterGVN::transform( Node *n ) {
959 if (_delay_transform) {
960 // Register the node but don't optimize for now
961 register_new_node_with_optimizer(n);
962 return n;
963 }
964
956 // If brand new node, make space in type array, and give it a type. 965 // If brand new node, make space in type array, and give it a type.
957 ensure_type_or_null(n); 966 ensure_type_or_null(n);
958 if (type_or_null(n) == NULL) { 967 if (type_or_null(n) == NULL) {
959 set_type_bottom(n); 968 set_type_bottom(n);
960 } 969 }