Mercurial > hg > truffle
comparison src/share/vm/opto/lcm.cpp @ 1161:1fc01a2425ce
Merge
author | iveresov |
---|---|
date | Tue, 12 Jan 2010 13:54:40 -0800 |
parents | 1271af4ec18c |
children | c18cbe5936b8 3657cb01ffc5 |
comparison
equal
deleted
inserted
replaced
1149:0579c695832f | 1161:1fc01a2425ce |
---|---|
118 case Op_LoadKlass: | 118 case Op_LoadKlass: |
119 case Op_LoadNKlass: | 119 case Op_LoadNKlass: |
120 case Op_LoadRange: | 120 case Op_LoadRange: |
121 case Op_LoadD_unaligned: | 121 case Op_LoadD_unaligned: |
122 case Op_LoadL_unaligned: | 122 case Op_LoadL_unaligned: |
123 assert(mach->in(2) == val, "should be address"); | |
123 break; | 124 break; |
124 case Op_StoreB: | 125 case Op_StoreB: |
125 case Op_StoreC: | 126 case Op_StoreC: |
126 case Op_StoreCM: | 127 case Op_StoreCM: |
127 case Op_StoreD: | 128 case Op_StoreD: |
144 // embedded loads | 145 // embedded loads |
145 continue; | 146 continue; |
146 default: // Also check for embedded loads | 147 default: // Also check for embedded loads |
147 if( !mach->needs_anti_dependence_check() ) | 148 if( !mach->needs_anti_dependence_check() ) |
148 continue; // Not an memory op; skip it | 149 continue; // Not an memory op; skip it |
150 { | |
151 // Check that value is used in memory address. | |
152 Node* base; | |
153 Node* index; | |
154 const MachOper* oper = mach->memory_inputs(base, index); | |
155 if (oper == NULL || oper == (MachOper*)-1) { | |
156 continue; // Not an memory op; skip it | |
157 } | |
158 if (val == base || | |
159 val == index && val->bottom_type()->isa_narrowoop()) { | |
160 break; // Found it | |
161 } else { | |
162 continue; // Skip it | |
163 } | |
164 } | |
149 break; | 165 break; |
150 } | 166 } |
151 // check if the offset is not too high for implicit exception | 167 // check if the offset is not too high for implicit exception |
152 { | 168 { |
153 intptr_t offset = 0; | 169 intptr_t offset = 0; |