blob: 73ba5df269e10ad39d94c3795fd05638677d8b04 [file] [log] [blame]
// Copyright (c) 2018, 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 shaking18;
public class Shaking {
public static void main(String[] args) {
int i = args.length;
run(i);
}
private static void run(int i) {
// Three invocations of each method to avoid inlining.
Options o =
i % 2 == 0 ? getOptions(i % 3) : i % 5 == 0 ? getOptions(i % 7) : getOptions(i % 11);
print(make(o, i % 13));
print(make(o, i % 17));
print(make(o, i % 19));
}
private static Base make(Options o, int i) {
if (o.alwaysFalse) {
return new DerivedUnused();
}
return o.dummy ? new Derived1() : new Derived2();
}
private static Options getOptions(int i) {
Options o = new Options();
o.dummy = i % 101 < 23;
return o;
}
private static void print(Base b) {
System.out.println(b.getMessage());
}
}