comparison src/share/vm/classfile/stackMapFrame.hpp @ 2181:d25d4ca69222

Merge.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Wed, 16 Feb 2011 13:47:20 +0100
parents 3582bf76420e
children c1a6154012c8
comparison
equal deleted inserted replaced
2108:50b45e2d9725 2181:d25d4ca69222
175 // is assignable to type. 175 // is assignable to type.
176 inline VerificationType pop_stack(VerificationType type, TRAPS) { 176 inline VerificationType pop_stack(VerificationType type, TRAPS) {
177 if (_stack_size != 0) { 177 if (_stack_size != 0) {
178 VerificationType top = _stack[_stack_size - 1]; 178 VerificationType top = _stack[_stack_size - 1];
179 bool subtype = type.is_assignable_from( 179 bool subtype = type.is_assignable_from(
180 top, verifier()->current_class(), 180 top, verifier(), CHECK_(VerificationType::bogus_type()));
181 CHECK_(VerificationType::bogus_type()));
182 if (subtype) { 181 if (subtype) {
183 _stack_size --; 182 _stack_size --;
184 NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); ) 183 NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); )
185 return top; 184 return top;
186 } 185 }
192 VerificationType type1, VerificationType type2, TRAPS) { 191 VerificationType type1, VerificationType type2, TRAPS) {
193 assert(type1.is_long2() || type1.is_double2(), "must be long/double"); 192 assert(type1.is_long2() || type1.is_double2(), "must be long/double");
194 assert(type2.is_long() || type2.is_double(), "must be long/double_2"); 193 assert(type2.is_long() || type2.is_double(), "must be long/double_2");
195 if (_stack_size >= 2) { 194 if (_stack_size >= 2) {
196 VerificationType top1 = _stack[_stack_size - 1]; 195 VerificationType top1 = _stack[_stack_size - 1];
197 bool subtype1 = type1.is_assignable_from( 196 bool subtype1 = type1.is_assignable_from(top1, verifier(), CHECK);
198 top1, verifier()->current_class(), CHECK);
199 VerificationType top2 = _stack[_stack_size - 2]; 197 VerificationType top2 = _stack[_stack_size - 2];
200 bool subtype2 = type2.is_assignable_from( 198 bool subtype2 = type2.is_assignable_from(top2, verifier(), CHECK);
201 top2, verifier()->current_class(), CHECK);
202 if (subtype1 && subtype2) { 199 if (subtype1 && subtype2) {
203 _stack_size -= 2; 200 _stack_size -= 2;
204 NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); ) 201 NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); )
205 NOT_PRODUCT( _stack[_stack_size+1] = VerificationType::bogus_type(); ) 202 NOT_PRODUCT( _stack[_stack_size+1] = VerificationType::bogus_type(); )
206 return; 203 return;