| // Copyright (c) 2023, 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; |
| |
| /** Client supplied checker to allow cancelling a compilation before completion. */ |
| @Keep |
| public interface CancelCompilationChecker { |
| |
| /** |
| * Callback that is called periodically by the compiler to check if the current compilation should |
| * be cancelled before completion. The method should return true or false. The behavior of |
| * throwing an exception from this method will also abort the compilation but the compiler will |
| * treat such cases as an unexpected runtime failure and not as an expected client cancellation. |
| * |
| * <p>If this method returns true at any point before compilation has successfully completed, then |
| * the compiler will exit with a {@link CompilationFailedException}. It is *not* possible to |
| * cancel the cancellation. |
| * |
| * <p>This method may be called from multiple compiler threads. It is up to the client to ensure |
| * thread safety in determining if compilation should be cancelled. |
| * |
| * @return True if the compilation should be cancelled, otherwise false. |
| */ |
| boolean cancel(); |
| } |