Skip to content

Commit 8fe6598

Browse files
committed
[GR-28711] Provide a clearer invalidation message when a method is overridden
PullRequest: truffleruby/2644
2 parents 290085d + ca8d6b0 commit 8fe6598

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

mx.truffleruby/suite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"name": "regex",
99
"subdir": True,
10-
"version": "c7c061b3230852e9582badf788b3dab74a809ca9",
10+
"version": "d5ec6c894350b4b8c927f877f4e6994a6cd7e8b6",
1111
"urls": [
1212
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
1313
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},
@@ -16,7 +16,7 @@
1616
{
1717
"name": "sulong",
1818
"subdir": True,
19-
"version": "c7c061b3230852e9582badf788b3dab74a809ca9",
19+
"version": "d5ec6c894350b4b8c927f877f4e6994a6cd7e8b6",
2020
"urls": [
2121
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
2222
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},

src/main/java/org/truffleruby/core/method/MethodEntry.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
*/
1010
package org.truffleruby.core.method;
1111

12+
import org.truffleruby.core.module.RubyModule;
1213
import org.truffleruby.language.methods.InternalMethod;
1314

1415
import com.oracle.truffle.api.Assumption;
1516
import com.oracle.truffle.api.Truffle;
17+
import org.truffleruby.language.methods.SharedMethodInfo;
1618

1719
public final class MethodEntry {
1820

@@ -21,12 +23,12 @@ public final class MethodEntry {
2123

2224
public MethodEntry(InternalMethod method) {
2325
assert method != null;
24-
this.assumption = Truffle.getRuntime().createAssumption();
26+
this.assumption = Truffle.getRuntime().createAssumption("method is not overridden:");
2527
this.method = method;
2628
}
2729

2830
public MethodEntry() {
29-
this.assumption = Truffle.getRuntime().createAssumption();
31+
this.assumption = Truffle.getRuntime().createAssumption("method is not defined:");
3032
this.method = null;
3133
}
3234

@@ -46,8 +48,8 @@ public InternalMethod getMethod() {
4648
return method;
4749
}
4850

49-
public void invalidate(String message) {
50-
assumption.invalidate(message);
51+
public void invalidate(RubyModule module, String methodName) {
52+
assumption.invalidate(SharedMethodInfo.moduleAndMethodName(module, methodName));
5153
}
5254

5355
}

src/main/java/org/truffleruby/core/module/ModuleFields.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import org.truffleruby.language.library.RubyStringLibrary;
5151
import org.truffleruby.language.loader.ReentrantLockFreeingMap;
5252
import org.truffleruby.language.methods.InternalMethod;
53-
import org.truffleruby.language.methods.SharedMethodInfo;
5453
import org.truffleruby.language.objects.ObjectGraph;
5554
import org.truffleruby.language.objects.ObjectGraphNode;
5655
import org.truffleruby.language.objects.classvariables.ClassVariableStorage;
@@ -462,7 +461,7 @@ public void addMethod(RubyContext context, Node currentNode, InternalMethod meth
462461

463462
if (!context.getCoreLibrary().isInitializing()) {
464463
if (previousMethodEntry != null) {
465-
previousMethodEntry.invalidate(SharedMethodInfo.moduleAndMethodName(rubyModule, method.getName()));
464+
previousMethodEntry.invalidate(rubyModule, method.getName());
466465
}
467466
// invalidate assumptions to not use an AST-inlined methods
468467
changedMethod(method.getName());
@@ -491,7 +490,7 @@ public boolean removeMethod(String methodName) {
491490

492491
MethodEntry removedEntry = methods.remove(methodName);
493492
if (removedEntry != null) {
494-
removedEntry.invalidate(SharedMethodInfo.moduleAndMethodName(rubyModule, methodName));
493+
removedEntry.invalidate(rubyModule, methodName);
495494
}
496495

497496
changedMethod(methodName);
@@ -741,7 +740,7 @@ public void newMethodsVersion(List<String> methodsToInvalidate) {
741740
if (methodEntry == null) {
742741
break;
743742
} else {
744-
methodEntry.invalidate(SharedMethodInfo.moduleAndMethodName(rubyModule, entryToInvalidate));
743+
methodEntry.invalidate(rubyModule, entryToInvalidate);
745744
if (methods.replace(entryToInvalidate, methodEntry, methodEntry.withNewAssumption())) {
746745
break;
747746
}

0 commit comments

Comments
 (0)