| // 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 com.android.tools.r8.debuginfo; |
| |
| public class SynchronizedMethodTest { |
| |
| private static synchronized int syncStatic(int x) { |
| if (x % 2 == 0) { |
| return 42; |
| } |
| return -Math.abs(x); |
| } |
| |
| private synchronized int syncInstance(int x) { |
| if (x % 2 == 0) { |
| return 42; |
| } |
| return -Math.abs(x); |
| } |
| |
| private static synchronized int throwing(int cond) { |
| int x = 42; |
| if (cond < 0) { |
| throw new IllegalStateException(); |
| } |
| return 2; |
| } |
| |
| private static synchronized int monitorExitRegression(int cond) { |
| int x = 42; |
| switch (cond) { |
| case 1: |
| return 1; |
| case 2: |
| throw new IllegalStateException(); |
| case 3: |
| throw new RuntimeException(); |
| case 4: |
| return 2; |
| case 5: |
| x = 7; |
| case 6: |
| return 3; |
| default: |
| } |
| if (cond > 0) { |
| x = cond + cond; |
| } else { |
| throw new ArithmeticException(); |
| } |
| return 2; |
| } |
| |
| public static void main(String[] args) { |
| System.out.println(syncStatic(1234)); |
| System.out.println(new SynchronizedMethodTest().syncInstance(1234)); |
| System.out.println(throwing(1234)); |
| System.out.println(monitorExitRegression(1234)); |
| } |
| } |