-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WarningBenchmarks 5000% regressions on 2025-02-11 #12258
Comments
Running enso/tools/performance/engine-benchmarks$ ./bench_download.py -s engine -b develop wip/jtulach/BuiltinArgNode11827 shows that benchmarks were fine and even faster, but regressed with one of the last commits in the PR: The culprit must be between
There is a bunch of commits and a merge in the range, so bisecting will be needed. |
After bisecting:
Let's see what e6af654 has done: It's warnings.hasWarnings. |
Good benchmarks at a829bdb run at this speed
I can get to same or even better number:
with the following patch: diff --git a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/BuiltinRootNode.java b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/BuiltinRootNode.java
index 86eaa3997e..d873fdc6ad 100644
--- a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/BuiltinRootNode.java
+++ b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/BuiltinRootNode.java
@@ -22,6 +22,7 @@ import org.enso.interpreter.runtime.error.PanicException;
import org.enso.interpreter.runtime.error.PanicSentinel;
import org.enso.interpreter.runtime.warning.AppendWarningNode;
import org.enso.interpreter.runtime.warning.WarningsLibrary;
+import org.enso.interpreter.runtime.warning.WithWarnings;
import org.enso.pkg.QualifiedName;
/** Root node for use by all the builtin functions. */
@@ -137,7 +138,7 @@ public abstract class BuiltinRootNode extends RootNode {
throw sentinel;
}
if (warnings != null) {
- if (warnings.hasWarnings(value)) {
+ if (value instanceof WithWarnings) {
if (mapInsertAllNode == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
this.mapInsertAllNode = insert(HashMapInsertAllNode.build());
@@ -148,6 +149,13 @@ public abstract class BuiltinRootNode extends RootNode {
} catch (UnsupportedMessageException ex) {
throw raise(RuntimeException.class, ex);
}
+ } else {
+ /*
+ if (warnings.hasWarnings(value)) {
+ CompilerDirectives.transferToInterpreter();
+ new Exception("Special warnings for value: " + value).printStackTrace();
+ }
+ */
}
}
if (is(REQUIRES_CAST) && type != Object.class) {
diff --git a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/AtVectorNode.java b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/AtVectorNode.java
index 73519af7a1..6c58c2b733 100644
--- a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/AtVectorNode.java
+++ b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/AtVectorNode.java
@@ -3,6 +3,7 @@ package org.enso.interpreter.node.expression.builtin.immutable;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.interop.InvalidArrayIndexException;
import com.oracle.truffle.api.nodes.Node;
+import org.enso.interpreter.dsl.AcceptsWarning;
import org.enso.interpreter.dsl.BuiltinMethod;
import org.enso.interpreter.runtime.EnsoContext;
import org.enso.interpreter.runtime.data.vector.ArrayLikeAtNode;
@@ -18,7 +19,7 @@ public class AtVectorNode extends Node {
private @Child ArrayLikeAtNode at = ArrayLikeAtNode.create();
private @Child ArrayLikeLengthNode length;
- Object execute(Object arrayLike, long index) {
+ Object execute(@AcceptsWarning Object arrayLike, @AcceptsWarning long index) {
try {
long actualIndex = index < 0 ? index + len(arrayLike) : index;
return at.executeAt(arrayLike, actualIndex);
diff --git a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/LengthVectorNode.java b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/LengthVectorNode.java
index 29c65fea60..839dbf277f 100644
--- a/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/LengthVectorNode.java
+++ b/engine/runtime/src/main/java/org/enso/interpreter/node/expression/builtin/immutable/LengthVectorNode.java
@@ -1,6 +1,7 @@
package org.enso.interpreter.node.expression.builtin.immutable;
import com.oracle.truffle.api.nodes.Node;
+import org.enso.interpreter.dsl.AcceptsWarning;
import org.enso.interpreter.dsl.BuiltinMethod;
import org.enso.interpreter.runtime.data.vector.ArrayLikeLengthNode;
@@ -11,7 +12,7 @@ import org.enso.interpreter.runtime.data.vector.ArrayLikeLengthNode;
public class LengthVectorNode extends Node {
@Child ArrayLikeLengthNode length = ArrayLikeLengthNode.create();
- long execute(Object arrayLike) {
+ long execute(@AcceptsWarning Object arrayLike) {
return length.executeLength(arrayLike);
}
}
diff --git a/engine/runtime/src/main/java/org/enso/interpreter/runtime/data/vector/ArrayLikeAtNode.java b/engine/runtime/src/main/java/org/enso/interpreter/runtime/data/vector/ArrayLikeAtNode.java
index 37ed33437d..7b36d923a6 100644
--- a/engine/runtime/src/main/java/org/enso/interpreter/runtime/data/vector/ArrayLikeAtNode.java
+++ b/engine/runtime/src/main/java/org/enso/interpreter/runtime/data/vector/ArrayLikeAtNode.java
@@ -10,13 +10,15 @@ import com.oracle.truffle.api.interop.InvalidArrayIndexException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.library.CachedLibrary;
import com.oracle.truffle.api.nodes.Node;
+import org.enso.interpreter.dsl.AcceptsWarning;
import org.enso.interpreter.node.expression.foreign.HostValueToEnsoNode;
import org.enso.interpreter.runtime.warning.AppendWarningNode;
import org.enso.interpreter.runtime.warning.WarningsLibrary;
@GenerateUncached
public abstract class ArrayLikeAtNode extends Node {
- public abstract Object executeAt(Object arrayLike, long index) throws InvalidArrayIndexException;
+ public abstract Object executeAt(@AcceptsWarning Object arrayLike, @AcceptsWarning long index)
+ throws InvalidArrayIndexException;
@NeverDefault
public static ArrayLikeAtNode create() {
|
Jaroslav Tulach reports a new STANDUP for yesterday (2025-03-02): Progress: .
|
+5000% regressions in
WarningBenchmarks
on 2025-02-11 caused by warnings.hasWarnings call:BuiltinRootNode.ArgNode
to extract argument for a builtin method #12201To run single benchmark:
The text was updated successfully, but these errors were encountered: