From f1dd7e5692787b0b4cba8718b936bf8fecbeb4f7 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 21 Jan 2019 11:52:59 +0100
Subject: [PATCH 01/27] Using Scripting API in platform/core.network
---
nbbuild/travis/scripting.sh | 2 +
platform/core.network/arch.xml | 13 +---
platform/core.network/manifest.mf | 2 +-
platform/core.network/nbproject/project.xml | 18 +++--
.../network/proxy/NetworkProxyReloader.java | 5 +-
.../core/network/proxy/ProxyAutoConfig.java | 4 +-
.../network/proxy/pac/PacScriptEvaluator.java | 2 +-
.../proxy/pac/datetime/PacUtilsDateTime.java | 2 +-
.../proxy/pac/impl/ClassFilterPacHelpers.java | 42 -----------
.../proxy/pac/impl/NbPacScriptEvaluator.java | 75 +++++--------------
.../core/network/utils/IpAddressUtils.java | 32 ++++++--
.../pac/impl/PacHelperMethodsImplTest.java | 6 +-
.../netbeans/core/network/utils/FakeDns.java | 32 ++++++--
.../network/utils/IpAddressUtilsTest.java | 6 +-
14 files changed, 105 insertions(+), 136 deletions(-)
delete mode 100644 platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/ClassFilterPacHelpers.java
diff --git a/nbbuild/travis/scripting.sh b/nbbuild/travis/scripting.sh
index b6ad04a46b1d..6c0953ce39b2 100755
--- a/nbbuild/travis/scripting.sh
+++ b/nbbuild/travis/scripting.sh
@@ -32,6 +32,7 @@ fi
ant -f platform/api.scripting/build.xml test
ant -f ide/libs.graalsdk/build.xml test
ant -f webcommon/libs.graaljs/build.xml test
+ant -f platform/core.network/build.xml test
$GRAALVM/bin/gu install python
$GRAALVM/bin/gu install R
@@ -44,5 +45,6 @@ JAVA_HOME=$GRAALVM ant -f ide/libs.graalsdk/build.xml test
# currently broken. fixed by
# https://github.com/oracle/graal/commit/4c217f2b2fba77c55d05c7aa3654e13c215b5ddb
# which is likely to appear in GraalVM RC12
+JAVA_HOME=$GRAALVM ant -f platform/core.network/build.xml test || echo "==== May fail ===="
JAVA_HOME=$GRAALVM ant -f webcommon/libs.graaljs/build.xml test || echo "==== Expected failure ===="
diff --git a/platform/core.network/arch.xml b/platform/core.network/arch.xml
index 59da8650ad77..5ec2e4f60f79 100644
--- a/platform/core.network/arch.xml
+++ b/platform/core.network/arch.xml
@@ -104,9 +104,8 @@
which clients are supposed to download and execute in order to find
out which proxy to use. This is known as Proxy Auto-Config
(or PAC). This module provides a pluggable PAC evaluation environment
- based on Nashorn. However, it will gracefully degrade to any other JavaScript
- which may be installed in the JVM. Execution of the downloaded
- JavaScript code is sandboxed. (only true for Nashorn)
+ based on available JavaScript engine installed in the JVM.
+ Execution of the downloaded JavaScript code is sandboxed.
If you don't like the PAC evaluation environment provided
@@ -732,14 +731,6 @@
-->
-
- Yes. It detects the presence of Nashorn (as opposed to say Rhino) by way
- of reflection. In particular it needs to know if the Java version is
- Java 8u40 as Nashorn was greatly enhanced in that update and was more
- or less useless (for our purpose) before this time. The use of reflection
- means the code will gracefully 'degrade' to whatever script engine is
- available if we are not on Java 8u40 or later.
-
For testing only a dirty hack is used in our FakeDns class.
This installs itself as a preferred name service in Java. This is done
diff --git a/platform/core.network/manifest.mf b/platform/core.network/manifest.mf
index e9249bbb040d..5dbb6da22e06 100644
--- a/platform/core.network/manifest.mf
+++ b/platform/core.network/manifest.mf
@@ -3,4 +3,4 @@ OpenIDE-Module: org.netbeans.core.network
OpenIDE-Module-Localizing-Bundle: org/netbeans/core/network/proxy/Bundle.properties
OpenIDE-Module-Provides: org.netbeans.core.ProxySettings.Reloader
OpenIDE-Module-Specification-Version: 1.14
-
+OpenIDE-Module-Recommends: javax.script.ScriptEngine.js
diff --git a/platform/core.network/nbproject/project.xml b/platform/core.network/nbproject/project.xml
index 0fe2742bcc5b..4188cb143a79 100644
--- a/platform/core.network/nbproject/project.xml
+++ b/platform/core.network/nbproject/project.xml
@@ -34,6 +34,14 @@
1.28
+
+ org.netbeans.api.scripting
+
+
+
+ 1.0
+
+
org.netbeans.core
@@ -94,7 +102,7 @@
- org.openide.util.ui
+ org.openide.util
@@ -102,19 +110,19 @@
- org.openide.util
+ org.openide.util.lookup
- 9.3
+ 8.20
- org.openide.util.lookup
+ org.openide.util.ui
- 8.20
+ 9.3
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/NetworkProxyReloader.java b/platform/core.network/src/org/netbeans/core/network/proxy/NetworkProxyReloader.java
index e4bd41092dba..20ddc9d57685 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/NetworkProxyReloader.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/NetworkProxyReloader.java
@@ -78,8 +78,9 @@ public static void reloadNetworkProxy() {
} else {
LOGGER.log(Level.INFO, "System network proxy reloading succeeded."); //NOI18N
}
-
- switch (networkProxySettings.getProxyMode()) {
+
+ NetworkProxySettings.ProxyMode mode = networkProxySettings.getProxyMode();
+ switch (mode) {
case AUTO:
final ProxyAutoConfig pacForTest = ProxyAutoConfig.get(networkProxySettings.getPacFileUrl());
List testHttpProxy = null;
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/ProxyAutoConfig.java b/platform/core.network/src/org/netbeans/core/network/proxy/ProxyAutoConfig.java
index 629dd91a12db..06ce26841a76 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/ProxyAutoConfig.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/ProxyAutoConfig.java
@@ -57,7 +57,7 @@ public static synchronized ProxyAutoConfig get(String pacFile) {
try {
instance = new ProxyAutoConfig(pacFile);
} catch (URISyntaxException ex) {
- Logger.getLogger(ProxyAutoConfig.class.getName()).warning("Parsing " + pacFile + " to URI throws " + ex);
+ LOGGER.warning("Parsing " + pacFile + " to URI throws " + ex);
} finally {
file2pac.put(pacFile, instance);
}
@@ -86,7 +86,7 @@ public URI getPacURI() {
return pacURI;
}
- private void initEngine() {
+ final void initEngine() {
String pacSource = null;
if (pacURI.isAbsolute()) {
try (InputStream is = downloadPAC(pacURI.toURL())) {
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/PacScriptEvaluator.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/PacScriptEvaluator.java
index ad3d755f3d64..2aff48a4e0c1 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/PacScriptEvaluator.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/PacScriptEvaluator.java
@@ -70,7 +70,7 @@ public interface PacScriptEvaluator {
/**
* Gets relevant information about the engine, typically the name
- * of the JavaScript engine (e.g. 'Nashorn'), version number, etc.
+ * of the JavaScript engine, version number, etc.
* @return info
*/
public String getEngineInfo();
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/datetime/PacUtilsDateTime.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/datetime/PacUtilsDateTime.java
index e08d2ce950d5..c5276616dd20 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/datetime/PacUtilsDateTime.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/datetime/PacUtilsDateTime.java
@@ -320,7 +320,7 @@ private static Calendar getCalendar(Date now, boolean useGMT) {
* {@link PacHelperMethodsNetscape#weekdayRange(java.lang.Object...) weekdayRange()}
*
*
- * Note: In Nashorn, JavaScript function arguments that are not used in the
+ * Note: In some engines, JavaScript function arguments that are not used in the
* call will have a type of {@code Undefined}.
*
* @param objs
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/ClassFilterPacHelpers.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/ClassFilterPacHelpers.java
deleted file mode 100644
index 7c5a742b2fce..000000000000
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/ClassFilterPacHelpers.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.core.network.proxy.pac.impl;
-
-import jdk.nashorn.api.scripting.ClassFilter;
-import org.netbeans.core.network.proxy.pac.PacHelperMethods;
-
-/**
- * Nashorn class filter which helps us create a sandboxed JavaScript execution
- * environment which only has access to the Helper methods, nothing more.
- *
- *
Note that the ClassFilter feature is specific to Nashorn (Rhino had the
- * {@code ClassShutter} class for this purpose), but the feature did not appear
- * until Java 8u40.
- *
- * @author lbruun
- */
-class ClassFilterPacHelpers implements ClassFilter {
-
- @Override
- public boolean exposeToScripts(String string) {
- // The only Java class the PAC script is allowed to
- // make use of is the PAC Helpers, nothing more.
- return string.equals(PacHelperMethods.class.getName());
- }
-}
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
index 55f09b6ade92..f6a5cdd332eb 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
@@ -37,8 +37,7 @@
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
-import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
-import jdk.nashorn.api.scripting.ScriptObjectMirror;
+import org.netbeans.api.scripting.Scripting;
import org.netbeans.core.network.utils.SimpleObjCache;
import org.netbeans.core.network.proxy.pac.PacHelperMethods;
import org.netbeans.core.network.proxy.pac.PacJsEntryFunction;
@@ -195,13 +194,11 @@ public class NbPacScriptEvaluator implements PacScriptEvaluator {
private static final String PAC_SOCKS5_FFEXT = "SOCKS5"; // Mozilla Firefox extension. Not part of original Netscape spec.
private static final String PAC_HTTP_FFEXT = "HTTP"; // Mozilla Firefox extension. Not part of original Netscape spec.
private static final String PAC_HTTPS_FFEXT = "HTTPS"; // Mozilla Firefox extension. Not part of original Netscape spec.
- private final boolean nashornJava8u40Available;
private final String pacScriptSource;
public NbPacScriptEvaluator(String pacSourceCocde) throws PacParsingException {
this.pacScriptSource = pacSourceCocde;
- nashornJava8u40Available = getNashornJava8u40Available();
scriptEngine = getScriptEngine(pacSourceCocde);
canUseURLCaching = !usesTimeDateFunctions(pacSourceCocde);
if (canUseURLCaching) {
@@ -281,12 +278,7 @@ private PacScriptEngine getScriptEngine(String pacSource) throws PacParsingExcep
String helperJSScript = getHelperJsScriptSource();
LOGGER.log(Level.FINER, "PAC Helper JavaScript :\n{0}", helperJSScript);
- ScriptEngine engine;
- if (nashornJava8u40Available) {
- engine = getNashornJSScriptEngine();
- } else {
- engine = getGenericJSScriptEngine();
- }
+ ScriptEngine engine = getGenericJSScriptEngine();
LOGGER.log(Level.FINE, "PAC script evaluator using: {0}", getEngineInfo(engine));
@@ -304,11 +296,7 @@ private PacScriptEngine getScriptEngine(String pacSource) throws PacParsingExcep
// Do some minimal testing of the validity of the PAC Script.
final PacJsEntryFunction jsMainFunction;
- if (nashornJava8u40Available) {
- jsMainFunction = testScriptEngine(engine, true);
- } else {
- jsMainFunction = testScriptEngine(engine, false);
- }
+ jsMainFunction = testScriptEngine(engine, false);
return new PacScriptEngine(engine, jsMainFunction);
} catch (ScriptException ex) {
@@ -316,25 +304,17 @@ private PacScriptEngine getScriptEngine(String pacSource) throws PacParsingExcep
}
}
- private boolean getNashornJava8u40Available() {
- try {
- Class> klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory");
- } catch (ClassNotFoundException ex) {
- return false;
- }
- return true;
- }
-
- private ScriptEngine getNashornJSScriptEngine() {
- NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
- return factory.getScriptEngine(new ClassFilterPacHelpers());
- }
-
private ScriptEngine getGenericJSScriptEngine() {
- // The result of the statements below may be Rhino, but more likely
- // - since Java 8 - it will be a Nashorn engine.
- ScriptEngineManager factory = new ScriptEngineManager();
- return factory.getEngineByName("JavaScript");
+ ScriptEngineManager manager = Scripting.createManager();
+ ScriptEngine mimeBased = manager.getEngineByMimeType("text/javascript");
+ if (mimeBased != null) {
+ return mimeBased;
+ }
+ ScriptEngine namedJavaScript = manager.getEngineByName("JavaScript");
+ if (namedJavaScript != null) {
+ return namedJavaScript;
+ }
+ return manager.getEngineByExtension("js");
}
/**
@@ -352,29 +332,14 @@ private PacJsEntryFunction testScriptEngine(ScriptEngine eng, boolean doDeepTest
}
private boolean isJsFunctionAvailable(ScriptEngine eng, String functionName, boolean doDeepTest) {
- // We want to test if the function is there, but without actually
- // invoking it.
- Object obj = eng.get(functionName);
-
- if (!doDeepTest && obj != null) {
- // Shallow test. We've established that there's
- // "something" in the ENGINE_SCOPE with a name like
- // functionName, and we *hope* it is a function, but we really don't
- // know, therefore we call it a shallow test.
- return true;
+ try {
+ Object typeofCheck = eng.eval("(function(name) { return typeof this[name]; })");
+ Object type = ((Invocable) eng).invokeMethod(typeofCheck, "call", null, functionName);
+ return "function".equals(type);
+ } catch (NoSuchMethodException | ScriptException ex) {
+ LOGGER.log(Level.WARNING, null, ex);
+ return false;
}
-
- // For Nashorn post JDK8u40 we can do even deeper validation
- // using the ScriptObjectMirror class. This will not work for Rhino.
- if (doDeepTest && obj != null) {
- if (obj instanceof ScriptObjectMirror) {
- ScriptObjectMirror som = (ScriptObjectMirror) obj;
- if (som.isFunction()) {
- return true;
- }
- }
- }
- return false;
}
diff --git a/platform/core.network/src/org/netbeans/core/network/utils/IpAddressUtils.java b/platform/core.network/src/org/netbeans/core/network/utils/IpAddressUtils.java
index 55b548da6e8a..7c745f5d8152 100644
--- a/platform/core.network/src/org/netbeans/core/network/utils/IpAddressUtils.java
+++ b/platform/core.network/src/org/netbeans/core/network/utils/IpAddressUtils.java
@@ -35,6 +35,7 @@
import java.util.regex.Pattern;
import org.netbeans.api.annotations.common.NonNull;
import org.openide.util.Exceptions;
+import org.openide.util.Lookup;
import org.openide.util.RequestProcessor;
/**
@@ -52,7 +53,18 @@ public class IpAddressUtils {
private static final Pattern IPV4_PATTERN = Pattern.compile("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$");
private static final RequestProcessor RP = new RequestProcessor("DNSBackgroundResolvers", 10);
- private IpAddressUtils() {}
+ IpAddressUtils() {}
+
+ private static IpAddressUtils INSTANCE;
+ private static synchronized IpAddressUtils getDefault() {
+ if (INSTANCE == null) {
+ INSTANCE = Lookup.getDefault().lookup(IpAddressUtils.class);
+ if (INSTANCE == null) {
+ INSTANCE = new IpAddressUtils();
+ }
+ }
+ return INSTANCE;
+ }
/**
* Filters the result of a method according to IP protocol preference.
@@ -142,7 +154,7 @@ public enum IpTypePreference {
* @throws UnknownHostException if no IP address for the host could be
* found.
*/
- public static @NonNull InetAddress[] nameResolveArr(String host, int timeoutMs, IpTypePreference ipTypePref)
+ public static @NonNull InetAddress[] nameResolveArr(String host, int timeoutMs, IpTypePreference ipTypePref)
throws InterruptedException, UnknownHostException, TimeoutException {
if (looksLikeIpv6Literal(host) || looksLikeIpv4Literal(host)) {
@@ -158,7 +170,7 @@ public enum IpTypePreference {
return new InetAddress[]{addr};
}
- Callable lookupTask = new DnsTimeoutTask(host);
+ Callable lookupTask = getDefault().createDnsTimeoutTask(host);
Future future = RP.submit(lookupTask);
try {
InetAddress[] ipAddresses;
@@ -191,7 +203,7 @@ public enum IpTypePreference {
throw new TimeoutException("No answer from name service within " + timeoutMs + " milliseconds when resolving \"" + host+ "\"");
}
}
-
+
/**
* Performs a name service lookup with a timeout. Same as
* {@link #nameResolveArr(java.lang.String, int, org.netbeans.network.IpAddressUtils.IpTypePreference) nameResolveArr()}
@@ -212,7 +224,7 @@ public enum IpTypePreference {
* @throws UnknownHostException if no IP address for the host could be
* found.
*/
- public static @NonNull InetAddress nameResolve(String host, int timeoutMs, IpTypePreference ipTypePref)
+ public static @NonNull InetAddress nameResolve(String host, int timeoutMs, IpTypePreference ipTypePref)
throws InterruptedException, UnknownHostException, TimeoutException {
InetAddress[] ipAddresses = nameResolveArr(host, timeoutMs, ipTypePref);
// We're guaranteed the array will have length > 0 and never null,
@@ -245,7 +257,7 @@ public enum IpTypePreference {
* @throws UnknownHostException if no IP address for the host could be
* found.
*/
- public static @NonNull InetAddress nameResolve(String host, int timeoutMs)
+ public static @NonNull InetAddress nameResolve(String host, int timeoutMs)
throws InterruptedException, UnknownHostException, TimeoutException {
return nameResolve(host, timeoutMs, IpTypePreference.ANY_JDK_PREF);
}
@@ -444,7 +456,7 @@ private static void sortIpAddresses0(List addresses, boolean ip4Bef
}
-
+
private static class DnsTimeoutTask implements Callable {
private final String host;
@@ -521,6 +533,12 @@ private static boolean isAsciiDigit(char c) {
return c >= 48 && c <= 57;
}
+ //
+ // hook for tests
+ //
+ Callable createDnsTimeoutTask(String host) {
+ return new DnsTimeoutTask(host);
+ }
}
diff --git a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/impl/PacHelperMethodsImplTest.java b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/impl/PacHelperMethodsImplTest.java
index 2a0548c19294..6337ce44baa7 100644
--- a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/impl/PacHelperMethodsImplTest.java
+++ b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/impl/PacHelperMethodsImplTest.java
@@ -33,6 +33,9 @@
import org.junit.Before;
import org.junit.BeforeClass;
import org.netbeans.core.network.utils.FakeDns;
+import org.netbeans.core.network.utils.IpAddressUtils;
+import org.netbeans.junit.MockServices;
+import org.openide.util.Lookup;
/**
*
@@ -63,7 +66,8 @@ public static void tearDownClass() {
@Before
public void setUp() throws UnknownHostException {
- fakeDns = new FakeDns();
+ MockServices.setServices(FakeDns.class);
+ fakeDns = Lookup.getDefault().lookup(FakeDns.class);
fakeDns.install(true);
ipv4Addr = InetAddress.getByName("172.217.17.36"); // just some random address
ipv6Addr = InetAddress.getByName("2a00:1450:400e:804::2004"); // just some random address
diff --git a/platform/core.network/test/unit/src/org/netbeans/core/network/utils/FakeDns.java b/platform/core.network/test/unit/src/org/netbeans/core/network/utils/FakeDns.java
index 107c45d8a103..8521d47cfa08 100644
--- a/platform/core.network/test/unit/src/org/netbeans/core/network/utils/FakeDns.java
+++ b/platform/core.network/test/unit/src/org/netbeans/core/network/utils/FakeDns.java
@@ -22,8 +22,10 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import sun.net.spi.nameservice.NameService;
@@ -41,13 +43,13 @@
*
* @author lbruun
*/
-public class FakeDns {
+public class FakeDns extends IpAddressUtils {
private final Map forwardResolutions = new ConcurrentHashMap<>();
private final Map reverseResolutions = new ConcurrentHashMap<>();
private final List orgNameServices = new ArrayList<>();
- private volatile boolean installed = false;
+ private volatile List installed = null;
private final AtomicLong delayAnsweringByMs = new AtomicLong(0);
public FakeDns() {
@@ -95,7 +97,7 @@ public void addReverseResolution(InetAddress ipAddress, String hostname) {
* @param removeOthers if other name services should be removed
*/
public synchronized void install(boolean removeOthers) {
- if (installed) {
+ if (installed != null) {
return;
}
List nameServices = getKnownNameServices();
@@ -109,7 +111,9 @@ public synchronized void install(boolean removeOthers) {
// Install ourselves in position 0, ahead of everyone else
nameServices.add(0, new NameServiceInMemory());
- installed = true;
+ installed = nameServices;
+ } else {
+ installed = Collections.singletonList(new NameServiceInMemory());
}
}
@@ -119,7 +123,7 @@ public synchronized void install(boolean removeOthers) {
* FakeDns.
*/
public synchronized void unInstall() {
- if (!installed) {
+ if (installed == null) {
return;
}
List nameServices = getKnownNameServices();
@@ -129,7 +133,7 @@ public synchronized void unInstall() {
if (ns != null) {
if (ns instanceof NameServiceInMemory) {
nameServices.remove(0);
- installed = false;
+ installed = null;
}
}
@@ -172,6 +176,22 @@ private List getKnownNameServices() {
return null;
}
+ @Override
+ Callable createDnsTimeoutTask(String host) {
+ return () -> {
+ List namedServices = installed;
+ if (namedServices == null) {
+ return null;
+ }
+ for (NameService ns : namedServices) {
+ InetAddress[] result = ns.lookupAllHostAddr(host);
+ if (result != null) {
+ return result;
+ }
+ }
+ return null;
+ };
+ }
private class NameServiceInMemory implements NameService {
@Override
diff --git a/platform/core.network/test/unit/src/org/netbeans/core/network/utils/IpAddressUtilsTest.java b/platform/core.network/test/unit/src/org/netbeans/core/network/utils/IpAddressUtilsTest.java
index 47b6f4f7ad22..15b9cb8a1e18 100644
--- a/platform/core.network/test/unit/src/org/netbeans/core/network/utils/IpAddressUtilsTest.java
+++ b/platform/core.network/test/unit/src/org/netbeans/core/network/utils/IpAddressUtilsTest.java
@@ -22,12 +22,13 @@
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
+import org.netbeans.junit.MockServices;
+import org.openide.util.Lookup;
/**
*
*/
public class IpAddressUtilsTest {
-
private FakeDns fakeDns;
private InetAddress ipv4Addr;
private InetAddress ipv6Addr;
@@ -37,6 +38,7 @@ public IpAddressUtilsTest() {
@BeforeClass
public static void setUpClass() {
+ MockServices.setServices(FakeDns.class);
}
@AfterClass
@@ -45,7 +47,7 @@ public static void tearDownClass() {
@Before
public void setUp() throws UnknownHostException {
- fakeDns = new FakeDns();
+ fakeDns = Lookup.getDefault().lookup(FakeDns.class);
fakeDns.install(true);
ipv4Addr = InetAddress.getByName("172.217.17.36"); // just some random address
From 1894e0ca0b4acc3145a4f955c845050a84859683 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 21 Jan 2019 14:21:02 +0100
Subject: [PATCH 02/27] Continue to specify class filter when using Nashorn
engine
---
.../proxy/pac/impl/NbPacScriptEvaluator.java | 36 +++++++++++++++++++
.../unit/data/pacFiles2/pac-test-getclass.js | 33 +++++++++++++++++
.../core/network/proxy/pac/PacEngineTest.java | 1 +
3 files changed, 70 insertions(+)
create mode 100644 platform/core.network/test/unit/data/pacFiles2/pac-test-getclass.js
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
index f6a5cdd332eb..78b5fa39bb92 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
@@ -18,6 +18,8 @@
*/
package org.netbeans.core.network.proxy.pac.impl;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
@@ -304,7 +306,41 @@ private PacScriptEngine getScriptEngine(String pacSource) throws PacParsingExcep
}
}
+ private boolean isNashornFactory(ScriptEngineFactory f) {
+ try {
+ Class> klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory");
+ return klass.isInstance(f);
+ } catch (ClassNotFoundException ex) {
+ return false;
+ }
+ }
+
+ private ScriptEngine secureEngineEngine(ScriptEngine e) {
+ try {
+ ScriptEngineFactory f = e.getFactory();
+ final Class extends ScriptEngineFactory> factoryClass = f.getClass();
+ final ClassLoader factoryClassLoader = factoryClass.getClassLoader();
+ Class> filterClass = Class.forName("jdk.nashorn.api.scripting.ClassFilter", true, factoryClassLoader);
+ Method createMethod = factoryClass.getMethod("getScriptEngine", filterClass);
+ Object filter = java.lang.reflect.Proxy.newProxyInstance(factoryClassLoader, new Class[] { filterClass }, (Object proxy, Method method, Object[] args) -> {
+ return false;
+ });
+ return (ScriptEngine) createMethod.invoke(f, filter);
+ } catch (NoSuchMethodException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
+ Exceptions.printStackTrace(ex);
+ return e;
+ }
+ }
+
private ScriptEngine getGenericJSScriptEngine() {
+ ScriptEngine eng = newGenericJSScriptEngine();
+ if (isNashornFactory(eng.getFactory())) {
+ return secureEngineEngine(eng);
+ }
+ return eng;
+ }
+
+ private ScriptEngine newGenericJSScriptEngine() {
ScriptEngineManager manager = Scripting.createManager();
ScriptEngine mimeBased = manager.getEngineByMimeType("text/javascript");
if (mimeBased != null) {
diff --git a/platform/core.network/test/unit/data/pacFiles2/pac-test-getclass.js b/platform/core.network/test/unit/data/pacFiles2/pac-test-getclass.js
new file mode 100644
index 000000000000..79d77ebf9e9e
--- /dev/null
+++ b/platform/core.network/test/unit/data/pacFiles2/pac-test-getclass.js
@@ -0,0 +1,33 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+//
+// A PAC script which tries to break out of the sandbox and attempts
+// to do something really nasty.
+//
+
+function FindProxyForURL(url, host)
+{
+ alert("pac-test-getclass.js");
+
+ var clazz = "".getClass();
+ if (!clazz) {
+ return "DIRECT";
+ } else {
+ return "PROXY " + clazz.toString().substring(6) + ":80";
+ }
+}
\ No newline at end of file
diff --git a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/PacEngineTest.java b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/PacEngineTest.java
index 7d109a7ff787..d61b120660b1 100644
--- a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/PacEngineTest.java
+++ b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/pac/PacEngineTest.java
@@ -71,6 +71,7 @@ public void testEngine() throws PacParsingException, IOException, URISyntaxExcep
testPacFile("pac-test2.js", factory, 3, true);
testPacFile("pac-test3.js", factory, 1, false);
testPacFileMalicious("pac-test-sandbox-breakout.js", factory);
+ testPacFileMalicious("pac-test-getclass.js", factory);
testPacFile2("pac-test4.js", factory);
}
From 294cb63cd9524fd8985cba1a9d6f71aba0ecee0b Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Tue, 22 Jan 2019 05:44:23 +0100
Subject: [PATCH 03/27] Allow exit from the unit test
---
.../netbeans/core/network/proxy/ProxyAutoConfigDirectTest.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/ProxyAutoConfigDirectTest.java b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/ProxyAutoConfigDirectTest.java
index a88a600d0c48..46ed0dcb2267 100644
--- a/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/ProxyAutoConfigDirectTest.java
+++ b/platform/core.network/test/unit/src/org/netbeans/core/network/proxy/ProxyAutoConfigDirectTest.java
@@ -28,6 +28,9 @@
import org.netbeans.junit.NbTestCase;
public class ProxyAutoConfigDirectTest extends NbTestCase {
+ static {
+ System.setProperty("netbeans.security.nocheck", "true");
+ }
public ProxyAutoConfigDirectTest(String name) {
super(name);
}
From f2c5275430ef882a26c6716feb120a53f7c48ac8 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 25 Jan 2019 15:10:04 +0100
Subject: [PATCH 04/27] ConfigureProxy task to set proxy before downloading
Gradle
---
groovy/gradle/build.xml | 11 +-
.../nbbuild/extlibs/ConfigureProxy.java | 140 ++++++++++++++++++
.../nbbuild/extlibs/DownloadBinaries.java | 64 +-------
3 files changed, 151 insertions(+), 64 deletions(-)
create mode 100644 nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
diff --git a/groovy/gradle/build.xml b/groovy/gradle/build.xml
index 75cfa0275218..346d38d8d494 100644
--- a/groovy/gradle/build.xml
+++ b/groovy/gradle/build.xml
@@ -23,6 +23,8 @@
Builds, tests, and runs the project org.netbeans.modules.gradle
+
+
@@ -36,9 +38,16 @@
-
+
+
+
+
+
+
+
+
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
new file mode 100644
index 000000000000..61a36fe52369
--- /dev/null
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.nbbuild.extlibs;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.Proxy;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+public final class ConfigureProxy extends Task {
+ private URL connectTo;
+ private String hostProperty = "http.proxyHost";
+ private String portProperty = "http.proxyPort";
+
+ public void setConnectTo(String uri) throws MalformedURLException {
+ connectTo = new URL(uri);
+ }
+
+ public void setHostProperty(String host) {
+ hostProperty = host;
+ }
+
+ public void setPortProperty(String port) {
+ portProperty = port;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ try {
+ URI[] connectedVia = { null };
+ URLConnection connect = openConnection(this, connectTo, connectedVia);
+ if (connect == null) {
+ throw new BuildException("Cannot connect to " + connectedVia);
+ }
+
+ if (connectedVia[0] != null) {
+ final String host = connectedVia[0].getHost();
+ log(String.format("Setting %s to %s", hostProperty, host), Project.MSG_INFO);
+ getProject().setUserProperty(hostProperty, host);
+ final int port = connectedVia[0].getPort();
+ log(String.format("Setting %s to %d", portProperty, port), Project.MSG_INFO);
+ getProject().setUserProperty(portProperty, "" + port);
+ }
+ } catch (IOException ex) {
+ throw new BuildException(ex);
+ }
+ }
+
+ static URLConnection openConnection(Task task, final URL url, URI[] connectedVia) throws IOException {
+ final URLConnection[] conn = { null };
+ final CountDownLatch connected = new CountDownLatch(1);
+ ExecutorService connectors = Executors.newFixedThreadPool(3);
+ connectors.submit(() -> {
+ String httpProxy = System.getenv("http_proxy");
+ if (httpProxy != null) {
+ try {
+ URI uri = new URI(httpProxy);
+ InetSocketAddress address = InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort());
+ Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
+ URLConnection test = url.openConnection(proxy);
+ test.connect();
+ conn[0] = test;
+ connected.countDown();
+ if (connectedVia != null) {
+ connectedVia[0] = uri;
+ }
+ } catch (IOException | URISyntaxException ex) {
+ task.log(ex, Project.MSG_ERR);
+ }
+ }
+ });
+ connectors.submit(() -> {
+ String httpProxy = System.getenv("https_proxy");
+ if (httpProxy != null) {
+ try {
+ URI uri = new URI(httpProxy);
+ InetSocketAddress address = InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort());
+ Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
+ URLConnection test = url.openConnection(proxy);
+ test.connect();
+ conn[0] = test;
+ connected.countDown();
+ if (connectedVia != null) {
+ connectedVia[0] = uri;
+ }
+ } catch (IOException | URISyntaxException ex) {
+ task.log(ex, Project.MSG_ERR);
+ }
+ }
+ });
+ connectors.submit(() -> {
+ try {
+ URLConnection test = url.openConnection();
+ test.connect();
+ conn[0] = test;
+ connected.countDown();
+ } catch (IOException ex) {
+ task.log(ex, Project.MSG_ERR);
+ }
+ });
+ try {
+ connected.await(5, TimeUnit.SECONDS);
+ } catch (InterruptedException ex) {
+ }
+ if (conn[0] == null) {
+ throw new IOException("Cannot connect to " + url);
+ }
+ return conn[0];
+ }
+
+}
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java
index 5f46f73c4c8e..c6f1363ca9a7 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java
@@ -266,7 +266,7 @@ private byte[] legacyDownload(String cacheName) throws IOException {
private byte[] downloadFromServer(URL url) throws IOException {
log("Downloading: " + url);
- URLConnection conn = openConnection(url);
+ URLConnection conn = ConfigureProxy.openConnection(this, url, null);
int code = HttpURLConnection.HTTP_OK;
if (conn instanceof HttpURLConnection) {
code = ((HttpURLConnection) conn).getResponseCode();
@@ -293,68 +293,6 @@ interface Downloader {
public byte[] download() throws IOException;
}
- private URLConnection openConnection(final URL url) throws IOException {
- final URLConnection[] conn = { null };
- final CountDownLatch connected = new CountDownLatch(1);
- ExecutorService connectors = Executors.newFixedThreadPool(3);
- connectors.submit(new Runnable() {
- public void run() {
- String httpProxy = System.getenv("http_proxy");
- if (httpProxy != null) {
- try {
- URI uri = new URI(httpProxy);
- InetSocketAddress address = InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort());
- Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
- URLConnection test = url.openConnection(proxy);
- test.connect();
- conn[0] = test;
- connected.countDown();
- } catch (IOException | URISyntaxException ex) {
- log(ex, Project.MSG_ERR);
- }
- }
- }
- });
- connectors.submit(new Runnable() {
- public void run() {
- String httpProxy = System.getenv("https_proxy");
- if (httpProxy != null) {
- try {
- URI uri = new URI(httpProxy);
- InetSocketAddress address = InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort());
- Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
- URLConnection test = url.openConnection(proxy);
- test.connect();
- conn[0] = test;
- connected.countDown();
- } catch (IOException | URISyntaxException ex) {
- log(ex, Project.MSG_ERR);
- }
- }
- }
- });
- connectors.submit(new Runnable() {
- public void run() {
- try {
- URLConnection test = url.openConnection();
- test.connect();
- conn[0] = test;
- connected.countDown();
- } catch (IOException ex) {
- log(ex, Project.MSG_ERR);
- }
- }
- });
- try {
- connected.await(5, TimeUnit.SECONDS);
- } catch (InterruptedException ex) {
- }
- if (conn[0] == null) {
- throw new IOException("Cannot connect to " + url);
- }
- return conn[0];
- }
-
private String hash(File f) {
try {
try (FileInputStream is = new FileInputStream(f)) {
From c9fdbfc39a260fe40e5ed6c7c02063bc15e487e6 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 29 Apr 2019 12:08:56 +0200
Subject: [PATCH 05/27] Updating to GraalVM RC16
---
ide/libs.graalsdk/external/binaries-list | 2 +-
ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt | 2 +-
ide/libs.graalsdk/nbproject/project.properties | 2 +-
ide/libs.graalsdk/nbproject/project.xml | 4 ++--
webcommon/libs.graaljs/external/binaries-list | 4 ++--
webcommon/libs.graaljs/external/js-1.0.0-license.txt | 2 +-
webcommon/libs.graaljs/nbproject/project.properties | 4 ++--
webcommon/libs.graaljs/nbproject/project.xml | 8 ++++----
webcommon/libs.truffleapi/external/binaries-list | 2 +-
.../external/truffle-api-1.0.0-license.txt | 2 +-
webcommon/libs.truffleapi/nbproject/project.properties | 2 +-
webcommon/libs.truffleapi/nbproject/project.xml | 4 ++--
12 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/ide/libs.graalsdk/external/binaries-list b/ide/libs.graalsdk/external/binaries-list
index 516396da253f..d0fdd151dd1b 100644
--- a/ide/libs.graalsdk/external/binaries-list
+++ b/ide/libs.graalsdk/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-0E1CCE754C9EF8847B473FAB3F848D1FE324F09E org.graalvm.sdk:graal-sdk:1.0.0-rc12
+747A07D17D24658A0186CA0356A5935FE5DA2F89 org.graalvm.sdk:graal-sdk:1.0.0-rc16
diff --git a/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt b/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt
index 7a5f1230e22f..ec90cf30194e 100644
--- a/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt
+++ b/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: graal-sdk-1.0.0-rc12.jar
+Files: graal-sdk-1.0.0-rc16.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/ide/libs.graalsdk/nbproject/project.properties b/ide/libs.graalsdk/nbproject/project.properties
index 2410fa9be36b..da98f27b7685 100644
--- a/ide/libs.graalsdk/nbproject/project.properties
+++ b/ide/libs.graalsdk/nbproject/project.properties
@@ -19,7 +19,7 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/graal-sdk-1.0.0-rc12.jar=modules/ext/graal-sdk-1.0.0-rc12.jar
+release.external/graal-sdk-1.0.0-rc16.jar=modules/ext/graal-sdk-1.0.0-rc16.jar
javadoc.arch=${basedir}/arch.xml
javadoc.apichanges=${basedir}/apichanges.xml
diff --git a/ide/libs.graalsdk/nbproject/project.xml b/ide/libs.graalsdk/nbproject/project.xml
index f946e59a1f59..178b8443da26 100644
--- a/ide/libs.graalsdk/nbproject/project.xml
+++ b/ide/libs.graalsdk/nbproject/project.xml
@@ -80,8 +80,8 @@
org.netbeans.libs.graalsdk
- ext/graal-sdk-1.0.0-rc12.jar
- external/graal-sdk-1.0.0-rc12.jar
+ ext/graal-sdk-1.0.0-rc16.jar
+ external/graal-sdk-1.0.0-rc16.jar
diff --git a/webcommon/libs.graaljs/external/binaries-list b/webcommon/libs.graaljs/external/binaries-list
index aa73ec2cc0a7..0ec26ed2ec85 100644
--- a/webcommon/libs.graaljs/external/binaries-list
+++ b/webcommon/libs.graaljs/external/binaries-list
@@ -14,5 +14,5 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-F1AAEE616CB62866C0C22CA26C8FDD93A7D3E0F8 org.graalvm.js:js:1.0.0-rc12
-FA1A582E348CEED1B0C5F3C0171E2156DAAB5486 org.graalvm.regex:regex:1.0.0-rc12
+54AC00D31363C8DCBC8B4D91F217AA7C4FA28A31 org.graalvm.js:js:1.0.0-rc16
+6F701D77B14E9E7CEBDF1423B85F226BA7EB8198 org.graalvm.regex:regex:1.0.0-rc16
diff --git a/webcommon/libs.graaljs/external/js-1.0.0-license.txt b/webcommon/libs.graaljs/external/js-1.0.0-license.txt
index 95314ef33571..cd4254dcd304 100644
--- a/webcommon/libs.graaljs/external/js-1.0.0-license.txt
+++ b/webcommon/libs.graaljs/external/js-1.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: js-1.0.0-rc12.jar regex-1.0.0-rc12.jar
+Files: js-1.0.0-rc16.jar regex-1.0.0-rc16.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.graaljs/nbproject/project.properties b/webcommon/libs.graaljs/nbproject/project.properties
index 47da34f36695..9a627fcfd36f 100644
--- a/webcommon/libs.graaljs/nbproject/project.properties
+++ b/webcommon/libs.graaljs/nbproject/project.properties
@@ -19,5 +19,5 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/js-1.0.0-rc12.jar=modules/ext/js-1.0.0-rc12.jar
-release.external/regex-1.0.0-rc12.jar=modules/ext/regex-1.0.0-rc12.jar
+release.external/js-1.0.0-rc16.jar=modules/ext/js-1.0.0-rc16.jar
+release.external/regex-1.0.0-rc16.jar=modules/ext/regex-1.0.0-rc16.jar
diff --git a/webcommon/libs.graaljs/nbproject/project.xml b/webcommon/libs.graaljs/nbproject/project.xml
index 75d68b8c657c..efe86889a6fe 100644
--- a/webcommon/libs.graaljs/nbproject/project.xml
+++ b/webcommon/libs.graaljs/nbproject/project.xml
@@ -65,12 +65,12 @@
com.oracle.js.parser.ir
- ext/js-1.0.0-rc12.jar
- external/js-1.0.0-rc12.jar
+ ext/js-1.0.0-rc16.jar
+ external/js-1.0.0-rc16.jar
- ext/regex-1.0.0-rc12.jar
- external/regex-1.0.0-rc12.jar
+ ext/regex-1.0.0-rc16.jar
+ external/regex-1.0.0-rc16.jar
diff --git a/webcommon/libs.truffleapi/external/binaries-list b/webcommon/libs.truffleapi/external/binaries-list
index ebc6c033bab0..0111d4f9792a 100644
--- a/webcommon/libs.truffleapi/external/binaries-list
+++ b/webcommon/libs.truffleapi/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-3B67206816378D4BABE37009C78A5BD429C560E1 org.graalvm.truffle:truffle-api:1.0.0-rc12
+A2793D3B58DE73AE6E19B352F8051B0E8BC3620E org.graalvm.truffle:truffle-api:1.0.0-rc16
diff --git a/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt b/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt
index fd08c8132e98..f26e8c5dee16 100644
--- a/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt
+++ b/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: truffle-api-1.0.0-rc12.jar
+Files: truffle-api-1.0.0-rc16.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.truffleapi/nbproject/project.properties b/webcommon/libs.truffleapi/nbproject/project.properties
index 472607867e89..f6542f025c54 100644
--- a/webcommon/libs.truffleapi/nbproject/project.properties
+++ b/webcommon/libs.truffleapi/nbproject/project.properties
@@ -19,4 +19,4 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/truffle-api-1.0.0-rc12.jar=modules/ext/truffle-api-1.0.0-rc12.jar
+release.external/truffle-api-1.0.0-rc16.jar=modules/ext/truffle-api-1.0.0-rc16.jar
diff --git a/webcommon/libs.truffleapi/nbproject/project.xml b/webcommon/libs.truffleapi/nbproject/project.xml
index f4a4bb1b6b7f..26a188f93eb4 100644
--- a/webcommon/libs.truffleapi/nbproject/project.xml
+++ b/webcommon/libs.truffleapi/nbproject/project.xml
@@ -49,8 +49,8 @@
com.oracle.truffle.api.utilities
- ext/truffle-api-1.0.0-rc12.jar
- external/truffle-api-1.0.0-rc12.jar
+ ext/truffle-api-1.0.0-rc16.jar
+ external/truffle-api-1.0.0-rc16.jar
From a297bcfc6a06ea609474ab669642d3c05c6d432b Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 29 Apr 2019 13:37:06 +0200
Subject: [PATCH 06/27] Setting up proxy before building web.core module
---
enterprise/web.core/build.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/enterprise/web.core/build.xml b/enterprise/web.core/build.xml
index d5b57b5dba68..94cd0e99c384 100644
--- a/enterprise/web.core/build.xml
+++ b/enterprise/web.core/build.xml
@@ -21,4 +21,7 @@
-->
+
+
+
From 4592738fd5dde28f003a264743c66d67180e3748 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 29 Apr 2019 17:49:26 +0200
Subject: [PATCH 07/27] icu4j is needed for Graal JS I18N support
---
webcommon/libs.graaljs/external/binaries-list | 1 +
.../external/icu4j-62.1-license.txt | 421 ++++++++++++++++++
.../libs.graaljs/nbproject/project.properties | 1 +
webcommon/libs.graaljs/nbproject/project.xml | 4 +
4 files changed, 427 insertions(+)
create mode 100644 webcommon/libs.graaljs/external/icu4j-62.1-license.txt
diff --git a/webcommon/libs.graaljs/external/binaries-list b/webcommon/libs.graaljs/external/binaries-list
index 0ec26ed2ec85..ac772eb339c2 100644
--- a/webcommon/libs.graaljs/external/binaries-list
+++ b/webcommon/libs.graaljs/external/binaries-list
@@ -16,3 +16,4 @@
# under the License.
54AC00D31363C8DCBC8B4D91F217AA7C4FA28A31 org.graalvm.js:js:1.0.0-rc16
6F701D77B14E9E7CEBDF1423B85F226BA7EB8198 org.graalvm.regex:regex:1.0.0-rc16
+7A4D00D5EC5FEBD252A6182E8B6E87A0A9821F81 com.ibm.icu:icu4j:62.1
diff --git a/webcommon/libs.graaljs/external/icu4j-62.1-license.txt b/webcommon/libs.graaljs/external/icu4j-62.1-license.txt
new file mode 100644
index 000000000000..7bf56b437c32
--- /dev/null
+++ b/webcommon/libs.graaljs/external/icu4j-62.1-license.txt
@@ -0,0 +1,421 @@
+Name: icu4j
+Description: icu4j license
+License: BSD
+Origin: https://github.com/oracle/graal
+Version: 62.1
+Files: icu4j-62.1.jar
+
+COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
+
+Copyright © 1991-2018 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+---------------------
+
+Third-Party Software Licenses
+
+This section contains third-party software notices and/or additional
+terms for licensed third-party software components included within ICU
+libraries.
+
+1. ICU License - ICU 1.8.1 to ICU 57.1
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2016 International Business Machines Corporation and others
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the
+property of their respective owners.
+
+2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
+
+ # The Google Chrome software developed by Google is licensed under
+ # the BSD license. Other software included in this distribution is
+ # provided under other licenses, as set forth below.
+ #
+ # The BSD License
+ # http://opensource.org/licenses/bsd-license.php
+ # Copyright (C) 2006-2008, Google Inc.
+ #
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are met:
+ #
+ # Redistributions of source code must retain the above copyright notice,
+ # this list of conditions and the following disclaimer.
+ # Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following
+ # disclaimer in the documentation and/or other materials provided with
+ # the distribution.
+ # Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #
+ #
+ # The word list in cjdict.txt are generated by combining three word lists
+ # listed below with further processing for compound word breaking. The
+ # frequency is generated with an iterative training against Google web
+ # corpora.
+ #
+ # * Libtabe (Chinese)
+ # - https://sourceforge.net/project/?group_id=1519
+ # - Its license terms and conditions are shown below.
+ #
+ # * IPADIC (Japanese)
+ # - http://chasen.aist-nara.ac.jp/chasen/distribution.html
+ # - Its license terms and conditions are shown below.
+ #
+ # ---------COPYING.libtabe ---- BEGIN--------------------
+ #
+ # /*
+ # * Copyright (c) 1999 TaBE Project.
+ # * Copyright (c) 1999 Pai-Hsiang Hsiao.
+ # * All rights reserved.
+ # *
+ # * Redistribution and use in source and binary forms, with or without
+ # * modification, are permitted provided that the following conditions
+ # * are met:
+ # *
+ # * . Redistributions of source code must retain the above copyright
+ # * notice, this list of conditions and the following disclaimer.
+ # * . Redistributions in binary form must reproduce the above copyright
+ # * notice, this list of conditions and the following disclaimer in
+ # * the documentation and/or other materials provided with the
+ # * distribution.
+ # * . Neither the name of the TaBE Project nor the names of its
+ # * contributors may be used to endorse or promote products derived
+ # * from this software without specific prior written permission.
+ # *
+ # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ # * OF THE POSSIBILITY OF SUCH DAMAGE.
+ # */
+ #
+ # /*
+ # * Copyright (c) 1999 Computer Systems and Communication Lab,
+ # * Institute of Information Science, Academia
+ # * Sinica. All rights reserved.
+ # *
+ # * Redistribution and use in source and binary forms, with or without
+ # * modification, are permitted provided that the following conditions
+ # * are met:
+ # *
+ # * . Redistributions of source code must retain the above copyright
+ # * notice, this list of conditions and the following disclaimer.
+ # * . Redistributions in binary form must reproduce the above copyright
+ # * notice, this list of conditions and the following disclaimer in
+ # * the documentation and/or other materials provided with the
+ # * distribution.
+ # * . Neither the name of the Computer Systems and Communication Lab
+ # * nor the names of its contributors may be used to endorse or
+ # * promote products derived from this software without specific
+ # * prior written permission.
+ # *
+ # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ # * OF THE POSSIBILITY OF SUCH DAMAGE.
+ # */
+ #
+ # Copyright 1996 Chih-Hao Tsai @ Beckman Institute,
+ # University of Illinois
+ # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4
+ #
+ # ---------------COPYING.libtabe-----END--------------------------------
+ #
+ #
+ # ---------------COPYING.ipadic-----BEGIN-------------------------------
+ #
+ # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
+ # and Technology. All Rights Reserved.
+ #
+ # Use, reproduction, and distribution of this software is permitted.
+ # Any copy of this software, whether in its original form or modified,
+ # must include both the above copyright notice and the following
+ # paragraphs.
+ #
+ # Nara Institute of Science and Technology (NAIST),
+ # the copyright holders, disclaims all warranties with regard to this
+ # software, including all implied warranties of merchantability and
+ # fitness, in no event shall NAIST be liable for
+ # any special, indirect or consequential damages or any damages
+ # whatsoever resulting from loss of use, data or profits, whether in an
+ # action of contract, negligence or other tortuous action, arising out
+ # of or in connection with the use or performance of this software.
+ #
+ # A large portion of the dictionary entries
+ # originate from ICOT Free Software. The following conditions for ICOT
+ # Free Software applies to the current dictionary as well.
+ #
+ # Each User may also freely distribute the Program, whether in its
+ # original form or modified, to any third party or parties, PROVIDED
+ # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
+ # on, or be attached to, the Program, which is distributed substantially
+ # in the same form as set out herein and that such intended
+ # distribution, if actually made, will neither violate or otherwise
+ # contravene any of the laws and regulations of the countries having
+ # jurisdiction over the User or the intended distribution itself.
+ #
+ # NO WARRANTY
+ #
+ # The program was produced on an experimental basis in the course of the
+ # research and development conducted during the project and is provided
+ # to users as so produced on an experimental basis. Accordingly, the
+ # program is provided without any warranty whatsoever, whether express,
+ # implied, statutory or otherwise. The term "warranty" used herein
+ # includes, but is not limited to, any warranty of the quality,
+ # performance, merchantability and fitness for a particular purpose of
+ # the program and the nonexistence of any infringement or violation of
+ # any right of any third party.
+ #
+ # Each user of the program will agree and understand, and be deemed to
+ # have agreed and understood, that there is no warranty whatsoever for
+ # the program and, accordingly, the entire risk arising from or
+ # otherwise connected with the program is assumed by the user.
+ #
+ # Therefore, neither ICOT, the copyright holder, or any other
+ # organization that participated in or was otherwise related to the
+ # development of the program and their respective officials, directors,
+ # officers and other employees shall be held liable for any and all
+ # damages, including, without limitation, general, special, incidental
+ # and consequential damages, arising out of or otherwise in connection
+ # with the use or inability to use the program or any product, material
+ # or result produced or otherwise obtained by using the program,
+ # regardless of whether they have been advised of, or otherwise had
+ # knowledge of, the possibility of such damages at any time during the
+ # project or thereafter. Each user will be deemed to have agreed to the
+ # foregoing by his or her commencement of use of the program. The term
+ # "use" as used herein includes, but is not limited to, the use,
+ # modification, copying and distribution of the program and the
+ # production of secondary products from the program.
+ #
+ # In the case where the program, whether in its original form or
+ # modified, was distributed or delivered to or received by a user from
+ # any person, organization or entity other than ICOT, unless it makes or
+ # grants independently of ICOT any specific warranty to the user in
+ # writing, such person, organization or entity, will also be exempted
+ # from and not be held liable to the user for any such damages as noted
+ # above as far as the program is concerned.
+ #
+ # ---------------COPYING.ipadic-----END----------------------------------
+
+3. Lao Word Break Dictionary Data (laodict.txt)
+
+ # Copyright (c) 2013 International Business Machines Corporation
+ # and others. All Rights Reserved.
+ #
+ # Project: http://code.google.com/p/lao-dictionary/
+ # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
+ # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ # (copied below)
+ #
+ # This file is derived from the above dictionary, with slight
+ # modifications.
+ # ----------------------------------------------------------------------
+ # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification,
+ # are permitted provided that the following conditions are met:
+ #
+ #
+ # Redistributions of source code must retain the above copyright notice, this
+ # list of conditions and the following disclaimer. Redistributions in
+ # binary form must reproduce the above copyright notice, this list of
+ # conditions and the following disclaimer in the documentation and/or
+ # other materials provided with the distribution.
+ #
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
+ # --------------------------------------------------------------------------
+
+4. Burmese Word Break Dictionary Data (burmesedict.txt)
+
+ # Copyright (c) 2014 International Business Machines Corporation
+ # and others. All Rights Reserved.
+ #
+ # This list is part of a project hosted at:
+ # github.com/kanyawtech/myanmar-karen-word-lists
+ #
+ # --------------------------------------------------------------------------
+ # Copyright (c) 2013, LeRoy Benjamin Sharon
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions
+ # are met: Redistributions of source code must retain the above
+ # copyright notice, this list of conditions and the following
+ # disclaimer. Redistributions in binary form must reproduce the
+ # above copyright notice, this list of conditions and the following
+ # disclaimer in the documentation and/or other materials provided
+ # with the distribution.
+ #
+ # Neither the name Myanmar Karen Word Lists, nor the names of its
+ # contributors may be used to endorse or promote products derived
+ # from this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ # SUCH DAMAGE.
+ # --------------------------------------------------------------------------
+
+5. Time Zone Database
+
+ ICU uses the public domain data and code derived from Time Zone
+Database for its time zone support. The ownership of the TZ database
+is explained in BCP 175: Procedure for Maintaining the Time Zone
+Database section 7.
+
+ # 7. Database Ownership
+ #
+ # The TZ database itself is not an IETF Contribution or an IETF
+ # document. Rather it is a pre-existing and regularly updated work
+ # that is in the public domain, and is intended to remain in the
+ # public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do
+ # not apply to the TZ Database or contributions that individuals make
+ # to it. Should any claims be made and substantiated against the TZ
+ # Database, the organization that is providing the IANA
+ # Considerations defined in this RFC, under the memorandum of
+ # understanding with the IETF, currently ICANN, may act in accordance
+ # with all competent court orders. No ownership claims will be made
+ # by ICANN or the IETF Trust on the database or the code. Any person
+ # making a contribution to the database or code waives all rights to
+ # future claims in that contribution or in the TZ Database.
+
+6. Google double-conversion
+
+Copyright 2006-2011, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/webcommon/libs.graaljs/nbproject/project.properties b/webcommon/libs.graaljs/nbproject/project.properties
index 9a627fcfd36f..0689705ba603 100644
--- a/webcommon/libs.graaljs/nbproject/project.properties
+++ b/webcommon/libs.graaljs/nbproject/project.properties
@@ -21,3 +21,4 @@ is.autoload=true
release.external/js-1.0.0-rc16.jar=modules/ext/js-1.0.0-rc16.jar
release.external/regex-1.0.0-rc16.jar=modules/ext/regex-1.0.0-rc16.jar
+release.external/icu4j-62.1.jar=modules/ext/icu4j-62.1.jar
diff --git a/webcommon/libs.graaljs/nbproject/project.xml b/webcommon/libs.graaljs/nbproject/project.xml
index efe86889a6fe..3122de39fb41 100644
--- a/webcommon/libs.graaljs/nbproject/project.xml
+++ b/webcommon/libs.graaljs/nbproject/project.xml
@@ -72,6 +72,10 @@
ext/regex-1.0.0-rc16.jar
external/regex-1.0.0-rc16.jar
+
+ ext/icu4j-62.1.jar
+ external/icu4j-62.1.jar
+
From d9ef75cddb638ea122e695e73527fcc79cba9d67 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Wed, 22 May 2019 10:35:50 +0200
Subject: [PATCH 08/27] Make the default value of proxyPort property a number
---
enterprise/web.core/build.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/enterprise/web.core/build.xml b/enterprise/web.core/build.xml
index 94cd0e99c384..c2b777ed199b 100644
--- a/enterprise/web.core/build.xml
+++ b/enterprise/web.core/build.xml
@@ -23,5 +23,6 @@
+
From db69ef4b4fc01c5afa1228fa45c4a0ae5c2f89d6 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Wed, 22 May 2019 10:36:40 +0200
Subject: [PATCH 09/27] Using released version 19.0.0 of GraalVM libraries
---
ide/libs.graalsdk/external/binaries-list | 2 +-
...sdk-1.0.0-license.txt => graal-sdk-19.0.0-license.txt} | 2 +-
ide/libs.graalsdk/nbproject/project.properties | 2 +-
ide/libs.graalsdk/nbproject/project.xml | 4 ++--
webcommon/libs.graaljs/external/binaries-list | 4 ++--
.../{js-1.0.0-license.txt => js-19.0.0-license.txt} | 2 +-
webcommon/libs.graaljs/nbproject/project.properties | 4 ++--
webcommon/libs.graaljs/nbproject/project.xml | 8 ++++----
webcommon/libs.truffleapi/external/binaries-list | 2 +-
...i-1.0.0-license.txt => truffle-api-19.0.0-license.txt} | 2 +-
webcommon/libs.truffleapi/nbproject/project.properties | 2 +-
webcommon/libs.truffleapi/nbproject/project.xml | 4 ++--
12 files changed, 19 insertions(+), 19 deletions(-)
rename ide/libs.graalsdk/external/{graal-sdk-1.0.0-license.txt => graal-sdk-19.0.0-license.txt} (98%)
rename webcommon/libs.graaljs/external/{js-1.0.0-license.txt => js-19.0.0-license.txt} (97%)
rename webcommon/libs.truffleapi/external/{truffle-api-1.0.0-license.txt => truffle-api-19.0.0-license.txt} (98%)
diff --git a/ide/libs.graalsdk/external/binaries-list b/ide/libs.graalsdk/external/binaries-list
index d0fdd151dd1b..70c4229b080a 100644
--- a/ide/libs.graalsdk/external/binaries-list
+++ b/ide/libs.graalsdk/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-747A07D17D24658A0186CA0356A5935FE5DA2F89 org.graalvm.sdk:graal-sdk:1.0.0-rc16
+3C22A79D3CCCCFD161F4DD935C30C745F6FFF848 org.graalvm.sdk:graal-sdk:19.0.0
diff --git a/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt b/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
similarity index 98%
rename from ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt
rename to ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
index ec90cf30194e..0856f3a1979c 100644
--- a/ide/libs.graalsdk/external/graal-sdk-1.0.0-license.txt
+++ b/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: graal-sdk-1.0.0-rc16.jar
+Files: graal-sdk-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/ide/libs.graalsdk/nbproject/project.properties b/ide/libs.graalsdk/nbproject/project.properties
index da98f27b7685..ac88b7df2a0a 100644
--- a/ide/libs.graalsdk/nbproject/project.properties
+++ b/ide/libs.graalsdk/nbproject/project.properties
@@ -19,7 +19,7 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/graal-sdk-1.0.0-rc16.jar=modules/ext/graal-sdk-1.0.0-rc16.jar
+release.external/graal-sdk-19.0.0.jar=modules/ext/graal-sdk-19.0.0.jar
javadoc.arch=${basedir}/arch.xml
javadoc.apichanges=${basedir}/apichanges.xml
diff --git a/ide/libs.graalsdk/nbproject/project.xml b/ide/libs.graalsdk/nbproject/project.xml
index 178b8443da26..e70bb470a4ad 100644
--- a/ide/libs.graalsdk/nbproject/project.xml
+++ b/ide/libs.graalsdk/nbproject/project.xml
@@ -80,8 +80,8 @@
org.netbeans.libs.graalsdk
- ext/graal-sdk-1.0.0-rc16.jar
- external/graal-sdk-1.0.0-rc16.jar
+ ext/graal-sdk-19.0.0.jar
+ external/graal-sdk-19.0.0.jar
diff --git a/webcommon/libs.graaljs/external/binaries-list b/webcommon/libs.graaljs/external/binaries-list
index ac772eb339c2..89049a519362 100644
--- a/webcommon/libs.graaljs/external/binaries-list
+++ b/webcommon/libs.graaljs/external/binaries-list
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-54AC00D31363C8DCBC8B4D91F217AA7C4FA28A31 org.graalvm.js:js:1.0.0-rc16
-6F701D77B14E9E7CEBDF1423B85F226BA7EB8198 org.graalvm.regex:regex:1.0.0-rc16
+7123118BFA4B0FF077D60985B784C148FAB724FE org.graalvm.js:js:19.0.0
+530ED62C07B9CD8C3E4BB0429B4243F6328E331F org.graalvm.regex:regex:19.0.0
7A4D00D5EC5FEBD252A6182E8B6E87A0A9821F81 com.ibm.icu:icu4j:62.1
diff --git a/webcommon/libs.graaljs/external/js-1.0.0-license.txt b/webcommon/libs.graaljs/external/js-19.0.0-license.txt
similarity index 97%
rename from webcommon/libs.graaljs/external/js-1.0.0-license.txt
rename to webcommon/libs.graaljs/external/js-19.0.0-license.txt
index cd4254dcd304..2e0f228235b1 100644
--- a/webcommon/libs.graaljs/external/js-1.0.0-license.txt
+++ b/webcommon/libs.graaljs/external/js-19.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: js-1.0.0-rc16.jar regex-1.0.0-rc16.jar
+Files: js-19.0.0.jar regex-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.graaljs/nbproject/project.properties b/webcommon/libs.graaljs/nbproject/project.properties
index 0689705ba603..a4a1217737ed 100644
--- a/webcommon/libs.graaljs/nbproject/project.properties
+++ b/webcommon/libs.graaljs/nbproject/project.properties
@@ -19,6 +19,6 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/js-1.0.0-rc16.jar=modules/ext/js-1.0.0-rc16.jar
-release.external/regex-1.0.0-rc16.jar=modules/ext/regex-1.0.0-rc16.jar
+release.external/js-19.0.0.jar=modules/ext/js-19.0.0.jar
+release.external/regex-19.0.0.jar=modules/ext/regex-19.0.0.jar
release.external/icu4j-62.1.jar=modules/ext/icu4j-62.1.jar
diff --git a/webcommon/libs.graaljs/nbproject/project.xml b/webcommon/libs.graaljs/nbproject/project.xml
index 3122de39fb41..ef02d2e23beb 100644
--- a/webcommon/libs.graaljs/nbproject/project.xml
+++ b/webcommon/libs.graaljs/nbproject/project.xml
@@ -65,12 +65,12 @@
com.oracle.js.parser.ir
- ext/js-1.0.0-rc16.jar
- external/js-1.0.0-rc16.jar
+ ext/js-19.0.0.jar
+ external/js-19.0.0.jar
- ext/regex-1.0.0-rc16.jar
- external/regex-1.0.0-rc16.jar
+ ext/regex-19.0.0.jar
+ external/regex-19.0.0.jar
ext/icu4j-62.1.jar
diff --git a/webcommon/libs.truffleapi/external/binaries-list b/webcommon/libs.truffleapi/external/binaries-list
index 0111d4f9792a..aedcb3857201 100644
--- a/webcommon/libs.truffleapi/external/binaries-list
+++ b/webcommon/libs.truffleapi/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-A2793D3B58DE73AE6E19B352F8051B0E8BC3620E org.graalvm.truffle:truffle-api:1.0.0-rc16
+44DC0250304EE3EF6B26B9D869E3D6B677D0A2A6 org.graalvm.truffle:truffle-api:19.0.0
diff --git a/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt b/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
similarity index 98%
rename from webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt
rename to webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
index f26e8c5dee16..f977b163ef25 100644
--- a/webcommon/libs.truffleapi/external/truffle-api-1.0.0-license.txt
+++ b/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
@@ -3,7 +3,7 @@ Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
Version: 1.0
-Files: truffle-api-1.0.0-rc16.jar
+Files: truffle-api-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.truffleapi/nbproject/project.properties b/webcommon/libs.truffleapi/nbproject/project.properties
index f6542f025c54..61c6c809dde8 100644
--- a/webcommon/libs.truffleapi/nbproject/project.properties
+++ b/webcommon/libs.truffleapi/nbproject/project.properties
@@ -19,4 +19,4 @@ javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
is.autoload=true
-release.external/truffle-api-1.0.0-rc16.jar=modules/ext/truffle-api-1.0.0-rc16.jar
+release.external/truffle-api-19.0.0.jar=modules/ext/truffle-api-19.0.0.jar
diff --git a/webcommon/libs.truffleapi/nbproject/project.xml b/webcommon/libs.truffleapi/nbproject/project.xml
index 26a188f93eb4..51dd49759417 100644
--- a/webcommon/libs.truffleapi/nbproject/project.xml
+++ b/webcommon/libs.truffleapi/nbproject/project.xml
@@ -49,8 +49,8 @@
com.oracle.truffle.api.utilities
- ext/truffle-api-1.0.0-rc16.jar
- external/truffle-api-1.0.0-rc16.jar
+ ext/truffle-api-19.0.0.jar
+ external/truffle-api-19.0.0.jar
From fb47be079c722fb7de7a8366493986b29f34c7ac Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Wed, 22 May 2019 10:43:21 +0200
Subject: [PATCH 10/27] Adjusting to API changes in GraalVM SDK, Truffle and
Graal.js modules
---
.../nbproject/org-netbeans-libs-graalsdk.sig | 465 ++++++++++++++-
.../nbproject/org-netbeans-libs-graaljs.sig | 67 +--
.../org-netbeans-libs-truffleapi.sig | 555 ++++++++++++------
3 files changed, 834 insertions(+), 253 deletions(-)
diff --git a/ide/libs.graalsdk/nbproject/org-netbeans-libs-graalsdk.sig b/ide/libs.graalsdk/nbproject/org-netbeans-libs-graalsdk.sig
index 9a0f77cabebe..5557b9d42b01 100644
--- a/ide/libs.graalsdk/nbproject/org-netbeans-libs-graalsdk.sig
+++ b/ide/libs.graalsdk/nbproject/org-netbeans-libs-graalsdk.sig
@@ -1,5 +1,5 @@
#Signature file v4.1
-#Version 1.0.11
+#Version 1.1
CLSS public abstract interface java.io.Serializable
@@ -9,12 +9,6 @@ meth public abstract void close() throws java.lang.Exception
CLSS public abstract interface java.lang.Comparable<%0 extends java.lang.Object>
meth public abstract int compareTo({java.lang.Comparable%0})
-CLSS public abstract interface !annotation java.lang.Deprecated
- anno 0 java.lang.annotation.Documented()
- anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
- anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE])
-intf java.lang.annotation.Annotation
-
CLSS public abstract java.lang.Enum<%0 extends java.lang.Enum<{java.lang.Enum%0}>>
cons protected init(java.lang.String,int)
intf java.io.Serializable
@@ -125,9 +119,95 @@ CLSS public abstract interface !annotation java.lang.annotation.Target
intf java.lang.annotation.Annotation
meth public abstract java.lang.annotation.ElementType[] value()
+CLSS public abstract interface org.graalvm.collections.EconomicMap<%0 extends java.lang.Object, %1 extends java.lang.Object>
+intf org.graalvm.collections.UnmodifiableEconomicMap<{org.graalvm.collections.EconomicMap%0},{org.graalvm.collections.EconomicMap%1}>
+meth public abstract org.graalvm.collections.MapCursor<{org.graalvm.collections.EconomicMap%0},{org.graalvm.collections.EconomicMap%1}> getEntries()
+meth public abstract void clear()
+meth public abstract void replaceAll(java.util.function.BiFunction super {org.graalvm.collections.EconomicMap%0},? super {org.graalvm.collections.EconomicMap%1},? extends {org.graalvm.collections.EconomicMap%1}>)
+meth public abstract {org.graalvm.collections.EconomicMap%1} put({org.graalvm.collections.EconomicMap%0},{org.graalvm.collections.EconomicMap%1})
+meth public abstract {org.graalvm.collections.EconomicMap%1} removeKey({org.graalvm.collections.EconomicMap%0})
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create()
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create(int)
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create(org.graalvm.collections.Equivalence)
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create(org.graalvm.collections.Equivalence,int)
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create(org.graalvm.collections.Equivalence,org.graalvm.collections.UnmodifiableEconomicMap<{%%0},{%%1}>)
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> create(org.graalvm.collections.UnmodifiableEconomicMap<{%%0},{%%1}>)
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.EconomicMap<{%%0},{%%1}> wrapMap(java.util.Map<{%%0},{%%1}>)
+meth public void putAll(org.graalvm.collections.EconomicMap<{org.graalvm.collections.EconomicMap%0},{org.graalvm.collections.EconomicMap%1}>)
+meth public void putAll(org.graalvm.collections.UnmodifiableEconomicMap extends {org.graalvm.collections.EconomicMap%0},? extends {org.graalvm.collections.EconomicMap%1}>)
+
+CLSS public abstract interface org.graalvm.collections.EconomicSet<%0 extends java.lang.Object>
+intf org.graalvm.collections.UnmodifiableEconomicSet<{org.graalvm.collections.EconomicSet%0}>
+meth public abstract boolean add({org.graalvm.collections.EconomicSet%0})
+meth public abstract void clear()
+meth public abstract void remove({org.graalvm.collections.EconomicSet%0})
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create()
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create(int)
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create(org.graalvm.collections.Equivalence)
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create(org.graalvm.collections.Equivalence,int)
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create(org.graalvm.collections.Equivalence,org.graalvm.collections.UnmodifiableEconomicSet<{%%0}>)
+meth public static <%0 extends java.lang.Object> org.graalvm.collections.EconomicSet<{%%0}> create(org.graalvm.collections.UnmodifiableEconomicSet<{%%0}>)
+meth public void addAll(java.lang.Iterable<{org.graalvm.collections.EconomicSet%0}>)
+meth public void addAll(java.util.Iterator<{org.graalvm.collections.EconomicSet%0}>)
+meth public void addAll(org.graalvm.collections.EconomicSet<{org.graalvm.collections.EconomicSet%0}>)
+meth public void removeAll(java.lang.Iterable<{org.graalvm.collections.EconomicSet%0}>)
+meth public void removeAll(java.util.Iterator<{org.graalvm.collections.EconomicSet%0}>)
+meth public void removeAll(org.graalvm.collections.EconomicSet<{org.graalvm.collections.EconomicSet%0}>)
+meth public void retainAll(org.graalvm.collections.EconomicSet<{org.graalvm.collections.EconomicSet%0}>)
+
+CLSS public abstract org.graalvm.collections.Equivalence
+cons protected init()
+fld public final static org.graalvm.collections.Equivalence DEFAULT
+fld public final static org.graalvm.collections.Equivalence IDENTITY
+fld public final static org.graalvm.collections.Equivalence IDENTITY_WITH_SYSTEM_HASHCODE
+meth public abstract boolean equals(java.lang.Object,java.lang.Object)
+meth public abstract int hashCode(java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract interface org.graalvm.collections.MapCursor<%0 extends java.lang.Object, %1 extends java.lang.Object>
+intf org.graalvm.collections.UnmodifiableMapCursor<{org.graalvm.collections.MapCursor%0},{org.graalvm.collections.MapCursor%1}>
+meth public abstract void remove()
+
+CLSS public final org.graalvm.collections.Pair<%0 extends java.lang.Object, %1 extends java.lang.Object>
+meth public boolean equals(java.lang.Object)
+meth public int hashCode()
+meth public java.lang.String toString()
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.Pair<{%%0},{%%1}> create({%%0},{%%1})
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.Pair<{%%0},{%%1}> createLeft({%%0})
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.Pair<{%%0},{%%1}> createRight({%%1})
+meth public static <%0 extends java.lang.Object, %1 extends java.lang.Object> org.graalvm.collections.Pair<{%%0},{%%1}> empty()
+meth public {org.graalvm.collections.Pair%0} getLeft()
+meth public {org.graalvm.collections.Pair%1} getRight()
+supr java.lang.Object
+hfds EMPTY,left,right
+
+CLSS public abstract interface org.graalvm.collections.UnmodifiableEconomicMap<%0 extends java.lang.Object, %1 extends java.lang.Object>
+meth public abstract boolean containsKey({org.graalvm.collections.UnmodifiableEconomicMap%0})
+meth public abstract boolean isEmpty()
+meth public abstract int size()
+meth public abstract java.lang.Iterable<{org.graalvm.collections.UnmodifiableEconomicMap%0}> getKeys()
+meth public abstract java.lang.Iterable<{org.graalvm.collections.UnmodifiableEconomicMap%1}> getValues()
+meth public abstract org.graalvm.collections.UnmodifiableMapCursor<{org.graalvm.collections.UnmodifiableEconomicMap%0},{org.graalvm.collections.UnmodifiableEconomicMap%1}> getEntries()
+meth public abstract {org.graalvm.collections.UnmodifiableEconomicMap%1} get({org.graalvm.collections.UnmodifiableEconomicMap%0})
+meth public {org.graalvm.collections.UnmodifiableEconomicMap%1} get({org.graalvm.collections.UnmodifiableEconomicMap%0},{org.graalvm.collections.UnmodifiableEconomicMap%1})
+
+CLSS public abstract interface org.graalvm.collections.UnmodifiableEconomicSet<%0 extends java.lang.Object>
+intf java.lang.Iterable<{org.graalvm.collections.UnmodifiableEconomicSet%0}>
+meth public abstract boolean contains({org.graalvm.collections.UnmodifiableEconomicSet%0})
+meth public abstract boolean isEmpty()
+meth public abstract int size()
+meth public {org.graalvm.collections.UnmodifiableEconomicSet%0}[] toArray({org.graalvm.collections.UnmodifiableEconomicSet%0}[])
+
+CLSS public abstract interface org.graalvm.collections.UnmodifiableMapCursor<%0 extends java.lang.Object, %1 extends java.lang.Object>
+meth public abstract boolean advance()
+meth public abstract {org.graalvm.collections.UnmodifiableMapCursor%0} getKey()
+meth public abstract {org.graalvm.collections.UnmodifiableMapCursor%1} getValue()
+
CLSS public final !enum org.graalvm.options.OptionCategory
fld public final static org.graalvm.options.OptionCategory DEBUG
+ anno 0 java.lang.Deprecated()
fld public final static org.graalvm.options.OptionCategory EXPERT
+fld public final static org.graalvm.options.OptionCategory INTERNAL
fld public final static org.graalvm.options.OptionCategory USER
meth public static org.graalvm.options.OptionCategory valueOf(java.lang.String)
meth public static org.graalvm.options.OptionCategory[] values()
@@ -143,9 +223,10 @@ meth public java.lang.String getName()
meth public java.lang.String toString()
meth public org.graalvm.options.OptionCategory getCategory()
meth public org.graalvm.options.OptionKey> getKey()
+meth public org.graalvm.options.OptionStability getStability()
meth public static <%0 extends java.lang.Object> org.graalvm.options.OptionDescriptor$Builder newBuilder(org.graalvm.options.OptionKey<{%%0}>,java.lang.String)
supr java.lang.Object
-hfds EMPTY,deprecated,help,key,kind,name
+hfds EMPTY,deprecated,help,key,kind,name,stability
CLSS public final org.graalvm.options.OptionDescriptor$Builder
outer org.graalvm.options.OptionDescriptor
@@ -153,8 +234,9 @@ meth public org.graalvm.options.OptionDescriptor build()
meth public org.graalvm.options.OptionDescriptor$Builder category(org.graalvm.options.OptionCategory)
meth public org.graalvm.options.OptionDescriptor$Builder deprecated(boolean)
meth public org.graalvm.options.OptionDescriptor$Builder help(java.lang.String)
+meth public org.graalvm.options.OptionDescriptor$Builder stability(org.graalvm.options.OptionStability)
supr java.lang.Object
-hfds category,deprecated,help,key,name
+hfds category,deprecated,help,key,name,stability
CLSS public abstract interface org.graalvm.options.OptionDescriptors
fld public final static org.graalvm.options.OptionDescriptors EMPTY
@@ -174,9 +256,20 @@ meth public {org.graalvm.options.OptionKey%0} getValue(org.graalvm.options.Optio
supr java.lang.Object
hfds defaultValue,type
+CLSS public final !enum org.graalvm.options.OptionStability
+fld public final static org.graalvm.options.OptionStability EXPERIMENTAL
+fld public final static org.graalvm.options.OptionStability STABLE
+meth public static org.graalvm.options.OptionStability valueOf(java.lang.String)
+meth public static org.graalvm.options.OptionStability[] values()
+supr java.lang.Enum
+
CLSS public final org.graalvm.options.OptionType<%0 extends java.lang.Object>
+cons public init(java.lang.String,java.util.function.Function)
+cons public init(java.lang.String,java.util.function.Function,java.util.function.Consumer<{org.graalvm.options.OptionType%0}>)
cons public init(java.lang.String,{org.graalvm.options.OptionType%0},java.util.function.Function)
+ anno 0 java.lang.Deprecated()
cons public init(java.lang.String,{org.graalvm.options.OptionType%0},java.util.function.Function,java.util.function.Consumer<{org.graalvm.options.OptionType%0}>)
+ anno 0 java.lang.Deprecated()
meth public java.lang.String getName()
meth public java.lang.String toString()
meth public static <%0 extends java.lang.Object> org.graalvm.options.OptionType<{%%0}> defaultType(java.lang.Class<{%%0}>)
@@ -184,8 +277,9 @@ meth public static <%0 extends java.lang.Object> org.graalvm.options.OptionType<
meth public void validate({org.graalvm.options.OptionType%0})
meth public {org.graalvm.options.OptionType%0} convert(java.lang.String)
meth public {org.graalvm.options.OptionType%0} getDefaultValue()
+ anno 0 java.lang.Deprecated()
supr java.lang.Object
-hfds DEFAULTTYPES,defaultValue,name,stringConverter,validator
+hfds DEFAULTTYPES,name,stringConverter,validator
CLSS public abstract interface org.graalvm.options.OptionValues
meth public abstract <%0 extends java.lang.Object> void set(org.graalvm.options.OptionKey<{%%0}>,{%%0})
@@ -199,7 +293,9 @@ innr public final Builder
intf java.lang.AutoCloseable
meth public !varargs static org.graalvm.polyglot.Context create(java.lang.String[])
meth public !varargs static org.graalvm.polyglot.Context$Builder newBuilder(java.lang.String[])
+meth public boolean equals(java.lang.Object)
meth public boolean initialize(java.lang.String)
+meth public int hashCode()
meth public org.graalvm.polyglot.Engine getEngine()
meth public org.graalvm.polyglot.Value asValue(java.lang.Object)
meth public org.graalvm.polyglot.Value eval(java.lang.String,java.lang.CharSequence)
@@ -212,22 +308,28 @@ meth public void close(boolean)
meth public void enter()
meth public void leave()
supr java.lang.Object
-hfds EMPTY,impl
+hfds ALL_HOST_CLASSES,EMPTY,NO_HOST_CLASSES,UNSET_HOST_LOOKUP,impl
CLSS public final org.graalvm.polyglot.Context$Builder
outer org.graalvm.polyglot.Context
meth public org.graalvm.polyglot.Context build()
meth public org.graalvm.polyglot.Context$Builder allowAllAccess(boolean)
meth public org.graalvm.polyglot.Context$Builder allowCreateThread(boolean)
+meth public org.graalvm.polyglot.Context$Builder allowExperimentalOptions(boolean)
meth public org.graalvm.polyglot.Context$Builder allowHostAccess(boolean)
+ anno 0 java.lang.Deprecated()
+meth public org.graalvm.polyglot.Context$Builder allowHostAccess(org.graalvm.polyglot.HostAccess)
meth public org.graalvm.polyglot.Context$Builder allowHostClassLoading(boolean)
+meth public org.graalvm.polyglot.Context$Builder allowHostClassLookup(java.util.function.Predicate)
meth public org.graalvm.polyglot.Context$Builder allowIO(boolean)
meth public org.graalvm.polyglot.Context$Builder allowNativeAccess(boolean)
+meth public org.graalvm.polyglot.Context$Builder allowPolyglotAccess(org.graalvm.polyglot.PolyglotAccess)
meth public org.graalvm.polyglot.Context$Builder arguments(java.lang.String,java.lang.String[])
meth public org.graalvm.polyglot.Context$Builder engine(org.graalvm.polyglot.Engine)
meth public org.graalvm.polyglot.Context$Builder err(java.io.OutputStream)
meth public org.graalvm.polyglot.Context$Builder fileSystem(org.graalvm.polyglot.io.FileSystem)
meth public org.graalvm.polyglot.Context$Builder hostClassFilter(java.util.function.Predicate)
+ anno 0 java.lang.Deprecated()
meth public org.graalvm.polyglot.Context$Builder in(java.io.InputStream)
meth public org.graalvm.polyglot.Context$Builder logHandler(java.io.OutputStream)
meth public org.graalvm.polyglot.Context$Builder logHandler(java.util.logging.Handler)
@@ -236,7 +338,7 @@ meth public org.graalvm.polyglot.Context$Builder options(java.util.Map org.graalvm.polyglot.HostAccess$Builder targetTypeMapping(java.lang.Class<{%%0}>,java.lang.Class<{%%1}>,java.util.function.Predicate<{%%0}>,java.util.function.Function<{%%0},{%%1}>)
+meth public org.graalvm.polyglot.HostAccess build()
+meth public org.graalvm.polyglot.HostAccess$Builder allowAccess(java.lang.reflect.Executable)
+meth public org.graalvm.polyglot.HostAccess$Builder allowAccess(java.lang.reflect.Field)
+meth public org.graalvm.polyglot.HostAccess$Builder allowAccessAnnotatedBy(java.lang.Class extends java.lang.annotation.Annotation>)
+meth public org.graalvm.polyglot.HostAccess$Builder allowAllImplementations(boolean)
+meth public org.graalvm.polyglot.HostAccess$Builder allowArrayAccess(boolean)
+meth public org.graalvm.polyglot.HostAccess$Builder allowImplementations(java.lang.Class>)
+meth public org.graalvm.polyglot.HostAccess$Builder allowImplementationsAnnotatedBy(java.lang.Class extends java.lang.annotation.Annotation>)
+meth public org.graalvm.polyglot.HostAccess$Builder allowListAccess(boolean)
+meth public org.graalvm.polyglot.HostAccess$Builder allowPublicAccess(boolean)
+meth public org.graalvm.polyglot.HostAccess$Builder denyAccess(java.lang.Class>)
+meth public org.graalvm.polyglot.HostAccess$Builder denyAccess(java.lang.Class>,boolean)
+supr java.lang.Object
+hfds accessAnnotations,allowAllImplementations,allowArrayAccess,allowListAccess,allowPublic,excludeTypes,implementableTypes,implementationAnnotations,members,name,targetMappings
+
+CLSS public abstract interface static !annotation org.graalvm.polyglot.HostAccess$Export
+ outer org.graalvm.polyglot.HostAccess
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[CONSTRUCTOR, FIELD, METHOD])
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface static !annotation org.graalvm.polyglot.HostAccess$Implementable
+ outer org.graalvm.polyglot.HostAccess
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+intf java.lang.annotation.Annotation
CLSS public final org.graalvm.polyglot.Instrument
meth public <%0 extends java.lang.Object> {%%0} lookup(java.lang.Class<{%%0}>)
@@ -291,6 +437,11 @@ meth public org.graalvm.options.OptionDescriptors getOptions()
supr java.lang.Object
hfds impl
+CLSS public final org.graalvm.polyglot.PolyglotAccess
+fld public final static org.graalvm.polyglot.PolyglotAccess ALL
+fld public final static org.graalvm.polyglot.PolyglotAccess NONE
+supr java.lang.Object
+
CLSS public final org.graalvm.polyglot.PolyglotException
innr public final StackFrame
meth public boolean equals(java.lang.Object)
@@ -378,13 +529,14 @@ meth public org.graalvm.polyglot.Source$Builder cached(boolean)
meth public org.graalvm.polyglot.Source$Builder content(java.lang.CharSequence)
meth public org.graalvm.polyglot.Source$Builder content(java.lang.String)
meth public org.graalvm.polyglot.Source$Builder content(org.graalvm.polyglot.io.ByteSequence)
+meth public org.graalvm.polyglot.Source$Builder encoding(java.nio.charset.Charset)
meth public org.graalvm.polyglot.Source$Builder interactive(boolean)
meth public org.graalvm.polyglot.Source$Builder internal(boolean)
meth public org.graalvm.polyglot.Source$Builder mimeType(java.lang.String)
meth public org.graalvm.polyglot.Source$Builder name(java.lang.String)
meth public org.graalvm.polyglot.Source$Builder uri(java.net.URI)
supr java.lang.Object
-hfds cached,content,interactive,internal,language,mimeType,name,origin,uri
+hfds cached,content,fileEncoding,interactive,internal,language,mimeType,name,origin,uri
CLSS public final org.graalvm.polyglot.SourceSection
meth public boolean equals(java.lang.Object)
@@ -470,6 +622,283 @@ meth public void setArrayElement(long,java.lang.Object)
supr java.lang.Object
hfds impl,receiver
+CLSS public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init()
+innr public abstract static APIAccess
+innr public abstract static AbstractContextImpl
+innr public abstract static AbstractEngineImpl
+innr public abstract static AbstractExceptionImpl
+innr public abstract static AbstractExecutionListenerImpl
+innr public abstract static AbstractInstrumentImpl
+innr public abstract static AbstractLanguageImpl
+innr public abstract static AbstractSourceImpl
+innr public abstract static AbstractSourceSectionImpl
+innr public abstract static AbstractStackFrameImpl
+innr public abstract static AbstractValueImpl
+innr public abstract static MonitoringAccess
+meth protected void initialize()
+meth public abstract <%0 extends java.lang.Object, %1 extends java.lang.Object> java.lang.Object newTargetTypeMapping(java.lang.Class<{%%0}>,java.lang.Class<{%%1}>,java.util.function.Predicate<{%%0}>,java.util.function.Function<{%%0},{%%1}>)
+meth public abstract java.lang.Class> loadLanguageClass(java.lang.String)
+meth public abstract java.nio.file.Path findHome()
+meth public abstract java.util.Collection findActiveEngines()
+meth public abstract org.graalvm.polyglot.Engine buildEngine(java.io.OutputStream,java.io.OutputStream,java.io.InputStream,java.util.Map,long,java.util.concurrent.TimeUnit,boolean,long,boolean,boolean,boolean,org.graalvm.polyglot.io.MessageTransport,java.lang.Object,org.graalvm.polyglot.HostAccess)
+meth public abstract org.graalvm.polyglot.Value asValue(java.lang.Object)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractExecutionListenerImpl getExecutionListenerImpl()
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractSourceImpl getSourceImpl()
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractSourceSectionImpl getSourceSectionImpl()
+meth public abstract void preInitializeEngine()
+meth public abstract void resetPreInitializedEngine()
+meth public final void setConstructors(org.graalvm.polyglot.impl.AbstractPolyglotImpl$APIAccess)
+meth public final void setMonitoring(org.graalvm.polyglot.impl.AbstractPolyglotImpl$MonitoringAccess)
+meth public org.graalvm.polyglot.Context getCurrentContext()
+meth public org.graalvm.polyglot.impl.AbstractPolyglotImpl$APIAccess getAPIAccess()
+meth public org.graalvm.polyglot.impl.AbstractPolyglotImpl$MonitoringAccess getMonitoring()
+supr java.lang.Object
+hfds api,monitoring
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$APIAccess
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init()
+meth public abstract boolean allowsAccess(org.graalvm.polyglot.HostAccess,java.lang.reflect.AnnotatedElement)
+meth public abstract boolean allowsImplementation(org.graalvm.polyglot.HostAccess,java.lang.Class>)
+meth public abstract boolean isArrayAccessible(org.graalvm.polyglot.HostAccess)
+meth public abstract boolean isListAccessible(org.graalvm.polyglot.HostAccess)
+meth public abstract boolean useContextClassLoader()
+meth public abstract java.lang.Object getHostAccessImpl(org.graalvm.polyglot.HostAccess)
+meth public abstract java.lang.Object getReceiver(org.graalvm.polyglot.Value)
+meth public abstract java.util.List getTargetMappings(org.graalvm.polyglot.HostAccess)
+meth public abstract org.graalvm.polyglot.Context newContext(org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractContextImpl)
+meth public abstract org.graalvm.polyglot.Engine newEngine(org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractEngineImpl)
+meth public abstract org.graalvm.polyglot.Instrument newInstrument(org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractInstrumentImpl)
+meth public abstract org.graalvm.polyglot.Language newLanguage(org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractLanguageImpl)
+meth public abstract org.graalvm.polyglot.PolyglotException newLanguageException(java.lang.String,org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractExceptionImpl)
+meth public abstract org.graalvm.polyglot.PolyglotException$StackFrame newPolyglotStackTraceElement(org.graalvm.polyglot.PolyglotException,org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractStackFrameImpl)
+meth public abstract org.graalvm.polyglot.Source newSource(java.lang.String,java.lang.Object)
+meth public abstract org.graalvm.polyglot.SourceSection newSourceSection(org.graalvm.polyglot.Source,java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value newValue(java.lang.Object,org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractValueImpl)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractEngineImpl getImpl(org.graalvm.polyglot.Engine)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractExceptionImpl getImpl(org.graalvm.polyglot.PolyglotException)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractInstrumentImpl getImpl(org.graalvm.polyglot.Instrument)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractLanguageImpl getImpl(org.graalvm.polyglot.Language)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractStackFrameImpl getImpl(org.graalvm.polyglot.PolyglotException$StackFrame)
+meth public abstract org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractValueImpl getImpl(org.graalvm.polyglot.Value)
+meth public abstract void setHostAccessImpl(org.graalvm.polyglot.HostAccess,java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractContextImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean initializeLanguage(java.lang.String)
+meth public abstract org.graalvm.polyglot.Engine getEngineImpl(org.graalvm.polyglot.Context)
+meth public abstract org.graalvm.polyglot.Value asValue(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value eval(java.lang.String,java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value getBindings(java.lang.String)
+meth public abstract org.graalvm.polyglot.Value getPolyglotBindings()
+meth public abstract void close(org.graalvm.polyglot.Context,boolean)
+meth public abstract void explicitEnter(org.graalvm.polyglot.Context)
+meth public abstract void explicitLeave(org.graalvm.polyglot.Context)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractEngineImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract java.lang.String getImplementationName()
+meth public abstract java.lang.String getVersion()
+meth public abstract java.util.Map getInstruments()
+meth public abstract java.util.Map getLanguages()
+meth public abstract org.graalvm.options.OptionDescriptors getOptions()
+meth public abstract org.graalvm.polyglot.Context createContext(java.io.OutputStream,java.io.OutputStream,java.io.InputStream,boolean,org.graalvm.polyglot.HostAccess,org.graalvm.polyglot.PolyglotAccess,boolean,boolean,boolean,boolean,boolean,java.util.function.Predicate,java.util.Map,java.util.Map,java.lang.String[],org.graalvm.polyglot.io.FileSystem,java.lang.Object)
+meth public abstract org.graalvm.polyglot.Instrument requirePublicInstrument(java.lang.String)
+meth public abstract org.graalvm.polyglot.Language requirePublicLanguage(java.lang.String)
+meth public abstract void close(org.graalvm.polyglot.Engine,boolean)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractExceptionImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean isCancelled()
+meth public abstract boolean isExit()
+meth public abstract boolean isHostException()
+meth public abstract boolean isIncompleteSource()
+meth public abstract boolean isInternalError()
+meth public abstract boolean isSyntaxError()
+meth public abstract int getExitStatus()
+meth public abstract java.lang.Iterable getPolyglotStackTrace()
+meth public abstract java.lang.StackTraceElement[] getStackTrace()
+meth public abstract java.lang.String getMessage()
+meth public abstract java.lang.Throwable asHostException()
+meth public abstract org.graalvm.polyglot.SourceSection getSourceLocation()
+meth public abstract org.graalvm.polyglot.Value getGuestObject()
+meth public abstract void onCreate(org.graalvm.polyglot.PolyglotException)
+meth public abstract void printStackTrace(java.io.PrintStream)
+meth public abstract void printStackTrace(java.io.PrintWriter)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractExecutionListenerImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean isExpression(java.lang.Object)
+meth public abstract boolean isRoot(java.lang.Object)
+meth public abstract boolean isStatement(java.lang.Object)
+meth public abstract java.lang.Object attachExecutionListener(org.graalvm.polyglot.Engine,java.util.function.Consumer,java.util.function.Consumer,boolean,boolean,boolean,java.util.function.Predicate,java.util.function.Predicate,boolean,boolean,boolean)
+meth public abstract java.lang.String getRootName(java.lang.Object)
+meth public abstract java.util.List getInputValues(java.lang.Object)
+meth public abstract org.graalvm.polyglot.PolyglotException getException(java.lang.Object)
+meth public abstract org.graalvm.polyglot.SourceSection getLocation(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value getReturnValue(java.lang.Object)
+meth public abstract void closeExecutionListener(java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractInstrumentImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract <%0 extends java.lang.Object> {%%0} lookup(java.lang.Class<{%%0}>)
+meth public abstract java.lang.String getId()
+meth public abstract java.lang.String getName()
+meth public abstract java.lang.String getVersion()
+meth public abstract org.graalvm.options.OptionDescriptors getOptions()
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractLanguageImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean isInteractive()
+meth public abstract java.lang.String getDefaultMimeType()
+meth public abstract java.lang.String getId()
+meth public abstract java.lang.String getImplementationName()
+meth public abstract java.lang.String getName()
+meth public abstract java.lang.String getVersion()
+meth public abstract java.util.Set getMimeTypes()
+meth public abstract org.graalvm.options.OptionDescriptors getOptions()
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractSourceImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+fld protected final org.graalvm.polyglot.impl.AbstractPolyglotImpl engineImpl
+meth public abstract boolean equals(java.lang.Object,java.lang.Object)
+meth public abstract boolean hasBytes(java.lang.Object)
+meth public abstract boolean hasCharacters(java.lang.Object)
+meth public abstract boolean isInteractive(java.lang.Object)
+meth public abstract boolean isInternal(java.lang.Object)
+meth public abstract int getColumnNumber(java.lang.Object,int)
+meth public abstract int getLength(java.lang.Object)
+meth public abstract int getLineCount(java.lang.Object)
+meth public abstract int getLineLength(java.lang.Object,int)
+meth public abstract int getLineNumber(java.lang.Object,int)
+meth public abstract int getLineStartOffset(java.lang.Object,int)
+meth public abstract int hashCode(java.lang.Object)
+meth public abstract java.io.InputStream getInputStream(java.lang.Object)
+meth public abstract java.io.Reader getReader(java.lang.Object)
+meth public abstract java.lang.CharSequence getCode(java.lang.Object)
+meth public abstract java.lang.CharSequence getCode(java.lang.Object,int)
+meth public abstract java.lang.String findLanguage(java.io.File) throws java.io.IOException
+meth public abstract java.lang.String findLanguage(java.lang.String)
+meth public abstract java.lang.String findLanguage(java.net.URL) throws java.io.IOException
+meth public abstract java.lang.String findMimeType(java.io.File) throws java.io.IOException
+meth public abstract java.lang.String findMimeType(java.net.URL) throws java.io.IOException
+meth public abstract java.lang.String getMimeType(java.lang.Object)
+meth public abstract java.lang.String getName(java.lang.Object)
+meth public abstract java.lang.String getPath(java.lang.Object)
+meth public abstract java.lang.String toString(java.lang.Object)
+meth public abstract java.net.URI getURI(java.lang.Object)
+meth public abstract java.net.URL getURL(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Source build(java.lang.String,java.lang.Object,java.net.URI,java.lang.String,java.lang.String,java.lang.Object,boolean,boolean,boolean,java.nio.charset.Charset) throws java.io.IOException
+meth public abstract org.graalvm.polyglot.io.ByteSequence getBytes(java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractSourceSectionImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean equals(java.lang.Object,java.lang.Object)
+meth public abstract boolean hasCharIndex(java.lang.Object)
+meth public abstract boolean hasColumns(java.lang.Object)
+meth public abstract boolean hasLines(java.lang.Object)
+meth public abstract boolean isAvailable(java.lang.Object)
+meth public abstract int getCharEndIndex(java.lang.Object)
+meth public abstract int getCharIndex(java.lang.Object)
+meth public abstract int getCharLength(java.lang.Object)
+meth public abstract int getEndColumn(java.lang.Object)
+meth public abstract int getEndLine(java.lang.Object)
+meth public abstract int getStartColumn(java.lang.Object)
+meth public abstract int getStartLine(java.lang.Object)
+meth public abstract int hashCode(java.lang.Object)
+meth public abstract java.lang.CharSequence getCode(java.lang.Object)
+meth public abstract java.lang.String toString(java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractStackFrameImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract boolean isHostFrame()
+meth public abstract java.lang.StackTraceElement toHostFrame()
+meth public abstract java.lang.String getRootName()
+meth public abstract java.lang.String toStringImpl(int)
+meth public abstract org.graalvm.polyglot.Language getLanguage()
+meth public abstract org.graalvm.polyglot.SourceSection getSourceLocation()
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$AbstractValueImpl
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init(org.graalvm.polyglot.impl.AbstractPolyglotImpl)
+meth public abstract <%0 extends java.lang.Object> {%%0} as(java.lang.Object,java.lang.Class<{%%0}>)
+meth public abstract <%0 extends java.lang.Object> {%%0} as(java.lang.Object,org.graalvm.polyglot.TypeLiteral<{%%0}>)
+meth public abstract boolean asBoolean(java.lang.Object)
+meth public abstract boolean removeArrayElement(java.lang.Object,long)
+meth public abstract boolean removeMember(java.lang.Object,java.lang.String)
+meth public abstract byte asByte(java.lang.Object)
+meth public abstract double asDouble(java.lang.Object)
+meth public abstract float asFloat(java.lang.Object)
+meth public abstract int asInt(java.lang.Object)
+meth public abstract java.lang.Object asHostObject(java.lang.Object)
+meth public abstract java.lang.Object asProxyObject(java.lang.Object)
+meth public abstract java.lang.String asString(java.lang.Object)
+meth public abstract java.lang.String toString(java.lang.Object)
+meth public abstract long asLong(java.lang.Object)
+meth public abstract long asNativePointer(java.lang.Object)
+meth public abstract long getArraySize(java.lang.Object)
+meth public abstract org.graalvm.polyglot.SourceSection getSourceLocation(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value execute(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value execute(java.lang.Object,java.lang.Object[])
+meth public abstract org.graalvm.polyglot.Value getArrayElement(java.lang.Object,long)
+meth public abstract org.graalvm.polyglot.Value getMember(java.lang.Object,java.lang.String)
+meth public abstract org.graalvm.polyglot.Value getMetaObject(java.lang.Object)
+meth public abstract org.graalvm.polyglot.Value invoke(java.lang.Object,java.lang.String)
+meth public abstract org.graalvm.polyglot.Value invoke(java.lang.Object,java.lang.String,java.lang.Object[])
+meth public abstract org.graalvm.polyglot.Value newInstance(java.lang.Object,java.lang.Object[])
+meth public abstract short asShort(java.lang.Object)
+meth public abstract void executeVoid(java.lang.Object)
+meth public abstract void executeVoid(java.lang.Object,java.lang.Object[])
+meth public abstract void putMember(java.lang.Object,java.lang.String,java.lang.Object)
+meth public abstract void setArrayElement(java.lang.Object,long,java.lang.Object)
+meth public boolean canExecute(java.lang.Object)
+meth public boolean canInstantiate(java.lang.Object)
+meth public boolean canInvoke(java.lang.String,java.lang.Object)
+meth public boolean fitsInByte(java.lang.Object)
+meth public boolean fitsInDouble(java.lang.Object)
+meth public boolean fitsInFloat(java.lang.Object)
+meth public boolean fitsInInt(java.lang.Object)
+meth public boolean fitsInLong(java.lang.Object)
+meth public boolean fitsInShort(java.lang.Object)
+meth public boolean hasArrayElements(java.lang.Object)
+meth public boolean hasMember(java.lang.Object,java.lang.String)
+meth public boolean hasMembers(java.lang.Object)
+meth public boolean isBoolean(java.lang.Object)
+meth public boolean isHostObject(java.lang.Object)
+meth public boolean isNativePointer(java.lang.Object)
+meth public boolean isNull(java.lang.Object)
+meth public boolean isNumber(java.lang.Object)
+meth public boolean isProxyObject(java.lang.Object)
+meth public boolean isString(java.lang.Object)
+meth public java.util.Set getMemberKeys(java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract static org.graalvm.polyglot.impl.AbstractPolyglotImpl$MonitoringAccess
+ outer org.graalvm.polyglot.impl.AbstractPolyglotImpl
+cons protected init()
+meth public abstract org.graalvm.polyglot.management.ExecutionEvent newExecutionEvent(java.lang.Object)
+supr java.lang.Object
+
CLSS public abstract interface org.graalvm.polyglot.io.ByteSequence
meth public abstract byte byteAt(int)
meth public abstract int length()
@@ -493,7 +922,9 @@ meth public abstract java.nio.file.Path parsePath(java.lang.String)
meth public abstract java.nio.file.Path parsePath(java.net.URI)
meth public abstract java.nio.file.Path toAbsolutePath(java.nio.file.Path)
meth public abstract void delete(java.nio.file.Path) throws java.io.IOException
+meth public java.lang.String getMimeType(java.nio.file.Path)
meth public java.lang.String getSeparator()
+meth public java.nio.charset.Charset getEncoding(java.nio.file.Path)
meth public java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException
meth public void createLink(java.nio.file.Path,java.nio.file.Path) throws java.io.IOException
meth public void setCurrentWorkingDirectory(java.nio.file.Path)
@@ -587,12 +1018,6 @@ meth public abstract void putMember(java.lang.String,org.graalvm.polyglot.Value)
meth public boolean removeMember(java.lang.String)
meth public static org.graalvm.polyglot.proxy.ProxyObject fromMap(java.util.Map)
-CLSS public abstract interface org.graalvm.polyglot.proxy.ProxyPrimitive
- anno 0 java.lang.Deprecated()
- anno 0 java.lang.FunctionalInterface()
-intf org.graalvm.polyglot.proxy.Proxy
-meth public abstract java.lang.Object asPrimitive()
-
CLSS public final org.netbeans.libs.graalsdk.GraalSDK
supr java.lang.Object
diff --git a/webcommon/libs.graaljs/nbproject/org-netbeans-libs-graaljs.sig b/webcommon/libs.graaljs/nbproject/org-netbeans-libs-graaljs.sig
index 566a46df2f01..d6c9ad5bbd4a 100644
--- a/webcommon/libs.graaljs/nbproject/org-netbeans-libs-graaljs.sig
+++ b/webcommon/libs.graaljs/nbproject/org-netbeans-libs-graaljs.sig
@@ -1,5 +1,5 @@
#Signature file v4.1
-#Version 1.0.11
+#Version 1.1
CLSS public abstract com.oracle.js.parser.AbstractParser
cons protected init(com.oracle.js.parser.Source,com.oracle.js.parser.ErrorManager,boolean,int)
@@ -106,23 +106,11 @@ meth public static boolean isRepresentableAsInt(double)
meth public static boolean isRepresentableAsLong(double)
meth public static boolean isStrictlyRepresentableAsInt(double)
meth public static boolean isStrictlyRepresentableAsLong(double)
-meth public static boolean toBoolean(java.lang.Object)
-meth public static double toNumber(java.lang.Object)
-meth public static double toNumber(java.lang.String)
-meth public static int digit(char,int)
-meth public static int digit(char,int,boolean)
-meth public static int toInt32(double)
-meth public static int toInt32(java.lang.Object)
-meth public static long toLong(double)
-meth public static long toLong(java.lang.Object)
-meth public static long toUint32(double)
-meth public static long toUint32(java.lang.Object)
supr java.lang.Object
-hfds INT32_LIMIT,MAX_UINT
CLSS public com.oracle.js.parser.Lexer
-cons public init(com.oracle.js.parser.Source,com.oracle.js.parser.TokenStream,boolean,boolean,boolean)
-cons public init(com.oracle.js.parser.Source,int,int,com.oracle.js.parser.TokenStream,boolean,boolean,boolean,boolean)
+cons public init(com.oracle.js.parser.Source,com.oracle.js.parser.TokenStream,boolean,boolean,boolean,boolean,boolean)
+cons public init(com.oracle.js.parser.Source,int,int,com.oracle.js.parser.TokenStream,boolean,boolean,boolean,boolean,boolean,boolean)
innr protected abstract interface static LineInfoReceiver
innr public abstract static LexerToken
innr public static RegexToken
@@ -133,7 +121,6 @@ meth protected boolean isEscapeCharacter(char)
meth protected boolean isStringDelimiter(char)
meth protected boolean isWhitespace(char)
meth protected boolean scanLiteral(long,com.oracle.js.parser.TokenType,com.oracle.js.parser.Lexer$LineInfoReceiver)
-meth protected boolean skipComments()
meth protected final void scanTemplateSpan()
meth protected static int convertDigit(char,int)
meth protected void add(com.oracle.js.parser.TokenType,int)
@@ -148,10 +135,11 @@ meth public java.lang.String stringIntern(java.lang.String)
meth public java.lang.String valueOfRawString(long)
meth public static boolean isJSEOL(char)
meth public static boolean isJSWhitespace(char)
+meth public static boolean isStringLineTerminator(char)
meth public static java.lang.String unicodeEscape(char)
meth public void lexify()
supr com.oracle.js.parser.Scanner
-hfds JAVASCRIPT_WHITESPACE_HIGH,JAVASCRIPT_WHITESPACE_HIGH_START,XML_LITERALS,es6,internedStrings,last,linePosition,nested,pauseOnFunctionBody,pauseOnNextLeftBrace,pauseOnRightBrace,pendingLine,scripting,shebang,source,stream
+hfds JAVASCRIPT_WHITESPACE_HIGH,JAVASCRIPT_WHITESPACE_HIGH_START,MESSAGE_INVALID_HEX,XML_LITERALS,allowBigInt,es6,internedStrings,isModule,last,linePosition,nested,pauseOnFunctionBody,pauseOnNextLeftBrace,pauseOnRightBrace,pendingLine,scripting,shebang,source,stream
hcls EditStringLexer,State
CLSS public abstract static com.oracle.js.parser.Lexer$LexerToken
@@ -194,7 +182,6 @@ cons public init(com.oracle.js.parser.ScriptEnvironment,com.oracle.js.parser.Sou
fld protected final com.oracle.js.parser.Lexer$LineInfoReceiver lineInfoReceiver
fld public final static boolean PROFILE_PARSING
fld public final static boolean PROFILE_PARSING_PRINT
-fld public static long totalParsingDuration
meth public com.oracle.js.parser.ir.Expression parseExpression()
meth public com.oracle.js.parser.ir.FunctionNode parse()
meth public com.oracle.js.parser.ir.FunctionNode parse(java.lang.String,int,int,int)
@@ -205,7 +192,7 @@ meth public java.lang.String toString()
meth public void parseFormalParameterList()
meth public void setReparsedFunction(com.oracle.js.parser.RecompilableScriptFunctionData)
supr com.oracle.js.parser.AbstractParser
-hfds ANONYMOUS_FUNCTION_NAME,ARGUMENTS_NAME,ARROW_FUNCTION_NAME,CATCH_PARAMETER_CONTEXT,CONSTRUCTOR_NAME,ERROR_BINDING_NAME,ES2019_OPTIONAL_CATCH_BINDING,ES6_ARROW_FUNCTION,ES6_CLASS,ES6_COMPUTED_PROPERTY_NAME,ES6_DEFAULT_PARAMETER,ES6_DESTRUCTURING,ES6_FOR_OF,ES6_GENERATOR_FUNCTION,ES6_NEW_TARGET,ES6_REST_PARAMETER,ES6_SPREAD_ARGUMENT,ES6_SPREAD_ARRAY,ES8_ASYNC_FUNCTION,ES8_FOR_AWAIT_OF,ES8_REST_SPREAD_PROPERTY,ES8_TRAILING_COMMA,EVAL_NAME,EXEC_NAME,FUNCTION_PARAMETER_CONTEXT,IMPORT_META_NAME,NEW_TARGET_NAME,PROGRAM_NAME,PROTOTYPE_NAME,PROTO_NAME,REPARSE_IS_METHOD,REPARSE_IS_PROPERTY_ACCESSOR,SWITCH_BINDING_NAME,defaultNames,env,functionDeclarations,isModule,lc,namespace,reparsedFunction,scripting,shebang
+hfds ANONYMOUS_FUNCTION_NAME,ARGUMENTS_NAME,ARROW_FUNCTION_NAME,ASSIGNMENT_TARGET_CONTEXT,CATCH_PARAMETER_CONTEXT,CLASS_NAME_CONTEXT,CONSTRUCTOR_NAME,ERROR_BINDING_NAME,ES2019_OPTIONAL_CATCH_BINDING,ES6_ARROW_FUNCTION,ES6_CLASS,ES6_COMPUTED_PROPERTY_NAME,ES6_DEFAULT_PARAMETER,ES6_DESTRUCTURING,ES6_FOR_OF,ES6_GENERATOR_FUNCTION,ES6_NEW_TARGET,ES6_REST_PARAMETER,ES6_SPREAD_ARGUMENT,ES6_SPREAD_ARRAY,ES8_ASYNC_FUNCTION,ES8_FOR_AWAIT_OF,ES8_REST_SPREAD_PROPERTY,ES8_TRAILING_COMMA,EVAL_NAME,EXEC_NAME,FUNCTION_PARAMETER_CONTEXT,IMPORTED_BINDING_CONTEXT,IMPORT_META_NAME,MESSAGE_ESCAPED_KEYWORD,MESSAGE_EXPECTED_OPERAND,MESSAGE_EXPECTED_STMT,MESSAGE_INVALID_ARROW_PARAMETER,MESSAGE_INVALID_LVALUE,MESSAGE_INVALID_PROPERTY_INITIALIZER,MESSAGE_PROPERTY_REDEFINITON,NEW_TARGET_NAME,PROGRAM_NAME,PROTOTYPE_NAME,PROTO_NAME,REPARSE_IS_METHOD,REPARSE_IS_PROPERTY_ACCESSOR,SWITCH_BINDING_NAME,VARIABLE_NAME_CONTEXT,allowBigInt,defaultNames,env,functionDeclarations,isModule,lc,namespace,reparsedFunction,scripting,shebang
hcls ClassElementKey,ForVariableDeclarationListResult,ParserState,PropertyFunction,VerifyDestructuringPatternNodeVisitor
CLSS public final com.oracle.js.parser.ParserException
@@ -254,11 +241,12 @@ innr public final static Builder
meth public boolean isStrict()
meth public static com.oracle.js.parser.ScriptEnvironment$Builder builder()
supr java.lang.Object
-hfds constAsVar,dumpOnError,earlyLvalueError,ecmaScriptVersion,emptyStatements,err,functionStatement,namespace,scripting,shebang,strict,syntaxExtensions
+hfds allowBigInt,constAsVar,dumpOnError,earlyLvalueError,ecmaScriptVersion,emptyStatements,err,functionStatement,namespace,scripting,shebang,strict,syntaxExtensions
CLSS public final static com.oracle.js.parser.ScriptEnvironment$Builder
outer com.oracle.js.parser.ScriptEnvironment
meth public com.oracle.js.parser.ScriptEnvironment build()
+meth public com.oracle.js.parser.ScriptEnvironment$Builder allowBigInt(boolean)
meth public com.oracle.js.parser.ScriptEnvironment$Builder constAsVar(boolean)
meth public com.oracle.js.parser.ScriptEnvironment$Builder dumpOnError(java.io.PrintWriter)
meth public com.oracle.js.parser.ScriptEnvironment$Builder earlyLvalueError(boolean)
@@ -270,7 +258,7 @@ meth public com.oracle.js.parser.ScriptEnvironment$Builder shebang(boolean)
meth public com.oracle.js.parser.ScriptEnvironment$Builder strict(boolean)
meth public com.oracle.js.parser.ScriptEnvironment$Builder syntaxExtensions(boolean)
supr java.lang.Object
-hfds constAsVar,dumpOnError,earlyLvalueError,ecmaScriptVersion,emptyStatements,functionStatementBehavior,scripting,shebang,strict,syntaxExtensions
+hfds allowBigInt,constAsVar,dumpOnError,earlyLvalueError,ecmaScriptVersion,emptyStatements,functionStatementBehavior,scripting,shebang,strict,syntaxExtensions
CLSS public final static !enum com.oracle.js.parser.ScriptEnvironment$FunctionStatementBehavior
outer com.oracle.js.parser.ScriptEnvironment
@@ -509,7 +497,7 @@ meth public static com.oracle.js.parser.TokenType valueOf(java.lang.String)
meth public static com.oracle.js.parser.TokenType[] values()
meth public void setNext(com.oracle.js.parser.TokenType)
supr java.lang.Enum
-hfds isLeftAssociative,kind,name,next,precedence,values
+hfds isLeftAssociative,kind,name,next,precedence,tokenValues
CLSS public final com.oracle.js.parser.ir.AccessNode
cons public init(long,int,com.oracle.js.parser.ir.Expression,java.lang.String)
@@ -555,8 +543,8 @@ meth public com.oracle.js.parser.ir.BinaryNode setLHS(com.oracle.js.parser.ir.Ex
meth public com.oracle.js.parser.ir.BinaryNode setRHS(com.oracle.js.parser.ir.Expression)
meth public com.oracle.js.parser.ir.Expression getAssignmentDest()
meth public com.oracle.js.parser.ir.Expression getAssignmentSource()
-meth public com.oracle.js.parser.ir.Expression lhs()
-meth public com.oracle.js.parser.ir.Expression rhs()
+meth public com.oracle.js.parser.ir.Expression getLhs()
+meth public com.oracle.js.parser.ir.Expression getRhs()
meth public com.oracle.js.parser.ir.Node accept(com.oracle.js.parser.ir.visitor.NodeVisitor extends com.oracle.js.parser.ir.LexicalContext>)
meth public static boolean isLogical(com.oracle.js.parser.TokenType)
meth public void toString(java.lang.StringBuilder,boolean)
@@ -641,7 +629,6 @@ hfds block
CLSS public final com.oracle.js.parser.ir.BreakNode
cons public init(int,long,int,java.lang.String)
meth public <%0 extends java.lang.Object> {%%0} accept(com.oracle.js.parser.ir.visitor.TranslatorNodeVisitor extends com.oracle.js.parser.ir.LexicalContext,{%%0}>)
-meth public com.oracle.js.parser.ir.BreakableNode getTarget(com.oracle.js.parser.ir.LexicalContext)
meth public com.oracle.js.parser.ir.Node accept(com.oracle.js.parser.ir.visitor.NodeVisitor extends com.oracle.js.parser.ir.LexicalContext>)
supr com.oracle.js.parser.ir.JumpStatement
@@ -652,9 +639,11 @@ meth public abstract boolean isBreakableWithoutLabel()
CLSS public final com.oracle.js.parser.ir.CallNode
cons public init(int,long,int,com.oracle.js.parser.ir.Expression,java.util.List,boolean)
cons public init(int,long,int,int,com.oracle.js.parser.ir.Expression,java.util.List,boolean)
+cons public init(int,long,int,int,com.oracle.js.parser.ir.Expression,java.util.List,boolean,boolean)
intf com.oracle.js.parser.ir.LexicalContextNode
meth public <%0 extends java.lang.Object> {%%0} accept(com.oracle.js.parser.ir.LexicalContext,com.oracle.js.parser.ir.visitor.TranslatorNodeVisitor extends com.oracle.js.parser.ir.LexicalContext,{%%0}>)
meth public boolean isEval()
+meth public boolean isImport()
meth public boolean isNew()
meth public com.oracle.js.parser.ir.CallNode setArgs(java.util.List)
meth public com.oracle.js.parser.ir.CallNode setFunction(com.oracle.js.parser.ir.Expression)
@@ -664,9 +653,10 @@ meth public final <%0 extends java.lang.Object> {%%0} accept(com.oracle.js.parse
meth public final com.oracle.js.parser.ir.Node accept(com.oracle.js.parser.ir.visitor.NodeVisitor extends com.oracle.js.parser.ir.LexicalContext>)
meth public int getLineNumber()
meth public java.util.List getArgs()
+meth public static com.oracle.js.parser.ir.Expression forImport(int,long,int,int,com.oracle.js.parser.ir.IdentNode,java.util.List)
meth public void toString(java.lang.StringBuilder,boolean)
supr com.oracle.js.parser.ir.Expression
-hfds IS_EVAL,IS_NEW,args,flags,function,lineNumber
+hfds IS_EVAL,IS_IMPORT,IS_NEW,args,flags,function,lineNumber
CLSS public final com.oracle.js.parser.ir.CaseNode
cons public init(long,int,com.oracle.js.parser.ir.Expression,java.util.List)
@@ -716,7 +706,6 @@ hfds classElements,classHeritage,constructor,ident
CLSS public com.oracle.js.parser.ir.ContinueNode
cons public init(int,long,int,java.lang.String)
meth public <%0 extends java.lang.Object> {%%0} accept(com.oracle.js.parser.ir.visitor.TranslatorNodeVisitor extends com.oracle.js.parser.ir.LexicalContext,{%%0}>)
-meth public com.oracle.js.parser.ir.BreakableNode getTarget(com.oracle.js.parser.ir.LexicalContext)
meth public com.oracle.js.parser.ir.Node accept(com.oracle.js.parser.ir.visitor.NodeVisitor extends com.oracle.js.parser.ir.LexicalContext>)
supr com.oracle.js.parser.ir.JumpStatement
@@ -1082,9 +1071,6 @@ supr com.oracle.js.parser.ir.Expression
hfds expression
CLSS public abstract com.oracle.js.parser.ir.JumpStatement
-cons protected init(com.oracle.js.parser.ir.JumpStatement)
-cons protected init(int,long,int,java.lang.String)
-meth public abstract com.oracle.js.parser.ir.BreakableNode getTarget(com.oracle.js.parser.ir.LexicalContext)
meth public boolean hasGoto()
meth public java.lang.String getLabelName()
meth public void toString(java.lang.StringBuilder,boolean)
@@ -1113,21 +1099,13 @@ meth public <%0 extends com.oracle.js.parser.ir.LexicalContextNode> {%%0} push({
meth public boolean contains(com.oracle.js.parser.ir.LexicalContextNode)
meth public boolean inUnprotectedSwitchContext()
meth public boolean isEmpty()
-meth public boolean isFunctionBody()
meth public com.oracle.js.parser.ir.Block getCurrentBlock()
meth public com.oracle.js.parser.ir.Block getParentBlock()
-meth public com.oracle.js.parser.ir.BreakableNode getBreakable(java.lang.String)
meth public com.oracle.js.parser.ir.FunctionNode getCurrentFunction()
meth public com.oracle.js.parser.ir.FunctionNode getCurrentNonArrowFunction()
-meth public com.oracle.js.parser.ir.FunctionNode getOutermostFunction()
-meth public com.oracle.js.parser.ir.LabelNode findLabel(java.lang.String)
-meth public com.oracle.js.parser.ir.LabelNode getCurrentBlockLabelNode()
meth public com.oracle.js.parser.ir.LexicalContextNode replace(com.oracle.js.parser.ir.LexicalContextNode,com.oracle.js.parser.ir.LexicalContextNode)
-meth public com.oracle.js.parser.ir.LoopNode getContinueTo(java.lang.String)
-meth public com.oracle.js.parser.ir.LoopNode getCurrentLoop()
meth public java.lang.String toString()
meth public java.util.Iterator getBlocks()
-meth public java.util.Iterator getBlocksInCurrentFunction()
meth public java.util.Iterator getFunctions()
meth public java.util.Iterator getAllNodes()
supr java.lang.Object
@@ -1148,21 +1126,13 @@ fld protected final {com.oracle.js.parser.ir.LiteralNode%0} value
innr public final static ArrayLiteralNode
innr public static PrimitiveLiteralNode
meth public <%0 extends java.lang.Object> {%%0} accept(com.oracle.js.parser.ir.visitor.TranslatorNodeVisitor extends com.oracle.js.parser.ir.LexicalContext,{%%0}>)
-meth public boolean getBoolean()
meth public boolean isArray()
-meth public boolean isBoolean()
-meth public boolean isNull()
-meth public boolean isNumeric()
meth public boolean isString()
meth public com.oracle.js.parser.ir.Node accept(com.oracle.js.parser.ir.visitor.NodeVisitor extends com.oracle.js.parser.ir.LexicalContext>)
-meth public double getNumber()
meth public final {com.oracle.js.parser.ir.LiteralNode%0} getValue()
-meth public int getInt32()
meth public java.lang.Object getObject()
meth public java.lang.String getString()
meth public java.util.List getElementExpressions()
-meth public long getLong()
-meth public long getUint32()
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,com.oracle.js.parser.Lexer$LexerToken)
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,com.oracle.js.parser.ir.Expression[])
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,java.util.List)
@@ -1171,7 +1141,7 @@ meth public static com.oracle.js.parser.ir.LiteralNode newIns
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,java.lang.Number)
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,java.lang.Number,java.util.function.Function)
meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int)
-meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,int,java.lang.String)
+meth public static com.oracle.js.parser.ir.LiteralNode newInstance(long,java.lang.String)
meth public void toString(java.lang.StringBuilder,boolean)
supr com.oracle.js.parser.ir.Expression
hcls BooleanLiteralNode,LexerTokenLiteralNode,NullLiteralNode,NumberLiteralNode,StringLiteralNode
@@ -1197,9 +1167,6 @@ hfds hasCoverInitializedName,hasSpread,hasTrailingComma
CLSS public static com.oracle.js.parser.ir.LiteralNode$PrimitiveLiteralNode<%0 extends java.lang.Object>
outer com.oracle.js.parser.ir.LiteralNode
intf com.oracle.js.parser.ir.PropertyKey
-meth public boolean isAlwaysFalse()
-meth public boolean isAlwaysTrue()
-meth public boolean isTrue()
meth public java.lang.String getPropertyName()
supr com.oracle.js.parser.ir.LiteralNode<{com.oracle.js.parser.ir.LiteralNode$PrimitiveLiteralNode%0}>
diff --git a/webcommon/libs.truffleapi/nbproject/org-netbeans-libs-truffleapi.sig b/webcommon/libs.truffleapi/nbproject/org-netbeans-libs-truffleapi.sig
index 5473765c724e..15ce3bdc12c3 100644
--- a/webcommon/libs.truffleapi/nbproject/org-netbeans-libs-truffleapi.sig
+++ b/webcommon/libs.truffleapi/nbproject/org-netbeans-libs-truffleapi.sig
@@ -1,5 +1,5 @@
#Signature file v4.1
-#Version 1.0.11
+#Version 1.1
CLSS public final com.oracle.truffle.api.ArrayUtils
meth public !varargs static int indexOf(byte[],int,int,byte[])
@@ -12,6 +12,8 @@ meth public abstract boolean isValid()
meth public abstract java.lang.String getName()
meth public abstract void check() throws com.oracle.truffle.api.nodes.InvalidAssumptionException
meth public abstract void invalidate()
+meth public static boolean isValidAssumption(com.oracle.truffle.api.Assumption)
+meth public static boolean isValidAssumption(com.oracle.truffle.api.Assumption[])
meth public void invalidate(java.lang.String)
CLSS public abstract interface com.oracle.truffle.api.CallTarget
@@ -25,8 +27,6 @@ meth public static void neverPartOfCompilation(java.lang.String)
supr java.lang.Object
CLSS public final com.oracle.truffle.api.CompilerDirectives
-cons public init()
- anno 0 java.lang.Deprecated()
fld public final static double FASTPATH_PROBABILITY = 0.9999
fld public final static double LIKELY_PROBABILITY = 0.75
fld public final static double SLOWPATH_PROBABILITY = 1.0E-4
@@ -64,8 +64,6 @@ CLSS public abstract interface static !annotation com.oracle.truffle.api.Compile
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[METHOD, CONSTRUCTOR])
intf java.lang.annotation.Annotation
meth public abstract !hasdefault boolean allowInlining()
-meth public abstract !hasdefault boolean throwsControlFlowException()
- anno 0 java.lang.Deprecated()
meth public abstract !hasdefault boolean transferToInterpreterOnException()
CLSS public abstract interface static !annotation com.oracle.truffle.api.CompilerDirectives$ValueType
@@ -78,31 +76,11 @@ CLSS public abstract interface com.oracle.truffle.api.CompilerOptions
meth public abstract boolean supportsOption(java.lang.String)
meth public abstract void setOption(java.lang.String,java.lang.Object)
-CLSS public com.oracle.truffle.api.ExactMath
-cons public init()
- anno 0 java.lang.Deprecated()
-meth public static int addExact(int,int)
- anno 0 java.lang.Deprecated()
-meth public static int multiplyExact(int,int)
- anno 0 java.lang.Deprecated()
+CLSS public final com.oracle.truffle.api.ExactMath
meth public static int multiplyHigh(int,int)
meth public static int multiplyHighUnsigned(int,int)
-meth public static int subtractExact(int,int)
- anno 0 java.lang.Deprecated()
-meth public static long addExact(long,long)
- anno 0 java.lang.Deprecated()
-meth public static long multiplyExact(long,long)
- anno 0 java.lang.Deprecated()
meth public static long multiplyHigh(long,long)
meth public static long multiplyHighUnsigned(long,long)
-meth public static long subtractExact(long,long)
- anno 0 java.lang.Deprecated()
-supr java.lang.Object
-
-CLSS public abstract com.oracle.truffle.api.ExecutionContext
- anno 0 java.lang.Deprecated()
-cons protected init()
-meth public com.oracle.truffle.api.CompilerOptions getCompilerOptions()
supr java.lang.Object
CLSS public final com.oracle.truffle.api.InstrumentInfo
@@ -113,10 +91,6 @@ meth public java.lang.String toString()
supr java.lang.Object
hfds id,name,version,vmObject
-CLSS public abstract interface com.oracle.truffle.api.LoopCountReceiver
- anno 0 java.lang.Deprecated()
-meth public abstract void reportLoopCount(int)
-
CLSS public com.oracle.truffle.api.OptimizationFailedException
cons public init(java.lang.Throwable,com.oracle.truffle.api.RootCallTarget)
meth public com.oracle.truffle.api.RootCallTarget getCallTarget()
@@ -130,6 +104,7 @@ innr public abstract interface static !annotation Group
intf java.lang.annotation.Annotation
meth public abstract !hasdefault boolean deprecated()
meth public abstract !hasdefault java.lang.String name()
+meth public abstract !hasdefault org.graalvm.options.OptionStability stability()
meth public abstract java.lang.String help()
meth public abstract org.graalvm.options.OptionCategory category()
@@ -151,23 +126,24 @@ CLSS public final com.oracle.truffle.api.Scope
innr public final Builder
meth public com.oracle.truffle.api.nodes.Node getNode()
meth public java.lang.Object getArguments()
+meth public java.lang.Object getReceiver()
meth public java.lang.Object getVariables()
meth public java.lang.String getName()
+meth public java.lang.String getReceiverName()
meth public static com.oracle.truffle.api.Scope$Builder newBuilder(java.lang.String,java.lang.Object)
supr java.lang.Object
-hfds EMPTY,arguments,name,node,variables
+hfds EMPTY,arguments,name,node,receiver,receiverName,variables
CLSS public final com.oracle.truffle.api.Scope$Builder
outer com.oracle.truffle.api.Scope
meth public com.oracle.truffle.api.Scope build()
meth public com.oracle.truffle.api.Scope$Builder arguments(java.lang.Object)
meth public com.oracle.truffle.api.Scope$Builder node(com.oracle.truffle.api.nodes.Node)
+meth public com.oracle.truffle.api.Scope$Builder receiver(java.lang.String,java.lang.Object)
supr java.lang.Object
-hfds arguments,name,node,variables
+hfds arguments,name,node,receiver,receiverName,variables
-CLSS public com.oracle.truffle.api.Truffle
-cons public init()
- anno 0 java.lang.Deprecated()
+CLSS public final com.oracle.truffle.api.Truffle
meth public static com.oracle.truffle.api.TruffleRuntime getRuntime()
supr java.lang.Object
hfds RUNTIME
@@ -180,7 +156,7 @@ meth public java.lang.Object enter()
meth public void close()
meth public void leave(java.lang.Object)
supr java.lang.Object
-hfds EMPTY,assertStack,closeable,impl
+hfds CONTEXT_ASSERT_STACK,EMPTY,closeable,impl
CLSS public final com.oracle.truffle.api.TruffleContext$Builder
outer com.oracle.truffle.api.TruffleContext
@@ -196,18 +172,40 @@ meth public boolean isExit()
meth public boolean isIncompleteSource()
meth public boolean isInternalError()
meth public boolean isSyntaxError()
-meth public boolean isTimeout()
- anno 0 java.lang.Deprecated()
meth public com.oracle.truffle.api.source.SourceSection getSourceLocation()
meth public int getExitStatus()
meth public int getStackTraceElementLimit()
meth public java.lang.Object getExceptionObject()
CLSS public final com.oracle.truffle.api.TruffleFile
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor IS_DIRECTORY
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor IS_OTHER
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor IS_REGULAR_FILE
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor IS_SYMBOLIC_LINK
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_GID
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_MODE
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_NLINK
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_UID
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor SIZE
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_DEV
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_INODE
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_RDEV
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor CREATION_TIME
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor LAST_ACCESS_TIME
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor LAST_MODIFIED_TIME
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_CTIME
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_GROUP
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor UNIX_OWNER
+fld public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor> UNIX_PERMISSIONS
+innr public abstract interface static FileTypeDetector
+innr public final static AttributeDescriptor
+innr public final static Attributes
+meth public !varargs <%0 extends java.lang.Object> {%%0} getAttribute(com.oracle.truffle.api.TruffleFile$AttributeDescriptor<{%%0}>,java.nio.file.LinkOption[]) throws java.io.IOException
meth public !varargs boolean exists(java.nio.file.LinkOption[])
meth public !varargs boolean isDirectory(java.nio.file.LinkOption[])
meth public !varargs boolean isRegularFile(java.nio.file.LinkOption[])
meth public !varargs com.oracle.truffle.api.TruffleFile getCanonicalFile(java.nio.file.LinkOption[]) throws java.io.IOException
+meth public !varargs com.oracle.truffle.api.TruffleFile$Attributes getAttributes(java.util.Collection extends com.oracle.truffle.api.TruffleFile$AttributeDescriptor>>,java.nio.file.LinkOption[]) throws java.io.IOException
meth public !varargs java.io.BufferedWriter newBufferedWriter(java.nio.charset.Charset,java.nio.file.OpenOption[]) throws java.io.IOException
meth public !varargs java.io.BufferedWriter newBufferedWriter(java.nio.file.OpenOption[]) throws java.io.IOException
meth public !varargs java.io.InputStream newInputStream(java.nio.file.OpenOption[]) throws java.io.IOException
@@ -251,6 +249,7 @@ meth public com.oracle.truffle.api.TruffleFile resolveSibling(java.lang.String)
meth public int hashCode()
meth public java.io.BufferedReader newBufferedReader() throws java.io.IOException
meth public java.io.BufferedReader newBufferedReader(java.nio.charset.Charset) throws java.io.IOException
+meth public java.lang.String getMimeType() throws java.io.IOException
meth public java.lang.String getName()
meth public java.lang.String getPath()
meth public java.lang.String toString()
@@ -261,14 +260,32 @@ meth public java.util.Collection list() thro
meth public void createLink(com.oracle.truffle.api.TruffleFile) throws java.io.IOException
meth public void delete() throws java.io.IOException
supr java.lang.Object
-hfds BUFFER_SIZE,MAX_BUFFER_SIZE,fileSystem,normalizedPath,path
-hcls AllFiles,ByteChannelDecorator,TruffleFileDirectoryStream,Walker
+hfds BUFFER_SIZE,MAX_BUFFER_SIZE,fileSystemContext,normalizedPath,path
+hcls AllFiles,AttributeGroup,ByteChannelDecorator,FileSystemContext,TruffleFileDirectoryStream,Walker
+
+CLSS public final static com.oracle.truffle.api.TruffleFile$AttributeDescriptor<%0 extends java.lang.Object>
+ outer com.oracle.truffle.api.TruffleFile
+meth public java.lang.String toString()
+supr java.lang.Object
+hfds clazz,group,name
+
+CLSS public final static com.oracle.truffle.api.TruffleFile$Attributes
+ outer com.oracle.truffle.api.TruffleFile
+meth public <%0 extends java.lang.Object> {%%0} get(com.oracle.truffle.api.TruffleFile$AttributeDescriptor<{%%0}>)
+supr java.lang.Object
+hfds delegate,queriedAttributes
+
+CLSS public abstract interface static com.oracle.truffle.api.TruffleFile$FileTypeDetector
+ outer com.oracle.truffle.api.TruffleFile
+meth public abstract java.lang.String findMimeType(com.oracle.truffle.api.TruffleFile) throws java.io.IOException
+meth public abstract java.nio.charset.Charset findEncoding(com.oracle.truffle.api.TruffleFile) throws java.io.IOException
CLSS public abstract com.oracle.truffle.api.TruffleLanguage<%0 extends java.lang.Object>
cons protected init()
innr public abstract interface static !annotation Registration
+innr public abstract static ContextReference
+innr public abstract static LanguageReference
innr public final static !enum ContextPolicy
-innr public final static ContextReference
innr public final static Env
innr public final static InlineParsingRequest
innr public final static ParsingRequest
@@ -304,7 +321,7 @@ meth protected void initializeMultipleContexts()
meth protected void initializeThread({com.oracle.truffle.api.TruffleLanguage%0},java.lang.Thread)
meth public final com.oracle.truffle.api.TruffleLanguage$ContextReference<{com.oracle.truffle.api.TruffleLanguage%0}> getContextReference()
supr java.lang.Object
-hfds API,languageInfo,reference
+hfds API,languageInfo,reference,vmObject
hcls AccessAPI,LanguageImpl
CLSS public final static !enum com.oracle.truffle.api.TruffleLanguage$ContextPolicy
@@ -316,11 +333,11 @@ meth public static com.oracle.truffle.api.TruffleLanguage$ContextPolicy valueOf(
meth public static com.oracle.truffle.api.TruffleLanguage$ContextPolicy[] values()
supr java.lang.Enum
-CLSS public final static com.oracle.truffle.api.TruffleLanguage$ContextReference<%0 extends java.lang.Object>
+CLSS public abstract static com.oracle.truffle.api.TruffleLanguage$ContextReference<%0 extends java.lang.Object>
outer com.oracle.truffle.api.TruffleLanguage
-meth public {com.oracle.truffle.api.TruffleLanguage$ContextReference%0} get()
+cons protected init()
+meth public abstract {com.oracle.truffle.api.TruffleLanguage$ContextReference%0} get()
supr java.lang.Object
-hfds languageShared
CLSS public final static com.oracle.truffle.api.TruffleLanguage$Env
outer com.oracle.truffle.api.TruffleLanguage
@@ -336,6 +353,7 @@ meth public boolean isHostObject(java.lang.Object)
meth public boolean isHostSymbol(java.lang.Object)
meth public boolean isMimeTypeSupported(java.lang.String)
meth public boolean isNativeAccessAllowed()
+meth public boolean isPolyglotAccessAllowed()
meth public boolean isPreInitialization()
meth public com.oracle.truffle.api.TruffleContext getContext()
meth public com.oracle.truffle.api.TruffleContext$Builder newContextBuilder()
@@ -353,6 +371,7 @@ meth public java.lang.Object findMetaObject(java.lang.Object)
meth public java.lang.Object getPolyglotBindings()
meth public java.lang.Object importSymbol(java.lang.String)
meth public java.lang.Object lookupHostSymbol(java.lang.String)
+meth public java.lang.String getFileNameSeparator()
meth public java.lang.String[] getApplicationArguments()
meth public java.lang.Thread createThread(java.lang.Runnable)
meth public java.lang.Thread createThread(java.lang.Runnable,com.oracle.truffle.api.TruffleContext)
@@ -365,9 +384,10 @@ meth public java.util.Map getConfig()
meth public org.graalvm.options.OptionValues getOptions()
meth public void addToHostClassPath(com.oracle.truffle.api.TruffleFile)
meth public void exportSymbol(java.lang.String,java.lang.Object)
+meth public void registerService(java.lang.Object)
meth public void setCurrentWorkingDirectory(com.oracle.truffle.api.TruffleFile)
supr java.lang.Object
-hfds UNSET_CONTEXT,applicationArguments,config,context,contextUnchangedAssumption,err,fileSystem,in,initialized,initializedUnchangedAssumption,options,out,services,spi,valid,vmObject
+hfds UNSET_CONTEXT,applicationArguments,config,context,contextUnchangedAssumption,err,fileSystemContext,in,initialized,initializedUnchangedAssumption,languageServicesCollector,options,out,services,spi,valid,vmObject
CLSS public final static com.oracle.truffle.api.TruffleLanguage$InlineParsingRequest
outer com.oracle.truffle.api.TruffleLanguage
@@ -377,16 +397,18 @@ meth public com.oracle.truffle.api.source.Source getSource()
supr java.lang.Object
hfds disposed,frame,node,source
+CLSS public abstract static com.oracle.truffle.api.TruffleLanguage$LanguageReference<%0 extends com.oracle.truffle.api.TruffleLanguage>
+ outer com.oracle.truffle.api.TruffleLanguage
+cons protected init()
+meth public abstract {com.oracle.truffle.api.TruffleLanguage$LanguageReference%0} get()
+supr java.lang.Object
+
CLSS public final static com.oracle.truffle.api.TruffleLanguage$ParsingRequest
outer com.oracle.truffle.api.TruffleLanguage
-meth public com.oracle.truffle.api.frame.MaterializedFrame getFrame()
- anno 0 java.lang.Deprecated()
-meth public com.oracle.truffle.api.nodes.Node getLocation()
- anno 0 java.lang.Deprecated()
meth public com.oracle.truffle.api.source.Source getSource()
meth public java.util.List getArgumentNames()
supr java.lang.Object
-hfds argumentNames,disposed,frame,node,source
+hfds argumentNames,disposed,source
CLSS public abstract interface static !annotation com.oracle.truffle.api.TruffleLanguage$Registration
outer com.oracle.truffle.api.TruffleLanguage
@@ -396,6 +418,8 @@ intf java.lang.annotation.Annotation
meth public abstract !hasdefault boolean interactive()
meth public abstract !hasdefault boolean internal()
meth public abstract !hasdefault com.oracle.truffle.api.TruffleLanguage$ContextPolicy contextPolicy()
+meth public abstract !hasdefault java.lang.Class extends com.oracle.truffle.api.TruffleFile$FileTypeDetector>[] fileTypeDetectors()
+meth public abstract !hasdefault java.lang.Class>[] services()
meth public abstract !hasdefault java.lang.String defaultMimeType()
meth public abstract !hasdefault java.lang.String id()
meth public abstract !hasdefault java.lang.String implementationName()
@@ -447,7 +471,7 @@ meth public void severe(java.util.function.Supplier)
meth public void warning(java.lang.String)
meth public void warning(java.util.function.Supplier)
supr java.lang.Object
-hfds DEFAULT_VALUE,MAX_CLEANED_REFS,OFF_VALUE,ROOT_NAME,children,childrenLock,handlerProvider,levelNum,levelNumStable,levelObj,loggersRefQueue,name,parent
+hfds DEFAULT_VALUE,MAX_CLEANED_REFS,OFF_VALUE,ROOT_NAME,children,childrenLock,handlerProvider,levelNum,levelNumStable,levelObj,loggerCache,loggersRefQueue,name,parent
hcls AbstractLoggerRef,ChildLoggerRef,LoggerCache,PolyglotLogHandlerProvider
CLSS public final com.oracle.truffle.api.TruffleOptions
@@ -484,19 +508,28 @@ CLSS public abstract interface com.oracle.truffle.api.TruffleRuntimeAccess
meth public abstract com.oracle.truffle.api.TruffleRuntime getRuntime()
meth public int getPriority()
+CLSS public final com.oracle.truffle.api.TruffleStackTrace
+meth public java.lang.String toString()
+meth public java.lang.Throwable fillInStackTrace()
+meth public static com.oracle.truffle.api.TruffleStackTrace fillIn(java.lang.Throwable)
+meth public static java.util.List getStackTrace(java.lang.Throwable)
+meth public static java.util.List getStacktrace(java.lang.Throwable)
+ anno 0 java.lang.Deprecated()
+supr java.lang.Exception
+hfds EMPTY,frames,lazyFrames,materializedHostException
+hcls LazyStackTrace,TracebackElement
+
CLSS public final com.oracle.truffle.api.TruffleStackTraceElement
meth public com.oracle.truffle.api.RootCallTarget getTarget()
meth public com.oracle.truffle.api.frame.Frame getFrame()
meth public com.oracle.truffle.api.nodes.Node getLocation()
meth public static java.util.List getStackTrace(java.lang.Throwable)
+ anno 0 java.lang.Deprecated()
meth public static void fillIn(java.lang.Throwable)
+ anno 0 java.lang.Deprecated()
supr java.lang.Object
hfds frame,location,target
-CLSS public abstract interface com.oracle.truffle.api.TypedObject
- anno 0 java.lang.Deprecated()
-meth public abstract java.lang.Object getTypeIdentifier()
-
CLSS public com.oracle.truffle.api.debug.Breakpoint
innr public abstract interface static ResolveListener
innr public final Builder
@@ -524,7 +557,7 @@ meth public void setEnabled(boolean)
meth public void setIgnoreCount(int)
supr java.lang.Object
hfds BUILDER_INSTANCE,breakpointBinding,condition,conditionExistsUnchanged,conditionUnchanged,debugger,disposed,enabled,exceptionFilter,global,hitCount,ignoreCount,locationKey,oneShot,resolveListener,resolved,roWrapper,sessions,sessionsUnchanged,sourceBinding,suspendAnchor
-hcls AbstractBreakpointNode,BreakpointAfterNode,BreakpointAfterNodeException,BreakpointBeforeNode,BreakpointConditionFailure,BreakpointNodeFactory,ConditionalBreakNode,GlobalBreakpoint
+hcls AbstractBreakpointNode,BreakpointAfterNode,BreakpointAfterNodeException,BreakpointBeforeNode,BreakpointConditionFailure,BreakpointNodeFactory,ConditionalBreakNode,GlobalBreakpoint,SessionList
CLSS public final com.oracle.truffle.api.debug.Breakpoint$Builder
outer com.oracle.truffle.api.debug.Breakpoint
@@ -603,6 +636,7 @@ CLSS public final com.oracle.truffle.api.debug.DebugScope
meth public boolean isFunctionScope()
meth public com.oracle.truffle.api.debug.DebugScope getParent()
meth public com.oracle.truffle.api.debug.DebugValue getDeclaredValue(java.lang.String)
+meth public com.oracle.truffle.api.debug.DebugValue getReceiver()
meth public com.oracle.truffle.api.source.SourceSection getSourceSection()
meth public java.lang.Iterable getArguments()
meth public java.lang.Iterable getDeclaredValues()
@@ -611,19 +645,14 @@ supr java.lang.Object
hfds event,frame,iterator,language,parent,root,scope,session,variables
CLSS public final com.oracle.truffle.api.debug.DebugStackFrame
-intf java.lang.Iterable
meth public boolean equals(java.lang.Object)
meth public boolean isInternal()
meth public com.oracle.truffle.api.debug.DebugScope getScope()
meth public com.oracle.truffle.api.debug.DebugValue eval(java.lang.String)
-meth public com.oracle.truffle.api.debug.DebugValue getValue(java.lang.String)
- anno 0 java.lang.Deprecated()
meth public com.oracle.truffle.api.nodes.LanguageInfo getLanguage()
meth public com.oracle.truffle.api.source.SourceSection getSourceSection()
meth public int hashCode()
meth public java.lang.String getName()
-meth public java.util.Iterator iterator()
- anno 0 java.lang.Deprecated()
supr java.lang.Object
hfds currentFrame,depth,event
@@ -640,18 +669,21 @@ meth public abstract void threadDisposed(com.oracle.truffle.api.debug.DebugConte
meth public abstract void threadInitialized(com.oracle.truffle.api.debug.DebugContext,java.lang.Thread)
CLSS public abstract com.oracle.truffle.api.debug.DebugValue
+meth public !varargs final com.oracle.truffle.api.debug.DebugValue execute(com.oracle.truffle.api.debug.DebugValue[])
meth public abstract <%0 extends java.lang.Object> {%%0} as(java.lang.Class<{%%0}>)
meth public abstract boolean hasReadSideEffects()
meth public abstract boolean hasWriteSideEffects()
meth public abstract boolean isInternal()
meth public abstract boolean isReadable()
meth public abstract boolean isWritable()
+meth public abstract java.lang.String asString()
meth public abstract java.lang.String getName()
meth public abstract void set(com.oracle.truffle.api.debug.DebugValue)
meth public abstract void set(java.lang.Object)
meth public com.oracle.truffle.api.debug.DebugScope getScope()
meth public final boolean canExecute()
meth public final boolean isArray()
+meth public final boolean isNull()
meth public final com.oracle.truffle.api.debug.DebugValue asInLanguage(com.oracle.truffle.api.nodes.LanguageInfo)
meth public final com.oracle.truffle.api.debug.DebugValue getMetaObject()
meth public final com.oracle.truffle.api.debug.DebugValue getProperty(java.lang.String)
@@ -661,13 +693,14 @@ meth public final java.util.Collection
meth public final java.util.List getArray()
meth public java.lang.String toString()
supr java.lang.Object
-hfds preferredLanguage
-hcls HeapValue,PropertyNamedValue,PropertyValue
+hfds INTEROP,preferredLanguage
+hcls AbstractDebugValue,ArrayElementValue,HeapValue,ObjectMemberValue,ObjectPropertyValue
CLSS public final com.oracle.truffle.api.debug.Debugger
meth public !varargs com.oracle.truffle.api.debug.DebuggerSession startSession(com.oracle.truffle.api.debug.SuspendedCallback,com.oracle.truffle.api.debug.SourceElement[])
meth public com.oracle.truffle.api.debug.Breakpoint install(com.oracle.truffle.api.debug.Breakpoint)
meth public com.oracle.truffle.api.debug.DebuggerSession startSession(com.oracle.truffle.api.debug.SuspendedCallback)
+meth public int getSessionCount()
meth public java.util.List getBreakpoints()
meth public static com.oracle.truffle.api.debug.Debugger find(com.oracle.truffle.api.TruffleLanguage$Env)
meth public static com.oracle.truffle.api.debug.Debugger find(com.oracle.truffle.api.instrumentation.TruffleInstrument$Env)
@@ -677,7 +710,7 @@ meth public void addBreakpointRemovedListener(java.util.function.Consumer)
meth public void removeBreakpointRemovedListener(java.util.function.Consumer)
supr java.lang.Object
-hfds ACCESSOR,TRACE,alwaysHaltBreakpoint,breakpointAddedListeners,breakpointRemovedListeners,breakpoints,env,msgNodes,propSupport,sessions
+hfds ACCESSOR,TRACE,alwaysHaltBreakpoint,breakpointAddedListeners,breakpointRemovedListeners,breakpoints,env,propSupport,sessions
hcls AccessorDebug
CLSS public final com.oracle.truffle.api.debug.DebuggerSession
@@ -703,7 +736,7 @@ meth public void setSteppingFilter(com.oracle.truffle.api.debug.SuspensionFilter
meth public void setThreadsListener(com.oracle.truffle.api.debug.DebugThreadsListener,boolean)
meth public void suspendNextExecution()
supr java.lang.Object
-hfds ANCHOR_SET_AFTER,ANCHOR_SET_ALL,ANCHOR_SET_BEFORE,SESSIONS,allBindings,alwaysHaltBreakpointsActive,breakpoints,callback,closed,currentSuspendedEventMap,debugger,exceptionBreakpointsActive,executionLifecycle,hasExpressionElement,hasRootElement,ignoreLanguageContextInitialization,includeInternal,locationBreakpointsActive,sessionId,sourceElements,sourceFilter,sources,stepping,strategyMap,suspendAll,suspendNext,syntaxElementsBinding,threadSuspensions
+hfds ANCHOR_SET_AFTER,ANCHOR_SET_ALL,ANCHOR_SET_BEFORE,SESSIONS,allBindings,alwaysHaltBreakpointsActive,breakpoints,callback,closed,currentSuspendedEventMap,debugger,exceptionBreakpointsActive,executionLifecycle,hasExpressionElement,hasRootElement,ignoreLanguageContextInitialization,includeInternal,locationBreakpointsActive,sessionId,sourceElements,sourceFilter,sources,stepping,strategyMap,suspendAll,suspendNext,suspensionFilterUnchanged,syntaxElementsBinding,threadSuspensions
hcls RootSteppingDepthNode,StableBoolean,SteppingNode,ThreadSuspension
CLSS public final com.oracle.truffle.api.debug.DebuggerTags
@@ -795,10 +828,39 @@ hfds ignoreLanguageContextInitialization,includeInternal,sourcePredicate
CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.Cached
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER])
+innr public abstract interface static !annotation Exclusive
+innr public abstract interface static !annotation Shared
intf java.lang.annotation.Annotation
+meth public abstract !hasdefault boolean allowUncached()
meth public abstract !hasdefault int dimensions()
+meth public abstract !hasdefault java.lang.String uncached()
+meth public abstract !hasdefault java.lang.String value()
+meth public abstract !hasdefault java.lang.String[] parameters()
+
+CLSS public abstract interface static !annotation com.oracle.truffle.api.dsl.Cached$Exclusive
+ outer com.oracle.truffle.api.dsl.Cached
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, TYPE])
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface static !annotation com.oracle.truffle.api.dsl.Cached$Shared
+ outer com.oracle.truffle.api.dsl.Cached
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER])
+intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
+CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.CachedContext
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER])
+intf java.lang.annotation.Annotation
+meth public abstract java.lang.Class extends com.oracle.truffle.api.TruffleLanguage> value()
+
+CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.CachedLanguage
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER])
+intf java.lang.annotation.Annotation
+
CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.CreateCast
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[METHOD])
@@ -821,6 +883,9 @@ CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.GenerateNo
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
intf java.lang.annotation.Annotation
+CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.GenerateUncached
+intf java.lang.annotation.Annotation
+
CLSS public abstract interface !annotation com.oracle.truffle.api.dsl.GeneratedBy
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
@@ -1018,16 +1083,12 @@ CLSS public abstract interface com.oracle.truffle.api.frame.FrameInstance
innr public final static !enum FrameAccess
meth public abstract boolean isVirtualFrame()
meth public abstract com.oracle.truffle.api.CallTarget getCallTarget()
+meth public abstract com.oracle.truffle.api.frame.Frame getFrame(com.oracle.truffle.api.frame.FrameInstance$FrameAccess)
meth public abstract com.oracle.truffle.api.nodes.Node getCallNode()
-meth public com.oracle.truffle.api.frame.Frame getFrame(com.oracle.truffle.api.frame.FrameInstance$FrameAccess)
-meth public com.oracle.truffle.api.frame.Frame getFrame(com.oracle.truffle.api.frame.FrameInstance$FrameAccess,boolean)
- anno 0 java.lang.Deprecated()
CLSS public final static !enum com.oracle.truffle.api.frame.FrameInstance$FrameAccess
outer com.oracle.truffle.api.frame.FrameInstance
fld public final static com.oracle.truffle.api.frame.FrameInstance$FrameAccess MATERIALIZE
-fld public final static com.oracle.truffle.api.frame.FrameInstance$FrameAccess NONE
- anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.frame.FrameInstance$FrameAccess READ_ONLY
fld public final static com.oracle.truffle.api.frame.FrameInstance$FrameAccess READ_WRITE
meth public static com.oracle.truffle.api.frame.FrameInstance$FrameAccess valueOf(java.lang.String)
@@ -1132,8 +1193,6 @@ meth public abstract void onLanguageContextInitialized(com.oracle.truffle.api.Tr
CLSS public com.oracle.truffle.api.instrumentation.EventBinding<%0 extends java.lang.Object>
meth public boolean isDisposed()
-meth public com.oracle.truffle.api.instrumentation.SourceSectionFilter getFilter()
- anno 0 java.lang.Deprecated()
meth public void dispose()
meth public {com.oracle.truffle.api.instrumentation.EventBinding%0} getElement()
supr java.lang.Object
@@ -1141,8 +1200,6 @@ hfds disposed,element,instrumenter
hcls Allocation,Source
CLSS public final com.oracle.truffle.api.instrumentation.EventContext
-meth public !varargs com.oracle.truffle.api.CallTarget parseInContext(com.oracle.truffle.api.source.Source,java.lang.String[]) throws java.io.IOException
- anno 0 java.lang.Deprecated()
meth public boolean hasTag(java.lang.Class extends com.oracle.truffle.api.instrumentation.Tag>)
meth public boolean isLanguageContextInitialized()
meth public com.oracle.truffle.api.instrumentation.ExecutionEventNode lookupExecutionEventNode(com.oracle.truffle.api.instrumentation.EventBinding extends com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory>)
@@ -1259,11 +1316,7 @@ meth public abstract com.oracle.truffle.api.instrumentation.ExecutionEventNode l
meth public abstract java.util.Set> queryTags(com.oracle.truffle.api.nodes.Node)
meth public abstract void visitLoadedSourceSections(com.oracle.truffle.api.instrumentation.SourceSectionFilter,com.oracle.truffle.api.instrumentation.LoadSourceSectionListener)
meth public final <%0 extends com.oracle.truffle.api.instrumentation.ExecutionEventListener> com.oracle.truffle.api.instrumentation.EventBinding<{%%0}> attachExecutionEventListener(com.oracle.truffle.api.instrumentation.SourceSectionFilter,{%%0})
-meth public final <%0 extends com.oracle.truffle.api.instrumentation.ExecutionEventListener> com.oracle.truffle.api.instrumentation.EventBinding<{%%0}> attachListener(com.oracle.truffle.api.instrumentation.SourceSectionFilter,{%%0})
- anno 0 java.lang.Deprecated()
meth public final <%0 extends com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> com.oracle.truffle.api.instrumentation.EventBinding<{%%0}> attachExecutionEventFactory(com.oracle.truffle.api.instrumentation.SourceSectionFilter,{%%0})
-meth public final <%0 extends com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> com.oracle.truffle.api.instrumentation.EventBinding<{%%0}> attachFactory(com.oracle.truffle.api.instrumentation.SourceSectionFilter,{%%0})
- anno 0 java.lang.Deprecated()
meth public final java.util.List querySourceSections(com.oracle.truffle.api.instrumentation.SourceSectionFilter)
supr java.lang.Object
@@ -1440,23 +1493,21 @@ meth public !varargs com.oracle.truffle.api.CallTarget parse(com.oracle.truffle.
meth public <%0 extends java.lang.Object> {%%0} lookup(com.oracle.truffle.api.InstrumentInfo,java.lang.Class<{%%0}>)
meth public <%0 extends java.lang.Object> {%%0} lookup(com.oracle.truffle.api.nodes.LanguageInfo,java.lang.Class<{%%0}>)
meth public boolean isEngineRoot(com.oracle.truffle.api.nodes.RootNode)
+meth public com.oracle.truffle.api.TruffleFile getTruffleFile(java.lang.String)
+meth public com.oracle.truffle.api.TruffleFile getTruffleFile(java.net.URI)
+meth public com.oracle.truffle.api.TruffleLogger getLogger(java.lang.Class>)
+meth public com.oracle.truffle.api.TruffleLogger getLogger(java.lang.String)
meth public com.oracle.truffle.api.instrumentation.Instrumenter getInstrumenter()
meth public com.oracle.truffle.api.nodes.ExecutableNode parseInline(com.oracle.truffle.api.source.Source,com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.frame.MaterializedFrame)
meth public com.oracle.truffle.api.nodes.LanguageInfo findLanguage(java.lang.Object)
meth public com.oracle.truffle.api.source.SourceSection findSourceLocation(com.oracle.truffle.api.nodes.LanguageInfo,java.lang.Object)
-meth public com.oracle.truffle.api.source.SourceSection findSourceLocation(com.oracle.truffle.api.nodes.Node,java.lang.Object)
- anno 0 java.lang.Deprecated()
meth public java.io.InputStream in()
meth public java.io.OutputStream err()
meth public java.io.OutputStream out()
meth public java.lang.Iterable findLocalScopes(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.frame.Frame)
meth public java.lang.Iterable findTopScopes(java.lang.String)
meth public java.lang.Object findMetaObject(com.oracle.truffle.api.nodes.LanguageInfo,java.lang.Object)
-meth public java.lang.Object findMetaObject(com.oracle.truffle.api.nodes.Node,java.lang.Object)
- anno 0 java.lang.Deprecated()
meth public java.lang.String toString(com.oracle.truffle.api.nodes.LanguageInfo,java.lang.Object)
-meth public java.lang.String toString(com.oracle.truffle.api.nodes.Node,java.lang.Object)
- anno 0 java.lang.Deprecated()
meth public java.util.Map getExportedSymbols()
meth public java.util.Map getInstruments()
meth public java.util.Map getLanguages()
@@ -1478,98 +1529,93 @@ meth public abstract !hasdefault java.lang.String id()
meth public abstract !hasdefault java.lang.String name()
meth public abstract !hasdefault java.lang.String version()
-CLSS public abstract interface !annotation com.oracle.truffle.api.interop.AcceptMessage
- anno 0 java.lang.Deprecated()
- anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=SOURCE)
- anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
-intf java.lang.annotation.Annotation
-meth public abstract java.lang.Class extends com.oracle.truffle.api.TruffleLanguage>> language()
-meth public abstract java.lang.Class> receiverType()
-meth public abstract java.lang.String value()
-
CLSS public final com.oracle.truffle.api.interop.ArityException
meth public int getActualArity()
meth public int getExpectedArity()
+meth public java.lang.String getMessage()
+meth public static com.oracle.truffle.api.interop.ArityException create(int,int)
meth public static java.lang.RuntimeException raise(int,int)
+ anno 0 java.lang.Deprecated()
supr com.oracle.truffle.api.interop.InteropException
hfds actualArity,expectedArity,serialVersionUID
CLSS public abstract interface !annotation com.oracle.truffle.api.interop.CanResolve
+ anno 0 java.lang.Deprecated()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=SOURCE)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
intf java.lang.annotation.Annotation
CLSS public final com.oracle.truffle.api.interop.ForeignAccess
+ anno 0 java.lang.Deprecated()
innr public abstract interface static Factory
-innr public abstract interface static Factory26
innr public abstract interface static StandardFactory
-meth public !varargs static java.lang.Object execute(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.frame.VirtualFrame,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object[])
- anno 0 java.lang.Deprecated()
meth public !varargs static java.lang.Object send(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object[]) throws com.oracle.truffle.api.interop.InteropException
+ anno 0 java.lang.Deprecated()
meth public !varargs static java.lang.Object sendExecute(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+ anno 0 java.lang.Deprecated()
meth public !varargs static java.lang.Object sendInvoke(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.String,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+ anno 0 java.lang.Deprecated()
meth public !varargs static java.lang.Object sendNew(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+ anno 0 java.lang.Deprecated()
meth public java.lang.String toString()
meth public static boolean sendHasKeys(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendHasSize(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendIsBoxed(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendIsExecutable(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendIsInstantiable(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendIsNull(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendIsPointer(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject)
+ anno 0 java.lang.Deprecated()
meth public static boolean sendRemove(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.ForeignAccess create(com.oracle.truffle.api.interop.ForeignAccess$Factory)
-meth public static com.oracle.truffle.api.interop.ForeignAccess create(com.oracle.truffle.api.interop.ForeignAccess$Factory26,com.oracle.truffle.api.nodes.RootNode)
anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.ForeignAccess create(com.oracle.truffle.api.interop.ForeignAccess$StandardFactory,com.oracle.truffle.api.nodes.RootNode)
anno 0 java.lang.Deprecated()
-meth public static com.oracle.truffle.api.interop.ForeignAccess create(java.lang.Class extends com.oracle.truffle.api.interop.TruffleObject>,com.oracle.truffle.api.interop.ForeignAccess$Factory26)
- anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.ForeignAccess create(java.lang.Class extends com.oracle.truffle.api.interop.TruffleObject>,com.oracle.truffle.api.interop.ForeignAccess$StandardFactory)
+ anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.ForeignAccess createAccess(com.oracle.truffle.api.interop.ForeignAccess$StandardFactory,java.util.function.Supplier extends com.oracle.truffle.api.nodes.RootNode>)
meth public static com.oracle.truffle.api.interop.TruffleObject getReceiver(com.oracle.truffle.api.frame.Frame)
+ anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.TruffleObject sendKeys(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.TruffleObject sendKeys(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,boolean) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static int sendKeyInfo(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object)
+ anno 0 java.lang.Deprecated()
meth public static java.lang.Object sendGetSize(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static java.lang.Object sendRead(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static java.lang.Object sendToNative(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static java.lang.Object sendUnbox(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
meth public static java.lang.Object sendWrite(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject,java.lang.Object,java.lang.Object) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+ anno 0 java.lang.Deprecated()
meth public static java.util.List getArguments(com.oracle.truffle.api.frame.Frame)
+ anno 0 java.lang.Deprecated()
meth public static long sendAsPointer(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.interop.TruffleObject) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+ anno 0 java.lang.Deprecated()
supr java.lang.Object
-hfds ACCESSOR,factory,initThread,languageCheckSupplier
-hcls DelegatingFactory,DelegatingFactory26,RootNodeSupplier
+hfds ACCESSOR,LEGACY_TO_LIBRARY_BRIDGE,factory,initThread,languageCheckSupplier
+hcls DelegatingFactory,RootNodeSupplier
CLSS public abstract interface static com.oracle.truffle.api.interop.ForeignAccess$Factory
outer com.oracle.truffle.api.interop.ForeignAccess
+ anno 0 java.lang.Deprecated()
meth public abstract boolean canHandle(com.oracle.truffle.api.interop.TruffleObject)
meth public abstract com.oracle.truffle.api.CallTarget accessMessage(com.oracle.truffle.api.interop.Message)
-CLSS public abstract interface static com.oracle.truffle.api.interop.ForeignAccess$Factory26
- outer com.oracle.truffle.api.interop.ForeignAccess
- anno 0 java.lang.Deprecated()
-meth public abstract com.oracle.truffle.api.CallTarget accessExecute(int)
-meth public abstract com.oracle.truffle.api.CallTarget accessGetSize()
-meth public abstract com.oracle.truffle.api.CallTarget accessHasSize()
-meth public abstract com.oracle.truffle.api.CallTarget accessInvoke(int)
-meth public abstract com.oracle.truffle.api.CallTarget accessIsBoxed()
-meth public abstract com.oracle.truffle.api.CallTarget accessIsExecutable()
-meth public abstract com.oracle.truffle.api.CallTarget accessIsNull()
-meth public abstract com.oracle.truffle.api.CallTarget accessKeyInfo()
-meth public abstract com.oracle.truffle.api.CallTarget accessKeys()
-meth public abstract com.oracle.truffle.api.CallTarget accessMessage(com.oracle.truffle.api.interop.Message)
-meth public abstract com.oracle.truffle.api.CallTarget accessNew(int)
-meth public abstract com.oracle.truffle.api.CallTarget accessRead()
-meth public abstract com.oracle.truffle.api.CallTarget accessUnbox()
-meth public abstract com.oracle.truffle.api.CallTarget accessWrite()
-meth public com.oracle.truffle.api.CallTarget accessAsPointer()
-meth public com.oracle.truffle.api.CallTarget accessIsPointer()
-meth public com.oracle.truffle.api.CallTarget accessToNative()
-
CLSS public abstract interface static com.oracle.truffle.api.interop.ForeignAccess$StandardFactory
outer com.oracle.truffle.api.interop.ForeignAccess
+ anno 0 java.lang.Deprecated()
meth public com.oracle.truffle.api.CallTarget accessAsPointer()
meth public com.oracle.truffle.api.CallTarget accessExecute(int)
meth public com.oracle.truffle.api.CallTarget accessGetSize()
@@ -1593,71 +1639,166 @@ meth public com.oracle.truffle.api.CallTarget accessWrite()
CLSS public abstract com.oracle.truffle.api.interop.InteropException
meth public final java.lang.RuntimeException raise()
+ anno 0 java.lang.Deprecated()
supr java.lang.Exception
hfds serialVersionUID
+CLSS public abstract com.oracle.truffle.api.interop.InteropLibrary
+cons protected init()
+meth protected final boolean assertAdopted()
+meth public !varargs java.lang.Object execute(java.lang.Object,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+meth public !varargs java.lang.Object instantiate(java.lang.Object,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+meth public !varargs java.lang.Object invokeMember(java.lang.Object,java.lang.String,java.lang.Object[]) throws com.oracle.truffle.api.interop.ArityException,com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+meth public boolean asBoolean(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public boolean fitsInByte(java.lang.Object)
+meth public boolean fitsInDouble(java.lang.Object)
+meth public boolean fitsInFloat(java.lang.Object)
+meth public boolean fitsInInt(java.lang.Object)
+meth public boolean fitsInLong(java.lang.Object)
+meth public boolean fitsInShort(java.lang.Object)
+meth public boolean hasArrayElements(java.lang.Object)
+meth public boolean hasMemberReadSideEffects(java.lang.Object,java.lang.String)
+meth public boolean hasMemberWriteSideEffects(java.lang.Object,java.lang.String)
+meth public boolean hasMembers(java.lang.Object)
+meth public boolean isArrayElementInsertable(java.lang.Object,long)
+meth public boolean isArrayElementModifiable(java.lang.Object,long)
+meth public boolean isArrayElementReadable(java.lang.Object,long)
+meth public boolean isArrayElementRemovable(java.lang.Object,long)
+meth public boolean isBoolean(java.lang.Object)
+meth public boolean isExecutable(java.lang.Object)
+meth public boolean isInstantiable(java.lang.Object)
+meth public boolean isMemberInsertable(java.lang.Object,java.lang.String)
+meth public boolean isMemberInternal(java.lang.Object,java.lang.String)
+meth public boolean isMemberInvocable(java.lang.Object,java.lang.String)
+meth public boolean isMemberModifiable(java.lang.Object,java.lang.String)
+meth public boolean isMemberReadable(java.lang.Object,java.lang.String)
+meth public boolean isMemberRemovable(java.lang.Object,java.lang.String)
+meth public boolean isNull(java.lang.Object)
+meth public boolean isNumber(java.lang.Object)
+meth public boolean isPointer(java.lang.Object)
+meth public boolean isString(java.lang.Object)
+meth public byte asByte(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public double asDouble(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public final boolean isArrayElementExisting(java.lang.Object,long)
+meth public final boolean isArrayElementWritable(java.lang.Object,long)
+meth public final boolean isMemberExisting(java.lang.Object,java.lang.String)
+meth public final boolean isMemberWritable(java.lang.Object,java.lang.String)
+meth public final java.lang.Object getMembers(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public float asFloat(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public int asInt(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public java.lang.Object getMembers(java.lang.Object,boolean) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public java.lang.Object readArrayElement(java.lang.Object,long) throws com.oracle.truffle.api.interop.InvalidArrayIndexException,com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public java.lang.Object readMember(java.lang.Object,java.lang.String) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public java.lang.String asString(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public long asLong(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public long asPointer(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public long getArraySize(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public short asShort(java.lang.Object) throws com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public static com.oracle.truffle.api.library.LibraryFactory getFactory()
+meth public void removeArrayElement(java.lang.Object,long) throws com.oracle.truffle.api.interop.InvalidArrayIndexException,com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public void removeMember(java.lang.Object,java.lang.String) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException
+meth public void toNative(java.lang.Object)
+meth public void writeArrayElement(java.lang.Object,long,java.lang.Object) throws com.oracle.truffle.api.interop.InvalidArrayIndexException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+meth public void writeMember(java.lang.Object,java.lang.String,java.lang.Object) throws com.oracle.truffle.api.interop.UnknownIdentifierException,com.oracle.truffle.api.interop.UnsupportedMessageException,com.oracle.truffle.api.interop.UnsupportedTypeException
+supr com.oracle.truffle.api.library.Library
+hfds FACTORY
+hcls Asserts
+
+CLSS public final com.oracle.truffle.api.interop.InvalidArrayIndexException
+meth public java.lang.String getMessage()
+meth public long getInvalidIndex()
+meth public static com.oracle.truffle.api.interop.InvalidArrayIndexException create(long)
+supr com.oracle.truffle.api.interop.InteropException
+hfds invalidIndex,serialVersionUID
+
CLSS public final com.oracle.truffle.api.interop.KeyInfo
+ anno 0 java.lang.Deprecated()
fld public final static int INSERTABLE = 64
+ anno 0 java.lang.Deprecated()
fld public final static int INTERNAL = 16
+ anno 0 java.lang.Deprecated()
fld public final static int INVOCABLE = 8
+ anno 0 java.lang.Deprecated()
fld public final static int MODIFIABLE = 4
+ anno 0 java.lang.Deprecated()
fld public final static int NONE = 0
+ anno 0 java.lang.Deprecated()
fld public final static int READABLE = 2
+ anno 0 java.lang.Deprecated()
fld public final static int READ_SIDE_EFFECTS = 128
+ anno 0 java.lang.Deprecated()
fld public final static int REMOVABLE = 32
+ anno 0 java.lang.Deprecated()
fld public final static int WRITE_SIDE_EFFECTS = 256
-innr public final Builder
+ anno 0 java.lang.Deprecated()
meth public static boolean hasReadSideEffects(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean hasWriteSideEffects(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isExisting(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isInsertable(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isInternal(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isInvocable(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isModifiable(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isReadable(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isRemovable(int)
+ anno 0 java.lang.Deprecated()
meth public static boolean isWritable(int)
-meth public static com.oracle.truffle.api.interop.KeyInfo$Builder newBuilder()
anno 0 java.lang.Deprecated()
supr java.lang.Object
hfds EXISTING,WRITABLE
-CLSS public final com.oracle.truffle.api.interop.KeyInfo$Builder
- outer com.oracle.truffle.api.interop.KeyInfo
- anno 0 java.lang.Deprecated()
-meth public com.oracle.truffle.api.interop.KeyInfo$Builder setInternal(boolean)
-meth public com.oracle.truffle.api.interop.KeyInfo$Builder setInvocable(boolean)
-meth public com.oracle.truffle.api.interop.KeyInfo$Builder setReadable(boolean)
-meth public com.oracle.truffle.api.interop.KeyInfo$Builder setRemovable(boolean)
-meth public com.oracle.truffle.api.interop.KeyInfo$Builder setWritable(boolean)
-meth public int build()
-supr java.lang.Object
-hfds infoBits
-
CLSS public abstract com.oracle.truffle.api.interop.Message
+ anno 0 java.lang.Deprecated()
cons protected init()
fld public final static com.oracle.truffle.api.interop.Message AS_POINTER
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message EXECUTE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message GET_SIZE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message HAS_KEYS
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message HAS_SIZE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message INVOKE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message IS_BOXED
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message IS_EXECUTABLE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message IS_INSTANTIABLE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message IS_NULL
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message IS_POINTER
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message KEYS
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message KEY_INFO
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message NEW
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message READ
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message REMOVE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message TO_NATIVE
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message UNBOX
+ anno 0 java.lang.Deprecated()
fld public final static com.oracle.truffle.api.interop.Message WRITE
+ anno 0 java.lang.Deprecated()
meth public abstract boolean equals(java.lang.Object)
meth public abstract int hashCode()
meth public final com.oracle.truffle.api.nodes.Node createNode()
+ anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.Message createExecute(int)
anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.Message createInvoke(int)
@@ -1666,10 +1807,12 @@ meth public static com.oracle.truffle.api.interop.Message createNew(int)
anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.interop.Message valueOf(java.lang.String)
meth public static java.lang.String toString(com.oracle.truffle.api.interop.Message)
+ anno 0 java.lang.Deprecated()
supr java.lang.Object
-hfds CLASS_TO_MESSAGE
+hfds CLASS_TO_MESSAGE,uncached
CLSS public abstract interface !annotation com.oracle.truffle.api.interop.MessageResolution
+ anno 0 java.lang.Deprecated()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=SOURCE)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
intf java.lang.annotation.Annotation
@@ -1678,33 +1821,85 @@ meth public abstract !hasdefault java.lang.Class> language()
meth public abstract java.lang.Class> receiverType()
CLSS public abstract interface !annotation com.oracle.truffle.api.interop.Resolve
+ anno 0 java.lang.Deprecated()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=SOURCE)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
intf java.lang.annotation.Annotation
meth public abstract java.lang.String message()
CLSS public abstract interface com.oracle.truffle.api.interop.TruffleObject
-meth public abstract com.oracle.truffle.api.interop.ForeignAccess getForeignAccess()
+meth public com.oracle.truffle.api.interop.ForeignAccess getForeignAccess()
+ anno 0 java.lang.Deprecated()
CLSS public final com.oracle.truffle.api.interop.UnknownIdentifierException
+meth public java.lang.String getMessage()
meth public java.lang.String getUnknownIdentifier()
+meth public static com.oracle.truffle.api.interop.UnknownIdentifierException create(java.lang.String)
meth public static java.lang.RuntimeException raise(java.lang.String)
+ anno 0 java.lang.Deprecated()
supr com.oracle.truffle.api.interop.InteropException
hfds serialVersionUID,unknownIdentifier
CLSS public final com.oracle.truffle.api.interop.UnsupportedMessageException
meth public com.oracle.truffle.api.interop.Message getUnsupportedMessage()
+ anno 0 java.lang.Deprecated()
+meth public java.lang.String getMessage()
+meth public static com.oracle.truffle.api.interop.UnsupportedMessageException create()
meth public static java.lang.RuntimeException raise(com.oracle.truffle.api.interop.Message)
+ anno 0 java.lang.Deprecated()
supr com.oracle.truffle.api.interop.InteropException
-hfds message,serialVersionUID
+hfds LEGACY,message,serialVersionUID
CLSS public final com.oracle.truffle.api.interop.UnsupportedTypeException
meth public java.lang.Object[] getSuppliedValues()
+meth public static com.oracle.truffle.api.interop.UnsupportedTypeException create(java.lang.Object[])
+meth public static com.oracle.truffle.api.interop.UnsupportedTypeException create(java.lang.Object[],java.lang.String)
meth public static java.lang.RuntimeException raise(java.lang.Exception,java.lang.Object[])
+ anno 0 java.lang.Deprecated()
meth public static java.lang.RuntimeException raise(java.lang.Object[])
+ anno 0 java.lang.Deprecated()
supr com.oracle.truffle.api.interop.InteropException
hfds serialVersionUID,suppliedValues
+CLSS public abstract interface !annotation com.oracle.truffle.api.library.ExportLibrary
+ anno 0 java.lang.annotation.Repeatable(java.lang.Class extends java.lang.annotation.Annotation> value=class com.oracle.truffle.api.library.ExportLibrary$Repeat)
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+innr public abstract interface static !annotation Repeat
+intf java.lang.annotation.Annotation
+meth public abstract !hasdefault java.lang.Class> receiverType()
+meth public abstract java.lang.Class extends com.oracle.truffle.api.library.Library> value()
+
+CLSS public abstract interface !annotation com.oracle.truffle.api.library.GenerateLibrary
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+innr public abstract interface static !annotation Abstract
+innr public abstract interface static !annotation DefaultExport
+intf java.lang.annotation.Annotation
+meth public abstract !hasdefault java.lang.Class extends com.oracle.truffle.api.library.Library> assertions()
+meth public abstract !hasdefault java.lang.Class> receiverType()
+
+CLSS public abstract interface static !annotation com.oracle.truffle.api.library.GenerateLibrary$DefaultExport
+ outer com.oracle.truffle.api.library.GenerateLibrary
+ anno 0 java.lang.annotation.Repeatable(java.lang.Class extends java.lang.annotation.Annotation> value=class com.oracle.truffle.api.library.GenerateLibrary$DefaultExport$Repeat)
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+innr public abstract interface static !annotation Repeat
+intf java.lang.annotation.Annotation
+meth public abstract java.lang.Class> value()
+
+CLSS public abstract interface static !annotation com.oracle.truffle.api.library.GenerateLibrary$DefaultExport$Repeat
+ outer com.oracle.truffle.api.library.GenerateLibrary$DefaultExport
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=CLASS)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+intf java.lang.annotation.Annotation
+meth public abstract com.oracle.truffle.api.library.GenerateLibrary$DefaultExport[] value()
+
+CLSS public abstract com.oracle.truffle.api.library.Library
+cons protected init()
+meth public abstract boolean accepts(java.lang.Object)
+supr com.oracle.truffle.api.nodes.Node
+
CLSS public com.oracle.truffle.api.nodes.ControlFlowException
cons public init()
meth public final java.lang.Throwable fillInStackTrace()
@@ -1714,6 +1909,7 @@ hfds serialVersionUID
CLSS public abstract com.oracle.truffle.api.nodes.DirectCallNode
cons protected init(com.oracle.truffle.api.CallTarget)
fld protected final com.oracle.truffle.api.CallTarget callTarget
+meth public abstract !varargs java.lang.Object call(java.lang.Object[])
meth public abstract boolean cloneCallTarget()
meth public abstract boolean isCallTargetCloningAllowed()
meth public abstract boolean isInlinable()
@@ -1724,29 +1920,25 @@ meth public com.oracle.truffle.api.CallTarget getCallTarget()
meth public com.oracle.truffle.api.CallTarget getCurrentCallTarget()
meth public final boolean isCallTargetCloned()
meth public final com.oracle.truffle.api.nodes.RootNode getCurrentRootNode()
-meth public java.lang.Object call(com.oracle.truffle.api.frame.VirtualFrame,java.lang.Object[])
- anno 0 java.lang.Deprecated()
-meth public java.lang.Object call(java.lang.Object[])
meth public java.lang.String toString()
meth public static com.oracle.truffle.api.nodes.DirectCallNode create(com.oracle.truffle.api.CallTarget)
supr com.oracle.truffle.api.nodes.Node
-hfds LEGACY_FRAME,legacyFrame
CLSS public abstract com.oracle.truffle.api.nodes.ExecutableNode
cons protected init(com.oracle.truffle.api.TruffleLanguage>)
meth public abstract java.lang.Object execute(com.oracle.truffle.api.frame.VirtualFrame)
meth public final <%0 extends com.oracle.truffle.api.TruffleLanguage> {%%0} getLanguage(java.lang.Class<{%%0}>)
+ anno 0 java.lang.Deprecated()
meth public final com.oracle.truffle.api.nodes.LanguageInfo getLanguageInfo()
supr com.oracle.truffle.api.nodes.Node
-hfds language
+hfds GENERIC,language,referenceCache,sourceVM
+hcls ReferenceCache
CLSS public abstract interface !annotation com.oracle.truffle.api.nodes.ExplodeLoop
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[METHOD])
innr public final static !enum LoopExplosionKind
intf java.lang.annotation.Annotation
-meth public abstract !hasdefault boolean merge()
- anno 0 java.lang.Deprecated()
meth public abstract !hasdefault com.oracle.truffle.api.nodes.ExplodeLoop$LoopExplosionKind kind()
CLSS public final static !enum com.oracle.truffle.api.nodes.ExplodeLoop$LoopExplosionKind
@@ -1816,12 +2008,11 @@ intf java.lang.annotation.Annotation
CLSS public abstract com.oracle.truffle.api.nodes.IndirectCallNode
cons protected init()
-meth public java.lang.Object call(com.oracle.truffle.api.CallTarget,java.lang.Object[])
-meth public java.lang.Object call(com.oracle.truffle.api.frame.VirtualFrame,com.oracle.truffle.api.CallTarget,java.lang.Object[])
- anno 0 java.lang.Deprecated()
+meth public abstract !varargs java.lang.Object call(com.oracle.truffle.api.CallTarget,java.lang.Object[])
meth public static com.oracle.truffle.api.nodes.IndirectCallNode create()
+meth public static com.oracle.truffle.api.nodes.IndirectCallNode getUncached()
supr com.oracle.truffle.api.nodes.Node
-hfds dummyFrame
+hfds CURRENT_CALL_NODE,UNCACHED
CLSS public final com.oracle.truffle.api.nodes.InvalidAssumptionException
cons public init()
@@ -1854,14 +2045,15 @@ intf com.oracle.truffle.api.nodes.NodeInterface
intf java.lang.Cloneable
meth protected boolean isTaggedWith(java.lang.Class>)
anno 0 java.lang.Deprecated()
+meth protected final <%0 extends com.oracle.truffle.api.TruffleLanguage> com.oracle.truffle.api.TruffleLanguage$LanguageReference<{%%0}> lookupLanguageReference(java.lang.Class<{%%0}>)
meth protected final <%0 extends com.oracle.truffle.api.nodes.Node> {%%0} insert({%%0})
meth protected final <%0 extends com.oracle.truffle.api.nodes.Node> {%%0}[] insert({%%0}[])
-meth protected final java.lang.Object getAtomicLock()
- anno 0 java.lang.Deprecated()
+meth protected final <%0 extends java.lang.Object, %1 extends com.oracle.truffle.api.TruffleLanguage<{%%0}>> com.oracle.truffle.api.TruffleLanguage$ContextReference<{%%0}> lookupContextReference(java.lang.Class<{%%1}>)
meth protected final java.util.concurrent.locks.Lock getLock()
meth protected final void notifyInserted(com.oracle.truffle.api.nodes.Node)
meth protected final void reportPolymorphicSpecialize()
meth protected void onReplace(com.oracle.truffle.api.nodes.Node,java.lang.CharSequence)
+meth public boolean isAdoptable()
meth public com.oracle.truffle.api.nodes.Node copy()
meth public com.oracle.truffle.api.nodes.Node deepCopy()
meth public com.oracle.truffle.api.nodes.NodeCost getCost()
@@ -1878,12 +2070,10 @@ meth public final void accept(com.oracle.truffle.api.nodes.NodeVisitor)
meth public final void adoptChildren()
meth public final void atomic(java.lang.Runnable)
meth public java.lang.String getDescription()
-meth public java.lang.String getLanguage()
- anno 0 java.lang.Deprecated()
meth public java.lang.String toString()
meth public java.util.Map getDebugProperties()
supr java.lang.Object
-hfds ACCESSOR,GIL,GIL_LOCK,parent
+hfds ACCESSOR,GIL_LOCK,UNCACHED_CONTEXT_REFERENCES,UNCACHED_LANGUAGE_REFERENCES,parent
hcls AccessorNodes
CLSS public abstract interface static !annotation com.oracle.truffle.api.nodes.Node$Child
@@ -1941,6 +2131,7 @@ fld public final static com.oracle.truffle.api.nodes.NodeCost NONE
fld public final static com.oracle.truffle.api.nodes.NodeCost POLYMORPHIC
fld public final static com.oracle.truffle.api.nodes.NodeCost UNINITIALIZED
meth public boolean isTrivial()
+meth public static com.oracle.truffle.api.nodes.NodeCost fromCount(int)
meth public static com.oracle.truffle.api.nodes.NodeCost valueOf(java.lang.String)
meth public static com.oracle.truffle.api.nodes.NodeCost[] values()
supr java.lang.Enum
@@ -2006,8 +2197,6 @@ meth public abstract !hasdefault java.lang.String shortName()
CLSS public abstract interface com.oracle.truffle.api.nodes.NodeInterface
CLSS public final com.oracle.truffle.api.nodes.NodeUtil
-cons public init()
- anno 0 java.lang.Deprecated()
innr public abstract interface static NodeCountFilter
meth public static <%0 extends com.oracle.truffle.api.nodes.Node> {%%0} cloneNode({%%0})
meth public static <%0 extends com.oracle.truffle.api.nodes.Node> {%%0} nonAtomicReplace(com.oracle.truffle.api.nodes.Node,{%%0},java.lang.CharSequence)
@@ -2021,7 +2210,9 @@ meth public static boolean forEachChild(com.oracle.truffle.api.nodes.Node,com.or
meth public static boolean isReplacementSafe(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node)
meth public static boolean replaceChild(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node)
meth public static boolean verify(com.oracle.truffle.api.nodes.Node)
+meth public static com.oracle.truffle.api.nodes.Node getCurrentEncapsulatingNode()
meth public static com.oracle.truffle.api.nodes.Node getNthParent(com.oracle.truffle.api.nodes.Node,int)
+meth public static com.oracle.truffle.api.nodes.Node pushEncapsulatingNode(com.oracle.truffle.api.nodes.Node)
meth public static com.oracle.truffle.api.nodes.NodeFieldAccessor findChildField(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node)
anno 0 java.lang.Deprecated()
meth public static int countNodes(com.oracle.truffle.api.nodes.Node)
@@ -2033,12 +2224,14 @@ meth public static java.lang.String printTreeToString(com.oracle.truffle.api.nod
meth public static java.util.Iterator makeRecursiveIterator(com.oracle.truffle.api.nodes.Node)
meth public static java.util.List collectNodes(com.oracle.truffle.api.nodes.Node,com.oracle.truffle.api.nodes.Node)
meth public static java.util.List findNodeChildren(com.oracle.truffle.api.nodes.Node)
+meth public static void popEncapsulatingNode(com.oracle.truffle.api.nodes.Node)
meth public static void printCompactTree(java.io.OutputStream,com.oracle.truffle.api.nodes.Node)
meth public static void printSourceAttributionTree(java.io.OutputStream,com.oracle.truffle.api.nodes.Node)
meth public static void printSourceAttributionTree(java.io.PrintWriter,com.oracle.truffle.api.nodes.Node)
meth public static void printTree(java.io.OutputStream,com.oracle.truffle.api.nodes.Node)
meth public static void printTree(java.io.PrintWriter,com.oracle.truffle.api.nodes.Node)
supr java.lang.Object
+hfds CURRENT_ENCAPSULATING_NODE
hcls NodeCounter,RecursiveNodeIterator
CLSS public abstract interface static com.oracle.truffle.api.nodes.NodeUtil$NodeCountFilter
@@ -2059,25 +2252,21 @@ cons protected init(com.oracle.truffle.api.TruffleLanguage>,com.oracle.truffle
meth protected boolean isCloneUninitializedSupported()
meth protected boolean isInstrumentable()
meth protected com.oracle.truffle.api.nodes.RootNode cloneUninitialized()
+meth protected final void setCallTarget(com.oracle.truffle.api.RootCallTarget)
meth public abstract java.lang.Object execute(com.oracle.truffle.api.frame.VirtualFrame)
meth public boolean isCaptureFramesForTrace()
meth public boolean isCloningAllowed()
meth public boolean isInternal()
meth public com.oracle.truffle.api.CompilerOptions getCompilerOptions()
-meth public com.oracle.truffle.api.ExecutionContext getExecutionContext()
- anno 0 java.lang.Deprecated()
meth public com.oracle.truffle.api.nodes.Node copy()
meth public final <%0 extends java.lang.Object, %1 extends com.oracle.truffle.api.TruffleLanguage<{%%0}>> {%%0} getCurrentContext(java.lang.Class<{%%1}>)
+ anno 0 java.lang.Deprecated()
meth public final com.oracle.truffle.api.RootCallTarget getCallTarget()
meth public final com.oracle.truffle.api.frame.FrameDescriptor getFrameDescriptor()
-meth public final void reportLoopCount(int)
- anno 0 java.lang.Deprecated()
-meth public final void setCallTarget(com.oracle.truffle.api.RootCallTarget)
- anno 0 java.lang.Deprecated()
meth public java.lang.String getName()
meth public static com.oracle.truffle.api.nodes.RootNode createConstantNode(java.lang.Object)
supr com.oracle.truffle.api.nodes.ExecutableNode
-hfds callTarget,frameDescriptor,instrumentationBits,lock,sourceVM
+hfds callTarget,frameDescriptor,instrumentationBits,lock
hcls Constant
CLSS public com.oracle.truffle.api.nodes.SlowPathException
@@ -2086,6 +2275,7 @@ cons public init(java.lang.String)
cons public init(java.lang.String,java.lang.Throwable)
cons public init(java.lang.Throwable)
meth public java.lang.Throwable fillInStackTrace()
+ anno 0 java.lang.Deprecated()
supr java.lang.Exception
hfds serialVersionUID
@@ -2117,7 +2307,6 @@ CLSS public abstract com.oracle.truffle.api.object.DynamicObject
cons protected init()
anno 0 java.lang.Deprecated()
cons protected init(com.oracle.truffle.api.object.Shape)
-intf com.oracle.truffle.api.TypedObject
intf com.oracle.truffle.api.interop.TruffleObject
meth public abstract boolean delete(java.lang.Object)
meth public abstract boolean isEmpty()
@@ -2272,7 +2461,9 @@ CLSS public com.oracle.truffle.api.object.ObjectType
cons public init()
meth public boolean equals(com.oracle.truffle.api.object.DynamicObject,java.lang.Object)
meth public com.oracle.truffle.api.interop.ForeignAccess getForeignAccessFactory(com.oracle.truffle.api.object.DynamicObject)
+ anno 0 java.lang.Deprecated()
meth public int hashCode(com.oracle.truffle.api.object.DynamicObject)
+meth public java.lang.Class> dispatch()
meth public java.lang.String toString(com.oracle.truffle.api.object.DynamicObject)
supr java.lang.Object
@@ -2393,16 +2584,16 @@ CLSS public abstract interface !annotation com.oracle.truffle.api.object.dsl.Vol
intf java.lang.annotation.Annotation
CLSS public abstract com.oracle.truffle.api.profiles.BranchProfile
-meth public abstract boolean isVisited()
- anno 0 java.lang.Deprecated()
meth public abstract void enter()
meth public static com.oracle.truffle.api.profiles.BranchProfile create()
+meth public static com.oracle.truffle.api.profiles.BranchProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
CLSS public abstract com.oracle.truffle.api.profiles.ByteValueProfile
meth public abstract byte profile(byte)
meth public static com.oracle.truffle.api.profiles.ByteValueProfile createIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.ByteValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
@@ -2410,30 +2601,35 @@ CLSS public abstract com.oracle.truffle.api.profiles.ConditionProfile
meth public abstract boolean profile(boolean)
meth public static com.oracle.truffle.api.profiles.ConditionProfile createBinaryProfile()
meth public static com.oracle.truffle.api.profiles.ConditionProfile createCountingProfile()
+meth public static com.oracle.truffle.api.profiles.ConditionProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Binary,Counting,Disabled
CLSS public abstract com.oracle.truffle.api.profiles.DoubleValueProfile
meth public abstract double profile(double)
meth public static com.oracle.truffle.api.profiles.DoubleValueProfile createRawIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.DoubleValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
CLSS public abstract com.oracle.truffle.api.profiles.FloatValueProfile
meth public abstract float profile(float)
meth public static com.oracle.truffle.api.profiles.FloatValueProfile createRawIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.FloatValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
CLSS public abstract com.oracle.truffle.api.profiles.IntValueProfile
meth public abstract int profile(int)
meth public static com.oracle.truffle.api.profiles.IntValueProfile createIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.IntValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
CLSS public abstract com.oracle.truffle.api.profiles.LongValueProfile
meth public abstract long profile(long)
meth public static com.oracle.truffle.api.profiles.LongValueProfile createIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.LongValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Enabled
@@ -2442,6 +2638,7 @@ meth public abstract boolean inject(boolean)
meth public abstract boolean profile(boolean)
meth public abstract void profileCounted(long)
meth public static com.oracle.truffle.api.profiles.LoopConditionProfile createCountingProfile()
+meth public static com.oracle.truffle.api.profiles.LoopConditionProfile getUncached()
supr com.oracle.truffle.api.profiles.ConditionProfile
hcls Disabled,Enabled
@@ -2455,11 +2652,8 @@ meth public abstract float profile(float)
meth public abstract int profile(int)
meth public abstract long profile(long)
meth public abstract short profile(short)
-meth public static boolean exactCompare(double,double)
- anno 0 java.lang.Deprecated()
-meth public static boolean exactCompare(float,float)
- anno 0 java.lang.Deprecated()
meth public static com.oracle.truffle.api.profiles.PrimitiveValueProfile createEqualityProfile()
+meth public static com.oracle.truffle.api.profiles.PrimitiveValueProfile getUncached()
supr com.oracle.truffle.api.profiles.ValueProfile
hcls Disabled,Enabled
@@ -2471,6 +2665,7 @@ meth public abstract <%0 extends java.lang.Object> {%%0} profile({%%0})
meth public static com.oracle.truffle.api.profiles.ValueProfile createClassProfile()
meth public static com.oracle.truffle.api.profiles.ValueProfile createEqualityProfile()
meth public static com.oracle.truffle.api.profiles.ValueProfile createIdentityProfile()
+meth public static com.oracle.truffle.api.profiles.ValueProfile getUncached()
supr com.oracle.truffle.api.profiles.Profile
hcls Disabled,Equality,ExactClass,Identity
@@ -2543,6 +2738,7 @@ meth public static java.lang.String findMimeType(com.oracle.truffle.api.TruffleF
meth public static java.lang.String findMimeType(java.net.URL) throws java.io.IOException
supr java.lang.Object
hfds BUFFER_SIZE,BYTE_SEQUENCE_CLASS,CONTENT_UNSET,EMPTY,MAX_BUFFER_SIZE,NO_FASTPATH_SUBSOURCE_CREATION_MESSAGE,S,SOURCES,UNKNOWN_MIME_TYPE,URI_SCHEME,computedURI,polyglotSource,textMap
+hcls FileSystemContextSupplier
CLSS public com.oracle.truffle.api.source.Source$Builder<%0 extends java.lang.Exception, %1 extends java.lang.Exception, %2 extends java.lang.Exception>
outer com.oracle.truffle.api.source.Source
@@ -2574,6 +2770,7 @@ CLSS public final com.oracle.truffle.api.source.Source$LiteralBuilder
outer com.oracle.truffle.api.source.Source
meth public com.oracle.truffle.api.source.Source build()
meth public com.oracle.truffle.api.source.Source$LiteralBuilder cached(boolean)
+meth public com.oracle.truffle.api.source.Source$LiteralBuilder encoding(java.nio.charset.Charset)
meth public com.oracle.truffle.api.source.Source$LiteralBuilder interactive(boolean)
meth public com.oracle.truffle.api.source.Source$LiteralBuilder internal(boolean)
meth public com.oracle.truffle.api.source.Source$LiteralBuilder mimeType(java.lang.String)
@@ -2587,13 +2784,14 @@ meth public com.oracle.truffle.api.source.Source build() throws java.io.IOExcept
meth public com.oracle.truffle.api.source.Source$LiteralBuilder content(java.lang.CharSequence)
meth public com.oracle.truffle.api.source.Source$LiteralBuilder content(org.graalvm.polyglot.io.ByteSequence)
meth public com.oracle.truffle.api.source.Source$SourceBuilder cached(boolean)
+meth public com.oracle.truffle.api.source.Source$SourceBuilder encoding(java.nio.charset.Charset)
meth public com.oracle.truffle.api.source.Source$SourceBuilder interactive(boolean)
meth public com.oracle.truffle.api.source.Source$SourceBuilder internal(boolean)
meth public com.oracle.truffle.api.source.Source$SourceBuilder mimeType(java.lang.String)
meth public com.oracle.truffle.api.source.Source$SourceBuilder name(java.lang.String)
meth public com.oracle.truffle.api.source.Source$SourceBuilder uri(java.net.URI)
supr java.lang.Object
-hfds cached,content,interactive,internal,language,mimeType,name,origin,uri
+hfds cached,content,embedderFileSystemContext,fileEncoding,interactive,internal,language,mimeType,name,origin,uri
CLSS public abstract com.oracle.truffle.api.source.SourceSection
meth public abstract boolean equals(java.lang.Object)
@@ -2641,9 +2839,7 @@ meth public void invalidate(java.lang.String)
supr java.lang.Object
hfds ASSUMPTION_UPDATER,assumption,name
-CLSS public com.oracle.truffle.api.utilities.JSONHelper
-cons public init()
- anno 0 java.lang.Deprecated()
+CLSS public final com.oracle.truffle.api.utilities.JSONHelper
innr public abstract static JSONStringBuilder
innr public final static JSONArrayBuilder
innr public final static JSONObjectBuilder
@@ -2685,8 +2881,6 @@ hfds contents
CLSS public abstract static com.oracle.truffle.api.utilities.JSONHelper$JSONStringBuilder
outer com.oracle.truffle.api.utilities.JSONHelper
-cons protected init()
- anno 0 java.lang.Deprecated()
meth protected abstract void appendTo(java.lang.StringBuilder)
meth protected static void appendValue(java.lang.StringBuilder,java.lang.Object)
meth public final java.lang.String toString()
@@ -2766,11 +2960,6 @@ CLSS public abstract interface !annotation java.lang.FunctionalInterface
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
intf java.lang.annotation.Annotation
-CLSS public abstract interface java.lang.Iterable<%0 extends java.lang.Object>
-meth public abstract java.util.Iterator<{java.lang.Iterable%0}> iterator()
-meth public java.util.Spliterator<{java.lang.Iterable%0}> spliterator()
-meth public void forEach(java.util.function.Consumer super {java.lang.Iterable%0}>)
-
CLSS public java.lang.Object
cons public init()
meth protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
From d2bb1599b5e933d1db4f3bdcecc265aecfe96852 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Thu, 23 May 2019 16:02:25 +0200
Subject: [PATCH 11/27] Adjusting to GraalVM 19.0.0
---
.../libs/graalsdk/impl/GraalContext.java | 14 +++
.../graalsdk/impl/GraalEngineFactory.java | 2 +-
.../libs/graalsdk/JavaScriptEnginesTest.java | 47 ++++++--
nbbuild/travis/scripting.sh | 4 +-
.../org/netbeans/api/scripting/Scripting.java | 108 +++++++++++++++++-
5 files changed, 162 insertions(+), 13 deletions(-)
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
index 296c1cbbed07..1d48c3f33f5f 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
@@ -29,6 +29,8 @@
import javax.script.ScriptContext;
import javax.script.SimpleBindings;
import org.graalvm.polyglot.Context;
+import org.graalvm.polyglot.HostAccess;
+import org.graalvm.polyglot.PolyglotAccess;
import org.openide.util.io.ReaderInputStream;
final class GraalContext implements ScriptContext {
@@ -39,6 +41,14 @@ final class GraalContext implements ScriptContext {
private SimpleBindings bindings;
private boolean allowAllAccess;
+ private static final HostAccess NON_OBJECT_PUBLIC = HostAccess.newBuilder().
+ allowPublicAccess(true).
+ allowArrayAccess(true).
+ allowListAccess(true).
+ allowAllImplementations(true).
+ denyAccess(Object.class, false).
+ build();
+
synchronized final Context ctx() {
if (ctx == null) {
final Context.Builder b = Context.newBuilder();
@@ -51,8 +61,12 @@ synchronized final Context ctx() {
throw raise(RuntimeException.class, ex);
}
}
+ b.allowPolyglotAccess(PolyglotAccess.ALL);
if (allowAllAccess) {
+ b.allowHostAccess(HostAccess.ALL);
b.allowAllAccess(true);
+ } else {
+ b.allowHostAccess(NON_OBJECT_PUBLIC);
}
ctx = b.build();
}
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngineFactory.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngineFactory.java
index 7f762b93cfdc..a60705a697a0 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngineFactory.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngineFactory.java
@@ -60,7 +60,7 @@ public List getMimeTypes() {
@Override
public List getNames() {
- return Arrays.asList(language.getName());
+ return Arrays.asList(language.getName(), getEngineName());
}
@Override
diff --git a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
index 2b72f3f839dc..e66f274fe332 100644
--- a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
+++ b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
@@ -25,9 +25,9 @@
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -40,25 +40,50 @@
@RunWith(Parameterized.class)
public class JavaScriptEnginesTest {
- @Parameterized.Parameters(name = "{0}")
+ @Parameterized.Parameters(name = "{1}:{0}={2}")
public static Object[][] engines() {
List arr = new ArrayList<>();
- for (ScriptEngineFactory f : Scripting.createManager().getEngineFactories()) {
+ final ScriptEngineManager man = Scripting.createManager();
+ for (ScriptEngineFactory f : man.getEngineFactories()) {
final String name = f.getEngineName();
if (
f.getMimeTypes().contains("text/javascript") ||
name.contains("Nashorn")
) {
- arr.add(new Object[] { name, f.getScriptEngine() });
+ final ScriptEngine eng = f.getScriptEngine();
+ arr.add(new Object[] { name, "engineFactories", implName(eng), eng});
+ for (String n : eng.getFactory().getNames()) {
+ ScriptEngine byName = n == null ? null : man.getEngineByName(n);
+ if (byName != null && eng.getClass() == byName.getClass()) {
+ arr.add(new Object[] { n, "name", implName(byName), byName });
+ }
+ }
+ for (String t : eng.getFactory().getMimeTypes()) {
+ ScriptEngine byType = t == null ? null : man.getEngineByMimeType(t);
+ if (byType != null && eng.getClass() == byType.getClass()) {
+ arr.add(new Object[] { t, "type", implName(byType), byType });
+ }
+ }
+ for (String e : eng.getFactory().getExtensions()) {
+ ScriptEngine byExt = e == null ? null : man.getEngineByExtension(e);
+ if (byExt != null && eng.getClass() == byExt.getClass()) {
+ arr.add(new Object[] { e, "ext", implName(byExt), byExt });
+ }
+ }
}
}
return arr.toArray(new Object[0][]);
}
+ private static String implName(Object obj) {
+ return obj.getClass().getSimpleName();
+ }
+
private final String engineName;
private final ScriptEngine engine;
- public JavaScriptEnginesTest(String engineName, ScriptEngine engine) {
+
+ public JavaScriptEnginesTest(String engineName, Object info, String implName, ScriptEngine engine) {
this.engineName = engineName;
this.engine = engine;
}
@@ -116,7 +141,7 @@ public void globalMul() throws Exception {
try {
assertEquals("seventy seven", 77, global.mul(11, 7));
} catch (Exception ex) {
- assertTrue("GraalVM:js exposes only exported symbols", engineName.equals("GraalVM:js"));
+ assertTrue("GraalVM:js exposes only exported symbols: " + engine.getFactory().getNames(), engine.getFactory().getNames().contains("GraalVM:js"));
}
assertEquals("mulExported is accessible in all engines", 77, global.mulExported(11, 7));
}
@@ -140,7 +165,7 @@ public void exposeObject() throws Exception {
Point point = inv().getInterface(rawPoint, Point.class);
if (point == null) {
- Assume.assumeFalse(engineName.contains("Nashorn"));
+ assumeNotNashorn();
}
assertNotNull("Converted to typed interface", point);
@@ -218,7 +243,7 @@ public void returnArrayInJS() throws Exception {
ArrayLike res = ((Invocable) engine).getInterface(raw, ArrayLike.class);
if (res == null) {
- Assume.assumeFalse(engineName.contains("Nashorn"));
+ assumeNotNashorn();
}
assertNotNull("Result looks like array", res);
@@ -231,6 +256,10 @@ public void returnArrayInJS() throws Exception {
assertEquals(sum, list.get("4"));
}
+ private void assumeNotNashorn() {
+ Assume.assumeFalse(engine.getFactory().getNames().contains("Nashorn"));
+ }
+
@Test
public void nonInvocableInvoke() throws Exception {
class ObscureObj {
@@ -252,7 +281,7 @@ public void nonFunctionInvoke() throws Exception {
try {
Object res = ((Invocable) engine).invokeMethod(obj, "unknown");
fail("There is no such method unknown!" + res);
- } catch (NoSuchMethodException ex) {
+ } catch (NullPointerException | NoSuchMethodException ex) {
// OK
}
}
diff --git a/nbbuild/travis/scripting.sh b/nbbuild/travis/scripting.sh
index b9edd08f1366..3ce560b8dbf8 100755
--- a/nbbuild/travis/scripting.sh
+++ b/nbbuild/travis/scripting.sh
@@ -20,9 +20,9 @@
set -e
if [ -z "$GRAALVM" ]; then
- VERSION=1.0.0-rc16
+ VERSION=19.0.0
BASE=graalvm-ce-$VERSION
- URL=https://github.com/oracle/graal/releases/download/vm-$VERSION/$BASE-linux-amd64.tar.gz
+ URL=https://github.com/oracle/graal/releases/download/vm-$VERSION/graalvm-ce-linux-amd64-$VERSION.tar.gz
curl -L $URL --output graalvm.tgz
tar fxz graalvm.tgz
GRAALVM=`pwd`/$BASE
diff --git a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
index 3fae04ca9725..950b8ae8d212 100644
--- a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
+++ b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
@@ -19,7 +19,12 @@
package org.netbeans.api.scripting;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import org.netbeans.spi.scripting.EngineProvider;
@@ -72,7 +77,8 @@ private static final class EngineManager extends ScriptEngineManager {
EngineManager(List extra, ClassLoader loader) {
super(loader);
this.extra = extra;
-
+ final Bindings b = getBindings();
+ b.put("polyglot.js.allowHostAccess", true); // NOI18N
for (ScriptEngineFactory f : extra) {
registerEngineName(f.getEngineName(), f);
for (String ext : f.getExtensions()) {
@@ -89,7 +95,107 @@ public List getEngineFactories() {
List all = new ArrayList<>();
all.addAll(super.getEngineFactories());
all.addAll(extra);
+ ListIterator it = all.listIterator();
+ while (it.hasNext()) {
+ ScriptEngineFactory f = it.next();
+ if (f.getNames().contains("Graal.js")) { // NOI18N
+ it.set(new GraalJSWrapperFactory(f));
+ }
+ }
return all;
}
+
+ @Override
+ public ScriptEngine getEngineByExtension(String extension) {
+ return postConfigure(super.getEngineByExtension(extension));
+ }
+
+ @Override
+ public ScriptEngine getEngineByMimeType(String mimeType) {
+ return postConfigure(super.getEngineByMimeType(mimeType));
+ }
+
+ @Override
+ public ScriptEngine getEngineByName(String shortName) {
+ return postConfigure(super.getEngineByName(shortName));
+ }
+
+ private ScriptEngine postConfigure(ScriptEngine eng) {
+ if (eng == null) {
+ return null;
+ }
+ if (eng.getFactory().getNames().contains("Graal.js")) { // NOI18N
+ eng.setBindings(getBindings(), ScriptContext.ENGINE_SCOPE);
+ }
+ return eng;
+ }
+
+ private final class GraalJSWrapperFactory implements ScriptEngineFactory {
+ private final ScriptEngineFactory original;
+
+ GraalJSWrapperFactory(ScriptEngineFactory original) {
+ this.original = original;
+ }
+
+ @Override
+ public String getEngineName() {
+ return original.getEngineName();
+ }
+
+ @Override
+ public String getEngineVersion() {
+ return original.getEngineVersion();
+ }
+
+ @Override
+ public List getExtensions() {
+ return original.getExtensions();
+ }
+
+ @Override
+ public List getMimeTypes() {
+ return original.getMimeTypes();
+ }
+
+ @Override
+ public List getNames() {
+ return original.getNames();
+ }
+
+ @Override
+ public String getLanguageName() {
+ return original.getLanguageName();
+ }
+
+ @Override
+ public String getLanguageVersion() {
+ return original.getLanguageVersion();
+ }
+
+ @Override
+ public Object getParameter(String key) {
+ return original.getParameter(key);
+ }
+
+ @Override
+ public String getMethodCallSyntax(String obj, String m, String... args) {
+ return original.getMethodCallSyntax(obj, m, args);
+ }
+
+ @Override
+ public String getOutputStatement(String toDisplay) {
+ return original.getOutputStatement(toDisplay);
+ }
+
+ @Override
+ public String getProgram(String... statements) {
+ return original.getProgram(statements);
+ }
+
+ @Override
+ public ScriptEngine getScriptEngine() {
+ return postConfigure(original.getScriptEngine());
+ }
+ }
}
}
From bfbe61dc5ea0cfa7dd97d70fdc7d865c54216f37 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 07:04:19 +0200
Subject: [PATCH 12/27] Adjusting version to 19.0.0
---
ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt | 2 +-
webcommon/libs.graaljs/external/js-19.0.0-license.txt | 2 +-
.../libs.truffleapi/external/truffle-api-19.0.0-license.txt | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt b/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
index 0856f3a1979c..927010dc26c6 100644
--- a/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
+++ b/ide/libs.graalsdk/external/graal-sdk-19.0.0-license.txt
@@ -2,7 +2,7 @@ Name: Graal SDK and Truffle API
Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
-Version: 1.0
+Version: 19.0.0
Files: graal-sdk-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.graaljs/external/js-19.0.0-license.txt b/webcommon/libs.graaljs/external/js-19.0.0-license.txt
index 2e0f228235b1..454506dc43da 100644
--- a/webcommon/libs.graaljs/external/js-19.0.0-license.txt
+++ b/webcommon/libs.graaljs/external/js-19.0.0-license.txt
@@ -2,7 +2,7 @@ Name: Graal SDK and Truffle API
Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
-Version: 1.0
+Version: 19.0.0
Files: js-19.0.0.jar regex-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
diff --git a/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt b/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
index f977b163ef25..f57ccaa5dd22 100644
--- a/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
+++ b/webcommon/libs.truffleapi/external/truffle-api-19.0.0-license.txt
@@ -2,7 +2,7 @@ Name: Graal SDK and Truffle API
Description: Graal SDK and Truffle API
License: UPL
Origin: https://github.com/oracle/graal
-Version: 1.0
+Version: 19.0.0
Files: truffle-api-19.0.0.jar
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
From a0ebbb9adbb0cf877f427ca1182e5cf6f767dbfa Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 07:08:29 +0200
Subject: [PATCH 13/27] Sharing the license between
ide/html.parser/external/icu4j-4_4_2-license.txt and
webcommon/libs.graaljs/external/icu4j-62.1-license.txt
---
.../external/icu4j-62.1-license.txt | 438 ++----------------
1 file changed, 28 insertions(+), 410 deletions(-)
diff --git a/webcommon/libs.graaljs/external/icu4j-62.1-license.txt b/webcommon/libs.graaljs/external/icu4j-62.1-license.txt
index 7bf56b437c32..29bfc929316d 100644
--- a/webcommon/libs.graaljs/external/icu4j-62.1-license.txt
+++ b/webcommon/libs.graaljs/external/icu4j-62.1-license.txt
@@ -1,421 +1,39 @@
Name: icu4j
Description: icu4j license
-License: BSD
+License: MIT-icu4j
Origin: https://github.com/oracle/graal
Version: 62.1
Files: icu4j-62.1.jar
-COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
-
-Copyright © 1991-2018 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
-
----------------------
-
-Third-Party Software Licenses
-
-This section contains third-party software notices and/or additional
-terms for licensed third-party software components included within ICU
-libraries.
-
-1. ICU License - ICU 1.8.1 to ICU 57.1
+ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE
-Copyright (c) 1995-2016 International Business Machines Corporation and others
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, and/or sell copies of the Software, and to permit persons
-to whom the Software is furnished to do so, provided that the above
-copyright notice(s) and this permission notice appear in all copies of
-the Software and that both the above copyright notice(s) and this
-permission notice appear in supporting documentation.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
-SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
-RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
-CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-of the copyright holder.
-
-All trademarks and registered trademarks mentioned herein are the
-property of their respective owners.
+Copyright (c) 1995-2010 International Business Machines Corporation and others
-2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
-
- # The Google Chrome software developed by Google is licensed under
- # the BSD license. Other software included in this distribution is
- # provided under other licenses, as set forth below.
- #
- # The BSD License
- # http://opensource.org/licenses/bsd-license.php
- # Copyright (C) 2006-2008, Google Inc.
- #
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are met:
- #
- # Redistributions of source code must retain the above copyright notice,
- # this list of conditions and the following disclaimer.
- # Redistributions in binary form must reproduce the above
- # copyright notice, this list of conditions and the following
- # disclaimer in the documentation and/or other materials provided with
- # the distribution.
- # Neither the name of Google Inc. nor the names of its
- # contributors may be used to endorse or promote products derived from
- # this software without specific prior written permission.
- #
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
- #
- # The word list in cjdict.txt are generated by combining three word lists
- # listed below with further processing for compound word breaking. The
- # frequency is generated with an iterative training against Google web
- # corpora.
- #
- # * Libtabe (Chinese)
- # - https://sourceforge.net/project/?group_id=1519
- # - Its license terms and conditions are shown below.
- #
- # * IPADIC (Japanese)
- # - http://chasen.aist-nara.ac.jp/chasen/distribution.html
- # - Its license terms and conditions are shown below.
- #
- # ---------COPYING.libtabe ---- BEGIN--------------------
- #
- # /*
- # * Copyright (c) 1999 TaBE Project.
- # * Copyright (c) 1999 Pai-Hsiang Hsiao.
- # * All rights reserved.
- # *
- # * Redistribution and use in source and binary forms, with or without
- # * modification, are permitted provided that the following conditions
- # * are met:
- # *
- # * . Redistributions of source code must retain the above copyright
- # * notice, this list of conditions and the following disclaimer.
- # * . Redistributions in binary form must reproduce the above copyright
- # * notice, this list of conditions and the following disclaimer in
- # * the documentation and/or other materials provided with the
- # * distribution.
- # * . Neither the name of the TaBE Project nor the names of its
- # * contributors may be used to endorse or promote products derived
- # * from this software without specific prior written permission.
- # *
- # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- # * OF THE POSSIBILITY OF SUCH DAMAGE.
- # */
- #
- # /*
- # * Copyright (c) 1999 Computer Systems and Communication Lab,
- # * Institute of Information Science, Academia
- # * Sinica. All rights reserved.
- # *
- # * Redistribution and use in source and binary forms, with or without
- # * modification, are permitted provided that the following conditions
- # * are met:
- # *
- # * . Redistributions of source code must retain the above copyright
- # * notice, this list of conditions and the following disclaimer.
- # * . Redistributions in binary form must reproduce the above copyright
- # * notice, this list of conditions and the following disclaimer in
- # * the documentation and/or other materials provided with the
- # * distribution.
- # * . Neither the name of the Computer Systems and Communication Lab
- # * nor the names of its contributors may be used to endorse or
- # * promote products derived from this software without specific
- # * prior written permission.
- # *
- # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- # * OF THE POSSIBILITY OF SUCH DAMAGE.
- # */
- #
- # Copyright 1996 Chih-Hao Tsai @ Beckman Institute,
- # University of Illinois
- # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4
- #
- # ---------------COPYING.libtabe-----END--------------------------------
- #
- #
- # ---------------COPYING.ipadic-----BEGIN-------------------------------
- #
- # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
- # and Technology. All Rights Reserved.
- #
- # Use, reproduction, and distribution of this software is permitted.
- # Any copy of this software, whether in its original form or modified,
- # must include both the above copyright notice and the following
- # paragraphs.
- #
- # Nara Institute of Science and Technology (NAIST),
- # the copyright holders, disclaims all warranties with regard to this
- # software, including all implied warranties of merchantability and
- # fitness, in no event shall NAIST be liable for
- # any special, indirect or consequential damages or any damages
- # whatsoever resulting from loss of use, data or profits, whether in an
- # action of contract, negligence or other tortuous action, arising out
- # of or in connection with the use or performance of this software.
- #
- # A large portion of the dictionary entries
- # originate from ICOT Free Software. The following conditions for ICOT
- # Free Software applies to the current dictionary as well.
- #
- # Each User may also freely distribute the Program, whether in its
- # original form or modified, to any third party or parties, PROVIDED
- # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
- # on, or be attached to, the Program, which is distributed substantially
- # in the same form as set out herein and that such intended
- # distribution, if actually made, will neither violate or otherwise
- # contravene any of the laws and regulations of the countries having
- # jurisdiction over the User or the intended distribution itself.
- #
- # NO WARRANTY
- #
- # The program was produced on an experimental basis in the course of the
- # research and development conducted during the project and is provided
- # to users as so produced on an experimental basis. Accordingly, the
- # program is provided without any warranty whatsoever, whether express,
- # implied, statutory or otherwise. The term "warranty" used herein
- # includes, but is not limited to, any warranty of the quality,
- # performance, merchantability and fitness for a particular purpose of
- # the program and the nonexistence of any infringement or violation of
- # any right of any third party.
- #
- # Each user of the program will agree and understand, and be deemed to
- # have agreed and understood, that there is no warranty whatsoever for
- # the program and, accordingly, the entire risk arising from or
- # otherwise connected with the program is assumed by the user.
- #
- # Therefore, neither ICOT, the copyright holder, or any other
- # organization that participated in or was otherwise related to the
- # development of the program and their respective officials, directors,
- # officers and other employees shall be held liable for any and all
- # damages, including, without limitation, general, special, incidental
- # and consequential damages, arising out of or otherwise in connection
- # with the use or inability to use the program or any product, material
- # or result produced or otherwise obtained by using the program,
- # regardless of whether they have been advised of, or otherwise had
- # knowledge of, the possibility of such damages at any time during the
- # project or thereafter. Each user will be deemed to have agreed to the
- # foregoing by his or her commencement of use of the program. The term
- # "use" as used herein includes, but is not limited to, the use,
- # modification, copying and distribution of the program and the
- # production of secondary products from the program.
- #
- # In the case where the program, whether in its original form or
- # modified, was distributed or delivered to or received by a user from
- # any person, organization or entity other than ICOT, unless it makes or
- # grants independently of ICOT any specific warranty to the user in
- # writing, such person, organization or entity, will also be exempted
- # from and not be held liable to the user for any such damages as noted
- # above as far as the program is concerned.
- #
- # ---------------COPYING.ipadic-----END----------------------------------
-
-3. Lao Word Break Dictionary Data (laodict.txt)
-
- # Copyright (c) 2013 International Business Machines Corporation
- # and others. All Rights Reserved.
- #
- # Project: http://code.google.com/p/lao-dictionary/
- # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
- # (copied below)
- #
- # This file is derived from the above dictionary, with slight
- # modifications.
- # ----------------------------------------------------------------------
- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification,
- # are permitted provided that the following conditions are met:
- #
- #
- # Redistributions of source code must retain the above copyright notice, this
- # list of conditions and the following disclaimer. Redistributions in
- # binary form must reproduce the above copyright notice, this list of
- # conditions and the following disclaimer in the documentation and/or
- # other materials provided with the distribution.
- #
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- # OF THE POSSIBILITY OF SUCH DAMAGE.
- # --------------------------------------------------------------------------
-
-4. Burmese Word Break Dictionary Data (burmesedict.txt)
-
- # Copyright (c) 2014 International Business Machines Corporation
- # and others. All Rights Reserved.
- #
- # This list is part of a project hosted at:
- # github.com/kanyawtech/myanmar-karen-word-lists
- #
- # --------------------------------------------------------------------------
- # Copyright (c) 2013, LeRoy Benjamin Sharon
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met: Redistributions of source code must retain the above
- # copyright notice, this list of conditions and the following
- # disclaimer. Redistributions in binary form must reproduce the
- # above copyright notice, this list of conditions and the following
- # disclaimer in the documentation and/or other materials provided
- # with the distribution.
- #
- # Neither the name Myanmar Karen Word Lists, nor the names of its
- # contributors may be used to endorse or promote products derived
- # from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
- # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- # --------------------------------------------------------------------------
-
-5. Time Zone Database
-
- ICU uses the public domain data and code derived from Time Zone
-Database for its time zone support. The ownership of the TZ database
-is explained in BCP 175: Procedure for Maintaining the Time Zone
-Database section 7.
-
- # 7. Database Ownership
- #
- # The TZ database itself is not an IETF Contribution or an IETF
- # document. Rather it is a pre-existing and regularly updated work
- # that is in the public domain, and is intended to remain in the
- # public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do
- # not apply to the TZ Database or contributions that individuals make
- # to it. Should any claims be made and substantiated against the TZ
- # Database, the organization that is providing the IANA
- # Considerations defined in this RFC, under the memorandum of
- # understanding with the IETF, currently ICANN, may act in accordance
- # with all competent court orders. No ownership claims will be made
- # by ICANN or the IETF Trust on the database or the code. Any person
- # making a contribution to the database or code waives all rights to
- # future claims in that contribution or in the TZ Database.
-
-6. Google double-conversion
-
-Copyright 2006-2011, the V8 project authors. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
+All rights reserved.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+provided that the above copyright notice(s) and this permission notice appear
+in all copies of the Software and that both the above copyright notice(s) and
+this permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
+LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
+DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the property of
+their respective owners.
From c5365c13a63bb55d458c7b3118448306a66a4bc1 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 07:50:13 +0200
Subject: [PATCH 14/27] Use 1.7 compilation level even on newer JDKs
---
ide/o.apache.xml.resolver/build.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ide/o.apache.xml.resolver/build.xml b/ide/o.apache.xml.resolver/build.xml
index 9d4f6f4db015..48c35e140141 100644
--- a/ide/o.apache.xml.resolver/build.xml
+++ b/ide/o.apache.xml.resolver/build.xml
@@ -50,7 +50,7 @@
+ destdir="build/external-patch/classes" source="${javac.source}" target="${javac.target}">
From d0525afb72df224002430fec681df1989a2d4137 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 07:50:41 +0200
Subject: [PATCH 15/27] Always set the proxy host property - even to empty
string
---
enterprise/web.core/build.xml | 1 -
.../nbbuild/extlibs/ConfigureProxy.java | 22 ++++++++++++++-----
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/enterprise/web.core/build.xml b/enterprise/web.core/build.xml
index c2b777ed199b..94cd0e99c384 100644
--- a/enterprise/web.core/build.xml
+++ b/enterprise/web.core/build.xml
@@ -23,6 +23,5 @@
-
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
index 61a36fe52369..3b4960b550cd 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ConfigureProxy.java
@@ -26,12 +26,14 @@
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
@@ -59,7 +61,7 @@ public void execute() throws BuildException {
URI[] connectedVia = { null };
URLConnection connect = openConnection(this, connectTo, connectedVia);
if (connect == null) {
- throw new BuildException("Cannot connect to " + connectedVia);
+ throw new BuildException("Cannot connect to " + connectTo);
}
if (connectedVia[0] != null) {
@@ -69,6 +71,10 @@ public void execute() throws BuildException {
final int port = connectedVia[0].getPort();
log(String.format("Setting %s to %d", portProperty, port), Project.MSG_INFO);
getProject().setUserProperty(portProperty, "" + port);
+ } else {
+ log(String.format("Resetting %s to empty string", hostProperty), Project.MSG_INFO);
+ getProject().setUserProperty(hostProperty, "");
+ getProject().setUserProperty(portProperty, "80");
}
} catch (IOException ex) {
throw new BuildException(ex);
@@ -77,6 +83,7 @@ public void execute() throws BuildException {
static URLConnection openConnection(Task task, final URL url, URI[] connectedVia) throws IOException {
final URLConnection[] conn = { null };
+ final List errs = new CopyOnWriteArrayList<>();
final CountDownLatch connected = new CountDownLatch(1);
ExecutorService connectors = Executors.newFixedThreadPool(3);
connectors.submit(() -> {
@@ -94,7 +101,7 @@ static URLConnection openConnection(Task task, final URL url, URI[] connectedVia
connectedVia[0] = uri;
}
} catch (IOException | URISyntaxException ex) {
- task.log(ex, Project.MSG_ERR);
+ errs.add(ex);
}
}
});
@@ -113,7 +120,7 @@ static URLConnection openConnection(Task task, final URL url, URI[] connectedVia
connectedVia[0] = uri;
}
} catch (IOException | URISyntaxException ex) {
- task.log(ex, Project.MSG_ERR);
+ errs.add(ex);
}
}
});
@@ -124,7 +131,7 @@ static URLConnection openConnection(Task task, final URL url, URI[] connectedVia
conn[0] = test;
connected.countDown();
} catch (IOException ex) {
- task.log(ex, Project.MSG_ERR);
+ errs.add(ex);
}
});
try {
@@ -132,6 +139,9 @@ static URLConnection openConnection(Task task, final URL url, URI[] connectedVia
} catch (InterruptedException ex) {
}
if (conn[0] == null) {
+ for (Exception ex : errs) {
+ task.log(ex, Project.MSG_ERR);
+ }
throw new IOException("Cannot connect to " + url);
}
return conn[0];
From 0b04f4d753c20be411c7f956343c816d447ce965 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 09:10:16 +0200
Subject: [PATCH 16/27] Avoid configuration of the engines via global
properties
---
.../netbeans/api/scripting/JavaScriptEnginesTest.java | 4 ----
.../profiler/oql/engine/api/impl/OQLEngineImpl.java | 1 +
.../profiler/oql/engine/api/impl/OQLEngineTest.java | 9 ---------
3 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java b/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
index e2a5d40b6bb6..45e58782e5a0 100644
--- a/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
+++ b/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
@@ -37,10 +37,6 @@
@RunWith(Parameterized.class)
public class JavaScriptEnginesTest {
- static {
- System.setProperty("polyglot.js.nashorn-compat", "true");
- }
-
@Parameterized.Parameters(name = "{0}")
public static Object[][] engines() {
List arr = new ArrayList<>();
diff --git a/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java b/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
index 09525eaa5775..e1fe46f202e3 100644
--- a/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
+++ b/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
@@ -382,6 +382,7 @@ private void init(Snapshot snapshot) throws RuntimeException {
try {
ScriptEngineManager manager = Scripting.createManager();
engine = manager.getEngineByName("JavaScript"); // NOI18N
+ engine.getBindings(ScriptContext.ENGINE_SCOPE).put("polyglot.js.nashorn-compat", true);
InputStream strm = getInitStream();
CompiledScript cs = ((Compilable)engine).compile(new InputStreamReader(strm));
cs.eval();
diff --git a/profiler/profiler.oql/test/unit/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineTest.java b/profiler/profiler.oql/test/unit/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineTest.java
index 4d1f0be5de15..e7859d297e7c 100644
--- a/profiler/profiler.oql/test/unit/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineTest.java
+++ b/profiler/profiler.oql/test/unit/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineTest.java
@@ -48,15 +48,6 @@ public class OQLEngineTest {
public OQLEngineTest() {
}
- @BeforeClass
- public static void setUpClass() throws Exception {
- System.setProperty("polyglot.js.nashorn-compat", "true");
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
@Before
public void setUp() throws IOException, URISyntaxException {
URL url = getClass().getResource("small_heap.bin");
From 64684017c9bf1c5bc8953b938cd4633797f5dc16 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 09:45:16 +0200
Subject: [PATCH 17/27] Describing the security model of GraalVM languages and
crosslinking to the polyglot API documentation
---
ide/libs.graalsdk/arch.xml | 9 ++++-
.../org/netbeans/libs/graalsdk/GraalSDK.java | 37 +++++++++++++++++--
.../libs/graalsdk/impl/GraalContext.java | 6 ++-
.../libs/graalsdk/ScriptingTutorial.java | 2 +
nbbuild/javadoctools/links.xml | 1 +
nbbuild/javadoctools/truffle/package-list | 28 ++++++++++++++
6 files changed, 76 insertions(+), 7 deletions(-)
create mode 100644 nbbuild/javadoctools/truffle/package-list
diff --git a/ide/libs.graalsdk/arch.xml b/ide/libs.graalsdk/arch.xml
index bba4e70fc8a5..caf0538af958 100644
--- a/ide/libs.graalsdk/arch.xml
+++ b/ide/libs.graalsdk/arch.xml
@@ -148,7 +148,10 @@
This module re-exports org.graalvm.polyglot APIs.
- Use them to obtain directly, if you trust the provider of those APIs.
+ Use them to obtain access to the GraalVM directly, if you only
+ want to work with them and generic
+ Scripting
+ wrapper isn't enough.
@@ -551,7 +554,9 @@
By default all the GraalVM engines
(named GraalVM:something)
- run in a very restricted, secure sandbox. That means they cannot
+ run in a very restricted, secure sandbox. See
+ GraalSDK
+ for details. That means the languages cannot
access local files, ports, etc. Some languages (like
>FastR
implementation of the R language) need such access. In such
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/GraalSDK.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/GraalSDK.java
index aeda15b1f324..5df184465006 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/GraalSDK.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/GraalSDK.java
@@ -18,17 +18,48 @@
*/
package org.netbeans.libs.graalsdk;
+import java.util.List;
import org.graalvm.polyglot.Context;
+import org.graalvm.polyglot.Context.Builder;
import org.graalvm.polyglot.Engine;
+import org.graalvm.polyglot.HostAccess;
/**
* Integration of NetBeans Scripting
* API and GraalVM; see the {@link org.netbeans.libs.graalsdk tutorial} for more details.
+ * Security
*
- * As a secondary usecase, it is possible to request this module and gain access to
- * {@code org.graalvm.polyglot} package directly. Consult {@link Context} and {@link Engine}
+ * By default all the GraalVM engines
+ * (named GraalVM:something)
+ * run in a very restricted, secure sandbox:
+ *
+ * {@codesnippet org.netbeans.libs.graalsdk.impl.GraalContext#SANDBOX}
+ *
+ * The languages cannot access local files, ports, etc. They can access public
+ * fields and public methods of objects passed into their scripts (but not
+ * those methods exposed by base {@link Object} class). The scripts can access
+ * elements of Java arrays and {@link List} elements. Methods of a
+ * {@linkplain FunctionalInterface functional interfaces} are callable by the
+ * scripts.
+ *
+ *
+ * For some languages such restrictions are too tight. They
+ * need to gain wider access. This can be done by setting allowAllAccess
+ * attribute to {@code true}:
+ *
+ * {@codesnippet org.netbeans.libs.graalsdk.ScriptingTutorial#allowAllAccess}
+ *
+ * Once enabled, the {@link HostAccess#ALL} and {@link Builder#allowAllAccess(boolean) allowAllAccess(true)}
+ * is then used to construct the engine's environment.
+ *
+ * Polyglot API Access
+ *
+ * As a consequence of packaging the GraalVM APIs, it is possible to request this module and gain access to
+ * {@link org.graalvm.polyglot} package directly. Consult {@link Context} and {@link Engine}
* classes as a starting points when
- * accessing the Graal SDK polyglot API directly.
+ * accessing the Graal SDK directly. Preferably use only if the
+ * NetBeans Scripting
+ * API wrapper isn't good enough.
*/
public final class GraalSDK {
private GraalSDK() {
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
index 1d48c3f33f5f..9ea085f335ba 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
@@ -41,13 +41,15 @@ final class GraalContext implements ScriptContext {
private SimpleBindings bindings;
private boolean allowAllAccess;
- private static final HostAccess NON_OBJECT_PUBLIC = HostAccess.newBuilder().
+ // BEGIN: org.netbeans.libs.graalsdk.impl.GraalContext#SANDBOX
+ private static final HostAccess SANDBOX = HostAccess.newBuilder().
allowPublicAccess(true).
allowArrayAccess(true).
allowListAccess(true).
allowAllImplementations(true).
denyAccess(Object.class, false).
build();
+ // END: org.netbeans.libs.graalsdk.impl.GraalContext#SANDBOX
synchronized final Context ctx() {
if (ctx == null) {
@@ -66,7 +68,7 @@ synchronized final Context ctx() {
b.allowHostAccess(HostAccess.ALL);
b.allowAllAccess(true);
} else {
- b.allowHostAccess(NON_OBJECT_PUBLIC);
+ b.allowHostAccess(SANDBOX);
}
ctx = b.build();
}
diff --git a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
index 7c2749edea4a..6cd73af33db8 100644
--- a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
+++ b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
@@ -214,9 +214,11 @@ interface BinomQuantile {
}
public void callRFunctionFromJava() throws Exception {
+ // BEGIN: org.netbeans.libs.graalsdk.ScriptingTutorial#allowAllAccess
ScriptEngine rEngine = Scripting.createManager().getEngineByMimeType("application/x-r");
// FastR currently needs access to native libraries:
rEngine.getContext().setAttribute("allowAllAccess", true, ScriptContext.GLOBAL_SCOPE);
+ // END: org.netbeans.libs.graalsdk.ScriptingTutorial#allowAllAccess
final Object funcRaw = rEngine.eval("qbinom");
BinomQuantile func = ((Invocable) rEngine).getInterface(funcRaw, BinomQuantile.class);
diff --git a/nbbuild/javadoctools/links.xml b/nbbuild/javadoctools/links.xml
index 17251277e9f2..a5f8c1ddbe39 100644
--- a/nbbuild/javadoctools/links.xml
+++ b/nbbuild/javadoctools/links.xml
@@ -235,3 +235,4 @@
+
diff --git a/nbbuild/javadoctools/truffle/package-list b/nbbuild/javadoctools/truffle/package-list
new file mode 100644
index 000000000000..8ce03d9caa28
--- /dev/null
+++ b/nbbuild/javadoctools/truffle/package-list
@@ -0,0 +1,28 @@
+com.oracle.truffle.api
+com.oracle.truffle.api.debug
+com.oracle.truffle.api.dsl
+com.oracle.truffle.api.frame
+com.oracle.truffle.api.instrumentation
+com.oracle.truffle.api.interop
+com.oracle.truffle.api.library
+com.oracle.truffle.api.nodes
+com.oracle.truffle.api.object
+com.oracle.truffle.api.object.dsl
+com.oracle.truffle.api.profiles
+com.oracle.truffle.api.source
+com.oracle.truffle.api.utilities
+org.graalvm.collections
+org.graalvm.nativeimage
+org.graalvm.nativeimage.c
+org.graalvm.nativeimage.c.constant
+org.graalvm.nativeimage.c.function
+org.graalvm.nativeimage.c.struct
+org.graalvm.nativeimage.c.type
+org.graalvm.nativeimage.hosted
+org.graalvm.options
+org.graalvm.polyglot
+org.graalvm.polyglot.io
+org.graalvm.polyglot.management
+org.graalvm.polyglot.proxy
+org.graalvm.polyglot.tck
+org.graalvm.word
From afc27a44b0a7c7112712ba8824e1599b8afa837c Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Fri, 24 May 2019 15:21:07 +0200
Subject: [PATCH 18/27] Keep the hintful comment
---
.../core/network/proxy/pac/impl/NbPacScriptEvaluator.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
index 7af391b20231..9f6b7b8b6a89 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
@@ -400,6 +400,8 @@ private PacJsEntryFunction testScriptEngine(ScriptEngine eng, boolean doDeepTest
}
private boolean isJsFunctionAvailable(ScriptEngine eng, String functionName, boolean doDeepTest) {
+ // We want to test if the function is there, but without actually
+ // invoking it.
try {
Object typeofCheck = eng.eval("(function(name) { return typeof this[name]; })");
Object type = ((Invocable) eng).invokeMethod(typeofCheck, "call", null, functionName);
From f47f36cdaf029e364047f00eb2049a704d0a7509 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Mon, 27 May 2019 15:53:36 +0200
Subject: [PATCH 19/27] Secure all script engines by default
---
.../libs/graalsdk/JavaScriptEnginesTest.java | 32 ++++++++++++++
.../nbproject/project.properties | 2 +-
.../org/netbeans/api/scripting/Scripting.java | 44 ++++++++++++++++---
.../proxy/pac/impl/NbPacScriptEvaluator.java | 31 -------------
4 files changed, 72 insertions(+), 37 deletions(-)
diff --git a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
index e66f274fe332..b94445d94a70 100644
--- a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
+++ b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/JavaScriptEnginesTest.java
@@ -175,6 +175,22 @@ public void exposeObject() throws Exception {
assertEquals("Power of sqrt(2) rounded", 2, point.z(1.42));
}
+ @Test
+ public void classOfString() throws Exception {
+ Object clazz = engine.eval("\n"
+ + "var s = '';\n"
+ + "var n;\n"
+ + "try {\n"
+ + " var c = s.getClass();\n"
+ + " n = c.getName();\n"
+ + "} catch (e) {\n"
+ + " n = null;\n"
+ + "}\n"
+ + "n\n"
+ );
+ assertNull("No getClass attribute of string", clazz);
+ }
+
@Test
public void accessJavaObject() throws Exception {
Object fn = engine.eval("(function(obj) {\n"
@@ -199,6 +215,22 @@ public void accessJavaObject() throws Exception {
assertNotNull("There was an error calling non-public add method: " + sum.err, sum.err);
}
+ @Test
+ public void classOfSum() throws Exception {
+ Assume.assumeFalse("GraalJSScriptEngine".equals(engine.getClass().getSimpleName()));
+
+ Object fn = engine.eval("(function(obj) {\n"
+ + " try {\n"
+ + " return obj.getClass().getName();\n"
+ + " } catch (e) {\n"
+ + " return null;\n"
+ + " }\n"
+ + "})\n");
+ Sum sum = new Sum();
+ Object clazz = inv().invokeMethod(fn, "call", null, sum);
+ assertNull("No getClass attribute of string", clazz);
+ }
+
@Test
public void sumArrayOfInt() throws Exception {
assertSumArray(new int[] { 1, 2, 3, 4, 5, 6 });
diff --git a/platform/api.scripting/nbproject/project.properties b/platform/api.scripting/nbproject/project.properties
index 0eadca9f0693..a19bad12eafc 100644
--- a/platform/api.scripting/nbproject/project.properties
+++ b/platform/api.scripting/nbproject/project.properties
@@ -16,7 +16,7 @@
# under the License.
is.autoload=true
-javac.source=1.7
+javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
javadoc.arch=${basedir}/arch.xml
javadoc.apichanges=${basedir}/apichanges.xml
diff --git a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
index 950b8ae8d212..b8bf32f55636 100644
--- a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
+++ b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
@@ -18,8 +18,9 @@
*/
package org.netbeans.api.scripting;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import javax.script.Bindings;
@@ -77,8 +78,6 @@ private static final class EngineManager extends ScriptEngineManager {
EngineManager(List extra, ClassLoader loader) {
super(loader);
this.extra = extra;
- final Bindings b = getBindings();
- b.put("polyglot.js.allowHostAccess", true); // NOI18N
for (ScriptEngineFactory f : extra) {
registerEngineName(f.getEngineName(), f);
for (String ext : f.getExtensions()) {
@@ -98,7 +97,7 @@ public List getEngineFactories() {
ListIterator it = all.listIterator();
while (it.hasNext()) {
ScriptEngineFactory f = it.next();
- if (f.getNames().contains("Graal.js")) { // NOI18N
+ if (f.getNames().contains("Graal.js") || isNashornFactory(f)) { // NOI18N
it.set(new GraalJSWrapperFactory(f));
}
}
@@ -125,11 +124,46 @@ private ScriptEngine postConfigure(ScriptEngine eng) {
return null;
}
if (eng.getFactory().getNames().contains("Graal.js")) { // NOI18N
- eng.setBindings(getBindings(), ScriptContext.ENGINE_SCOPE);
+ final Bindings b = eng.getBindings(ScriptContext.ENGINE_SCOPE);
+ b.put("polyglot.js.allowHostAccess", true); // NOI18N
+ }
+ if (isNashornFactory(eng.getFactory())) {
+ return secureEngineEngine(eng);
}
return eng;
}
+
+ private static final Class> nashornScriptEngineFactory;
+ static {
+ Class> klass;
+ try {
+ klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory");
+ } catch (ClassNotFoundException ex) {
+ klass = String.class;
+ }
+ nashornScriptEngineFactory = klass;
+ }
+ private boolean isNashornFactory(ScriptEngineFactory f) {
+ return nashornScriptEngineFactory.isInstance(f);
+ }
+
+ private ScriptEngine secureEngineEngine(ScriptEngine e) {
+ try {
+ ScriptEngineFactory f = e.getFactory();
+ final Class extends ScriptEngineFactory> factoryClass = f.getClass();
+ final ClassLoader factoryClassLoader = factoryClass.getClassLoader();
+ Class> filterClass = Class.forName("jdk.nashorn.api.scripting.ClassFilter", true, factoryClassLoader);
+ Method createMethod = factoryClass.getMethod("getScriptEngine", filterClass);
+ Object filter = java.lang.reflect.Proxy.newProxyInstance(factoryClassLoader, new Class[]{filterClass}, (Object proxy, Method method, Object[] args) -> {
+ return false;
+ });
+ return (ScriptEngine) createMethod.invoke(f, filter);
+ } catch (NoSuchMethodException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
+ return e;
+ }
+ }
+
private final class GraalJSWrapperFactory implements ScriptEngineFactory {
private final ScriptEngineFactory original;
diff --git a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
index 9f6b7b8b6a89..045298889cc4 100644
--- a/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
+++ b/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java
@@ -18,8 +18,6 @@
*/
package org.netbeans.core.network.proxy.pac.impl;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
@@ -338,37 +336,8 @@ private PacScriptEngine getScriptEngine(String pacSource) throws PacParsingExcep
}
}
- private boolean isNashornFactory(ScriptEngineFactory f) {
- try {
- Class> klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory");
- return klass.isInstance(f);
- } catch (ClassNotFoundException ex) {
- return false;
- }
- }
-
- private ScriptEngine secureEngineEngine(ScriptEngine e) {
- try {
- ScriptEngineFactory f = e.getFactory();
- final Class extends ScriptEngineFactory> factoryClass = f.getClass();
- final ClassLoader factoryClassLoader = factoryClass.getClassLoader();
- Class> filterClass = Class.forName("jdk.nashorn.api.scripting.ClassFilter", true, factoryClassLoader);
- Method createMethod = factoryClass.getMethod("getScriptEngine", filterClass);
- Object filter = java.lang.reflect.Proxy.newProxyInstance(factoryClassLoader, new Class[] { filterClass }, (Object proxy, Method method, Object[] args) -> {
- return false;
- });
- return (ScriptEngine) createMethod.invoke(f, filter);
- } catch (NoSuchMethodException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
- Exceptions.printStackTrace(ex);
- return e;
- }
- }
-
private ScriptEngine getGenericJSScriptEngine() {
ScriptEngine eng = newGenericJSScriptEngine();
- if (isNashornFactory(eng.getFactory())) {
- return secureEngineEngine(eng);
- }
return eng;
}
From f21511c84dab56527d86edf85bd22e8dea141cd0 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Tue, 28 May 2019 08:37:09 +0200
Subject: [PATCH 20/27] Control access to Java.type via a property
---
.../org/netbeans/api/scripting/Scripting.java | 28 ++++++++++++----
.../api/scripting/JavaScriptEnginesTest.java | 33 +++++++++++++++++++
.../oql/engine/api/impl/OQLEngineImpl.java | 2 +-
3 files changed, 55 insertions(+), 8 deletions(-)
diff --git a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
index b8bf32f55636..f782713c1302 100644
--- a/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
+++ b/platform/api.scripting/src/org/netbeans/api/scripting/Scripting.java
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
+import java.util.function.Predicate;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
@@ -125,7 +126,10 @@ private ScriptEngine postConfigure(ScriptEngine eng) {
}
if (eng.getFactory().getNames().contains("Graal.js")) { // NOI18N
final Bindings b = eng.getBindings(ScriptContext.ENGINE_SCOPE);
- b.put("polyglot.js.allowHostAccess", true); // NOI18N
+ b.put("polyglot.js.nashorn-compat", true); // NOI18N
+ b.put("polyglot.js.allowHostClassLookup", (Predicate) (s) -> { // NOI18N
+ return allowHostClassLookup(eng, s);
+ });
}
if (isNashornFactory(eng.getFactory())) {
return secureEngineEngine(eng);
@@ -138,7 +142,7 @@ private ScriptEngine postConfigure(ScriptEngine eng) {
static {
Class> klass;
try {
- klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory");
+ klass = Class.forName("jdk.nashorn.api.scripting.NashornScriptEngineFactory"); // NOI18N
} catch (ClassNotFoundException ex) {
klass = String.class;
}
@@ -148,22 +152,32 @@ private boolean isNashornFactory(ScriptEngineFactory f) {
return nashornScriptEngineFactory.isInstance(f);
}
- private ScriptEngine secureEngineEngine(ScriptEngine e) {
+ private ScriptEngine secureEngineEngine(ScriptEngine prototypeEngine) {
+ final ScriptEngine[] engine = { prototypeEngine };
try {
- ScriptEngineFactory f = e.getFactory();
+ ScriptEngineFactory f = engine[0].getFactory();
final Class extends ScriptEngineFactory> factoryClass = f.getClass();
final ClassLoader factoryClassLoader = factoryClass.getClassLoader();
Class> filterClass = Class.forName("jdk.nashorn.api.scripting.ClassFilter", true, factoryClassLoader);
Method createMethod = factoryClass.getMethod("getScriptEngine", filterClass);
Object filter = java.lang.reflect.Proxy.newProxyInstance(factoryClassLoader, new Class[]{filterClass}, (Object proxy, Method method, Object[] args) -> {
- return false;
+ return allowHostClassLookup(engine[0], (String) args[0]);
});
- return (ScriptEngine) createMethod.invoke(f, filter);
+ engine[0] = (ScriptEngine) createMethod.invoke(f, filter);
+ return engine[0];
} catch (NoSuchMethodException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
- return e;
+ return engine[0];
}
}
+ private boolean allowHostClassLookup(final ScriptEngine engine, String className) {
+ Object engineAllAccess = engine.getBindings(ScriptContext.ENGINE_SCOPE).get("allowAllAccess");
+ Object globalAllAccess = getBindings().get("allowAllAccess");
+
+ boolean allowClassAccess = Boolean.TRUE.equals(engineAllAccess) || Boolean.TRUE.equals(globalAllAccess);
+ return allowClassAccess;
+ }
+
private final class GraalJSWrapperFactory implements ScriptEngineFactory {
private final ScriptEngineFactory original;
diff --git a/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java b/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
index 45e58782e5a0..104d6e4245c9 100644
--- a/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
+++ b/platform/api.scripting/test/unit/src/org/netbeans/api/scripting/JavaScriptEnginesTest.java
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Map;
import javax.script.Invocable;
+import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptException;
@@ -30,6 +31,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -228,6 +230,37 @@ public void returnArrayInJS() throws Exception {
assertEquals(sum, list.get("4"));
}
+ @Test
+ public void allowLoadAClassInJS() throws Exception {
+ engine.getBindings(ScriptContext.ENGINE_SCOPE).put("allowAllAccess", true); // NOI18N
+ Object fn = engine.eval("(function(obj) {\n"
+ + " var Long = Java.type('java.lang.Long');\n"
+ + " return new Long(33);\n"
+ + "})\n");
+ assertNotNull(fn);
+
+ Object value = ((Invocable) engine).invokeMethod(fn, "call", null, null);
+ assertTrue("Is number: " + value, value instanceof Number);
+ assertEquals(33, ((Number) value).intValue());
+ }
+
+ @Test
+ public void preventLoadAClassInJS() throws Exception {
+ Object fn = engine.eval("(function(obj) {\n"
+ + " var Long = Java.type('java.lang.Long');\n"
+ + " return new Long(33);\n"
+ + "})\n");
+ assertNotNull(fn);
+
+ Object value;
+ try {
+ value = ((Invocable) engine).invokeMethod(fn, "call", null, null);
+ } catch (ScriptException | RuntimeException ex) {
+ return;
+ }
+ fail("Access to Java.type classes shall be prevented: " + value);
+ }
+
public static interface ArrayLike {
int length();
}
diff --git a/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java b/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
index e1fe46f202e3..c804ceabc62a 100644
--- a/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
+++ b/profiler/profiler.oql/src/org/netbeans/modules/profiler/oql/engine/api/impl/OQLEngineImpl.java
@@ -382,7 +382,7 @@ private void init(Snapshot snapshot) throws RuntimeException {
try {
ScriptEngineManager manager = Scripting.createManager();
engine = manager.getEngineByName("JavaScript"); // NOI18N
- engine.getBindings(ScriptContext.ENGINE_SCOPE).put("polyglot.js.nashorn-compat", true);
+ engine.getBindings(ScriptContext.ENGINE_SCOPE).put("allowAllAccess", true);
InputStream strm = getInitStream();
CompiledScript cs = ((Compilable)engine).compile(new InputStreamReader(strm));
cs.eval();
From c3b95e10a2515ab8804c66970d88f5b0271baf30 Mon Sep 17 00:00:00 2001
From: Jaroslav Tulach
Date: Tue, 28 May 2019 10:02:32 +0200
Subject: [PATCH 21/27] Replacing allowAllAccess property with a builder
configuration method
---
ide/libs.graalsdk/nbproject/project.xml | 2 +-
.../libs/graalsdk/impl/GraalContext.java | 19 +++-
.../graalsdk/impl/GraalEnginesProvider.java | 13 ++-
.../libs/graalsdk/ScriptingTutorial.java | 16 ++-
platform/api.scripting/apichanges.xml | 18 +++
platform/api.scripting/arch.xml | 105 +++++++++---------
platform/api.scripting/manifest.mf | 2 +-
.../org/netbeans/api/scripting/Scripting.java | 80 +++++++++++--
.../spi/scripting/EngineProvider.java | 14 +++
.../api/scripting/JavaScriptEnginesTest.java | 23 +++-
.../netbeans/api/scripting/ScriptingTest.java | 10 ++
.../oql/engine/api/impl/OQLEngineImpl.java | 3 +-
12 files changed, 222 insertions(+), 83 deletions(-)
diff --git a/ide/libs.graalsdk/nbproject/project.xml b/ide/libs.graalsdk/nbproject/project.xml
index e70bb470a4ad..e7c27540b086 100644
--- a/ide/libs.graalsdk/nbproject/project.xml
+++ b/ide/libs.graalsdk/nbproject/project.xml
@@ -30,7 +30,7 @@
- 1.0
+ 1.2
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
index 9ea085f335ba..ea976c24327f 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalContext.java
@@ -34,10 +34,12 @@
import org.openide.util.io.ReaderInputStream;
final class GraalContext implements ScriptContext {
+ private final static String ALLOW_ALL_ACCESS = "allowAllAccess"; // NOI18N
private Context ctx;
private final WriterOutputStream writer = new WriterOutputStream(new OutputStreamWriter(System.out));
private final WriterOutputStream errorWriter = new WriterOutputStream(new OutputStreamWriter(System.err));
private Reader reader;
+ private final Bindings globals;
private SimpleBindings bindings;
private boolean allowAllAccess;
@@ -51,6 +53,10 @@ final class GraalContext implements ScriptContext {
build();
// END: org.netbeans.libs.graalsdk.impl.GraalContext#SANDBOX
+ GraalContext(Bindings globals) {
+ this.globals = globals;
+ }
+
synchronized final Context ctx() {
if (ctx == null) {
final Context.Builder b = Context.newBuilder();
@@ -64,7 +70,7 @@ synchronized final Context ctx() {
}
}
b.allowPolyglotAccess(PolyglotAccess.ALL);
- if (allowAllAccess) {
+ if (Boolean.TRUE.equals(getAttribute(ALLOW_ALL_ACCESS, ScriptContext.GLOBAL_SCOPE))) {
b.allowHostAccess(HostAccess.ALL);
b.allowAllAccess(true);
} else {
@@ -75,7 +81,6 @@ synchronized final Context ctx() {
return ctx;
}
-
@Override
public void setBindings(Bindings bindings, int scope) {
throw new UnsupportedOperationException();
@@ -101,7 +106,7 @@ private void assertGlobalScope(int scope) throws IllegalArgumentException {
@Override
public void setAttribute(String name, Object value, int scope) {
assertGlobalScope(scope);
- if ("allowAllAccess".equals(name)) { // NOI18N
+ if (ALLOW_ALL_ACCESS.equals(name)) {
if (this.ctx == null) {
this.allowAllAccess = Boolean.TRUE.equals(value);
return;
@@ -114,10 +119,12 @@ public void setAttribute(String name, Object value, int scope) {
@Override
public Object getAttribute(String name, int scope) {
assertGlobalScope(scope);
- if ("allowAllAccess".equals(name)) { // NOI18N
- return this.allowAllAccess;
+ if (ALLOW_ALL_ACCESS.equals(name)) {
+ if (this.allowAllAccess) {
+ return true;
+ }
}
- return null;
+ return globals == null ? null : globals.get(name);
}
@Override
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEnginesProvider.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEnginesProvider.java
index 98072f8beca7..f8b15502888c 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEnginesProvider.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEnginesProvider.java
@@ -21,7 +21,9 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import javax.script.Bindings;
import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngineManager;
import org.graalvm.polyglot.Engine;
import org.graalvm.polyglot.Language;
import org.netbeans.spi.scripting.EngineProvider;
@@ -36,10 +38,15 @@ public GraalEnginesProvider() {
@Override
public List factories() {
+ return factories(null);
+ }
+
+ @Override
+ public List factories(ScriptEngineManager m) {
List arr = new ArrayList<>();
try {
if (disable == null) {
- enumerateLanguages(arr);
+ enumerateLanguages(arr, m == null ? null : m.getBindings());
}
} catch (IllegalStateException | LinkageError err) {
disable = err;
@@ -47,8 +54,8 @@ public List factories() {
return arr;
}
- private void enumerateLanguages(List arr) {
- final GraalContext ctx = new GraalContext();
+ private void enumerateLanguages(List arr, Bindings globals) {
+ final GraalContext ctx = new GraalContext(globals);
try (Engine engine = Engine.newBuilder().build()) {
for (Map.Entry entry : engine.getLanguages().entrySet()) {
arr.add(new GraalEngineFactory(ctx, entry.getKey(), entry.getValue()));
diff --git a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
index 6cd73af33db8..b2168820731f 100644
--- a/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
+++ b/ide/libs.graalsdk/test/unit/src/org/netbeans/libs/graalsdk/ScriptingTutorial.java
@@ -215,9 +215,9 @@ interface BinomQuantile {
public void callRFunctionFromJava() throws Exception {
// BEGIN: org.netbeans.libs.graalsdk.ScriptingTutorial#allowAllAccess
- ScriptEngine rEngine = Scripting.createManager().getEngineByMimeType("application/x-r");
// FastR currently needs access to native libraries:
- rEngine.getContext().setAttribute("allowAllAccess", true, ScriptContext.GLOBAL_SCOPE);
+ final ScriptEngineManager manager = Scripting.newBuilder().allowAllAccess(true).build();
+ ScriptEngine rEngine = manager.getEngineByMimeType("application/x-r");
// END: org.netbeans.libs.graalsdk.ScriptingTutorial#allowAllAccess
final Object funcRaw = rEngine.eval("qbinom");
@@ -226,6 +226,16 @@ public void callRFunctionFromJava() throws Exception {
}
// END: org.netbeans.libs.graalsdk.ScriptingTutorial#callRFunctionFromJava
+ public void testCallRFunctionFromJavaTheOldWay() throws Exception {
+ ScriptEngine rEngine = Scripting.createManager().getEngineByMimeType("application/x-r");
+ // FastR currently needs access to native libraries:
+ rEngine.getContext().setAttribute("allowAllAccess", true, ScriptContext.GLOBAL_SCOPE);
+
+ final Object funcRaw = rEngine.eval("qbinom");
+ BinomQuantile func = ((Invocable) rEngine).getInterface(funcRaw, BinomQuantile.class);
+ assertEquals(4, func.qbinom(0.37, 10, 0.5));
+ }
+
public void testCallJavaScriptFunctionsWithSharedStateFromJava() throws Exception {
callJavaScriptFunctionsWithSharedStateFromJava();
}
@@ -518,7 +528,7 @@ interface ParseJSON {
}
public void accessJavaScriptJSONObjectFromJava() throws Exception {
- String src =
+ String src =
"(function () { \n" +
" return function() {\n" +
" return [\n" +
diff --git a/platform/api.scripting/apichanges.xml b/platform/api.scripting/apichanges.xml
index 36d93c46b817..3ce0e4585e80 100644
--- a/platform/api.scripting/apichanges.xml
+++ b/platform/api.scripting/apichanges.xml
@@ -30,6 +30,24 @@
+
+
+
+ Scripting is now a builder!
+
+
+
+
+
+
+ Use
+ Scripting.newBuilder().build()
+ to obtain enhanced and secured version of
+ ScriptEngineManager .
+
+
+
+
diff --git a/platform/api.scripting/arch.xml b/platform/api.scripting/arch.xml
index 46f415586ed7..d9c571e65285 100644
--- a/platform/api.scripting/arch.xml
+++ b/platform/api.scripting/arch.xml
@@ -34,11 +34,11 @@
@@ -260,7 +260,7 @@
versions of itself? Can you correctly read all old settings? Will future
versions be able to read your current settings? Can you read
or politely ignore settings stored by a future version?
-
+
Very helpful for reading settings is to store version number
there, so future versions can decide whether how to read/convert
@@ -280,7 +280,7 @@
Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
- It is expected that if your module runs on 1.x that it will run
+ It is expected that if your module runs on 1.x that it will run
on 1.x+1 if no, state that please. Also describe here cases where
you run different code on different versions of JRE and why.
@@ -337,7 +337,7 @@
+
+ If Scripting.allowAllAccess
+ is used, then a property allowAllAccess is placed into the
+ ScriptManager.getBindings() with value true.
+
@@ -575,7 +580,7 @@
@@ -1019,9 +1024,9 @@
@@ -1064,7 +1069,7 @@
Does your module mask/hide/override any resources provided by other modules in
their layers?
-
+
If you mask a file provided by another module, you probably depend
on that and do not want the other module to (for example) change
@@ -1084,7 +1089,7 @@