1 /* |
1 /* |
2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 2014, 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. |
236 // is assignable to type. |
236 // is assignable to type. |
237 inline VerificationType pop_stack(VerificationType type, TRAPS) { |
237 inline VerificationType pop_stack(VerificationType type, TRAPS) { |
238 if (_stack_size != 0) { |
238 if (_stack_size != 0) { |
239 VerificationType top = _stack[_stack_size - 1]; |
239 VerificationType top = _stack[_stack_size - 1]; |
240 bool subtype = type.is_assignable_from( |
240 bool subtype = type.is_assignable_from( |
241 top, verifier(), CHECK_(VerificationType::bogus_type())); |
241 top, verifier(), false, CHECK_(VerificationType::bogus_type())); |
242 if (subtype) { |
242 if (subtype) { |
243 --_stack_size; |
243 --_stack_size; |
244 return top; |
244 return top; |
245 } |
245 } |
246 } |
246 } |
251 VerificationType type1, VerificationType type2, TRAPS) { |
251 VerificationType type1, VerificationType type2, TRAPS) { |
252 assert(type1.is_long2() || type1.is_double2(), "must be long/double"); |
252 assert(type1.is_long2() || type1.is_double2(), "must be long/double"); |
253 assert(type2.is_long() || type2.is_double(), "must be long/double_2"); |
253 assert(type2.is_long() || type2.is_double(), "must be long/double_2"); |
254 if (_stack_size >= 2) { |
254 if (_stack_size >= 2) { |
255 VerificationType top1 = _stack[_stack_size - 1]; |
255 VerificationType top1 = _stack[_stack_size - 1]; |
256 bool subtype1 = type1.is_assignable_from(top1, verifier(), CHECK); |
256 bool subtype1 = type1.is_assignable_from(top1, verifier(), false, CHECK); |
257 VerificationType top2 = _stack[_stack_size - 2]; |
257 VerificationType top2 = _stack[_stack_size - 2]; |
258 bool subtype2 = type2.is_assignable_from(top2, verifier(), CHECK); |
258 bool subtype2 = type2.is_assignable_from(top2, verifier(), false, CHECK); |
259 if (subtype1 && subtype2) { |
259 if (subtype1 && subtype2) { |
260 _stack_size -= 2; |
260 _stack_size -= 2; |
261 return; |
261 return; |
262 } |
262 } |
263 } |
263 } |