|  | // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | // | 
|  | // Regression test for https://github.com/dart-lang/sdk/issues/36374. | 
|  | // | 
|  | // Bytecode flow graph builder should be able to correctly handle non-empty | 
|  | // expression stack when throwing an exception: dropping some of the entries, | 
|  | // while keeping entries which could still be used. | 
|  | // | 
|  | // VMOptions=--optimization_counter_threshold=10 --deterministic | 
|  |  | 
|  | class Foo { | 
|  | Foo(int x); | 
|  | } | 
|  |  | 
|  | class Bar { | 
|  | Bar(String y, Foo z); | 
|  | } | 
|  |  | 
|  | foo(Object arg) { | 
|  | return Bar('abc', arg == null ? null : Foo((throw 'Err'))); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | for (int i = 0; i < 20; ++i) { | 
|  | foo(null); | 
|  | } | 
|  | } |