Mercurial > hg > truffle
changeset 17005:112ab4a3de3a
Truffle: added Graal runtime API to wait for the completion of a compilation.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 01 Sep 2014 20:08:18 +0200 |
parents | 158c9ba66e45 |
children | e9c119927199 |
files | graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java |
diffstat | 2 files changed, 15 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Mon Sep 01 20:08:18 2014 +0200 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Mon Sep 01 20:08:18 2014 +0200 @@ -345,6 +345,17 @@ return false; } + public void waitForCompilation(OptimizedCallTarget optimizedCallTarget, long timeout) throws ExecutionException, TimeoutException { + Future<?> codeTask = this.compilations.get(optimizedCallTarget); + if (codeTask != null && isCompiling(optimizedCallTarget)) { + try { + codeTask.get(timeout, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + // ignore interrupted + } + } + } + public boolean isCompiling(OptimizedCallTarget optimizedCallTarget) { Future<?> codeTask = this.compilations.get(optimizedCallTarget); if (codeTask != null) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Mon Sep 01 20:08:18 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Mon Sep 01 20:08:18 2014 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.truffle; +import java.util.concurrent.*; + import com.oracle.graal.nodes.spi.*; import com.oracle.truffle.api.*; @@ -33,6 +35,8 @@ boolean cancelInstalledTask(OptimizedCallTarget optimizedCallTarget); + void waitForCompilation(OptimizedCallTarget optimizedCallTarget, long timeout) throws ExecutionException, TimeoutException; + boolean isCompiling(OptimizedCallTarget optimizedCallTarget); void invalidateInstalledCode(OptimizedCallTarget optimizedCallTarget);