|  | // Copyright (c) 2017, the R8 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. | 
|  | package inlining; | 
|  |  | 
|  | @NoHorizontalClassMerging | 
|  | class InlineConstructor { | 
|  |  | 
|  | int a; | 
|  |  | 
|  | @CheckDiscarded | 
|  | InlineConstructor(int a) { | 
|  | this.a = a; | 
|  | } | 
|  |  | 
|  | InlineConstructor(long a) { | 
|  | this((int) a); | 
|  | } | 
|  |  | 
|  | InlineConstructor(int a, int loopy) { | 
|  | this.a = a; | 
|  | // Make this too big to inline. | 
|  | if (loopy > 10) { | 
|  | throw new RuntimeException("Too big!"); | 
|  | } | 
|  | for (int i = 1; i < loopy; i++) { | 
|  | this.a = this.a * i; | 
|  | } | 
|  | } | 
|  |  | 
|  | @CheckDiscarded | 
|  | InlineConstructor() { | 
|  | this(42, 9); | 
|  | } | 
|  |  | 
|  | static InlineConstructor create() { | 
|  | return new InlineConstructor(10L); | 
|  | } | 
|  |  | 
|  | static InlineConstructor createMore() { | 
|  | new InlineConstructor(0, 0); | 
|  | new InlineConstructor(0, 0); | 
|  | new InlineConstructor(0, 0); | 
|  | new InlineConstructor(0, 0); | 
|  | new InlineConstructor(0, 0); | 
|  | new InlineConstructor(0, 0); | 
|  | return new InlineConstructor(); | 
|  | } | 
|  | } |