Skip to content

Commit e550e5a

Browse files
committed
Convert CheckIVarNameNode to DSL inlinable node
1 parent f404b95 commit e550e5a

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

src/main/java/org/truffleruby/core/kernel/KernelNodes.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ boolean isInstanceVariableDefined(RubyDynamicObject object, Object name,
994994
@CachedLibrary(limit = "getDynamicObjectCacheLimit()") DynamicObjectLibrary objectLibrary,
995995
@Cached NameToJavaStringNode nameToJavaStringNode) {
996996
final String nameString = nameToJavaStringNode.execute(this, name);
997-
checkIVarNameNode.execute(object, nameString, name);
997+
checkIVarNameNode.execute(this, object, nameString, name);
998998
return objectLibrary.containsKey(object, nameString);
999999
}
10001000

@@ -1013,7 +1013,7 @@ Object instanceVariableGetSymbol(RubyDynamicObject object, Object name,
10131013
@CachedLibrary(limit = "getDynamicObjectCacheLimit()") DynamicObjectLibrary objectLibrary,
10141014
@Cached @Shared NameToJavaStringNode nameToJavaStringNode) {
10151015
final String nameString = nameToJavaStringNode.execute(this, name);
1016-
checkIVarNameNode.execute(object, nameString, name);
1016+
checkIVarNameNode.execute(this, object, nameString, name);
10171017
return objectLibrary.getOrDefault(object, nameString, nil);
10181018
}
10191019

@@ -1022,7 +1022,7 @@ Object immutable(Object object, Object name,
10221022
@Cached @Shared CheckIVarNameNode checkIVarNameNode,
10231023
@Cached @Shared NameToJavaStringNode nameToJavaStringNode) {
10241024
final String nameString = nameToJavaStringNode.execute(this, name);
1025-
checkIVarNameNode.execute(object, nameString, name);
1025+
checkIVarNameNode.execute(this, object, nameString, name);
10261026
return nil;
10271027
}
10281028
}
@@ -1037,7 +1037,7 @@ Object instanceVariableSet(RubyDynamicObject object, Object name, Object value,
10371037
@Cached @Shared NameToJavaStringNode nameToJavaStringNode,
10381038
@Cached TypeNodes.CheckFrozenNode raiseIfFrozenNode) {
10391039
final String nameString = nameToJavaStringNode.execute(this, name);
1040-
checkIVarNameNode.execute(object, nameString, name);
1040+
checkIVarNameNode.execute(this, object, nameString, name);
10411041
raiseIfFrozenNode.execute(this, object);
10421042
writeNode.execute(this, object, nameString, value);
10431043
return value;
@@ -1048,7 +1048,7 @@ Object immutable(Object object, Object name, Object value,
10481048
@Cached @Shared CheckIVarNameNode checkIVarNameNode,
10491049
@Cached @Shared NameToJavaStringNode nameToJavaStringNode) {
10501050
final String nameString = nameToJavaStringNode.execute(this, name);
1051-
checkIVarNameNode.execute(object, nameString, name);
1051+
checkIVarNameNode.execute(this, object, nameString, name);
10521052
throw new RaiseException(getContext(), coreExceptions().frozenError(object, this));
10531053
}
10541054
}
@@ -1062,7 +1062,7 @@ Object removeInstanceVariable(RubyDynamicObject object, Object name,
10621062
@Cached @Shared NameToJavaStringNode nameToJavaStringNode,
10631063
@Cached TypeNodes.CheckFrozenNode raiseIfFrozenNode) {
10641064
final String nameString = nameToJavaStringNode.execute(this, name);
1065-
checkIVarNameNode.execute(object, nameString, name);
1065+
checkIVarNameNode.execute(this, object, nameString, name);
10661066
raiseIfFrozenNode.execute(this, object);
10671067
return removeIVar(object, nameString);
10681068
}
@@ -1072,7 +1072,7 @@ Object immutable(Object object, Object name,
10721072
@Cached @Shared CheckIVarNameNode checkIVarNameNode,
10731073
@Cached @Shared NameToJavaStringNode nameToJavaStringNode) {
10741074
final String nameString = nameToJavaStringNode.execute(this, name);
1075-
checkIVarNameNode.execute(object, nameString, name);
1075+
checkIVarNameNode.execute(this, object, nameString, name);
10761076
throw new RaiseException(getContext(), coreExceptions().frozenError(object, this));
10771077
}
10781078

src/main/java/org/truffleruby/language/objects/CheckIVarNameNode.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
package org.truffleruby.language.objects;
1111

1212
import com.oracle.truffle.api.dsl.Cached.Shared;
13+
import com.oracle.truffle.api.dsl.GenerateCached;
14+
import com.oracle.truffle.api.dsl.GenerateInline;
15+
import com.oracle.truffle.api.nodes.Node;
1316
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
1417
import org.truffleruby.core.symbol.RubySymbol;
1518
import org.truffleruby.language.RubyBaseNode;
@@ -22,40 +25,40 @@
2225
import com.oracle.truffle.api.dsl.Specialization;
2326

2427
@ImportStatic(Identifiers.class)
28+
@GenerateInline
29+
@GenerateCached(false)
2530
public abstract class CheckIVarNameNode extends RubyBaseNode {
2631

2732
/** Pass both the j.l.String name and the original name, the original name can be faster to check and the j.l.String
2833
* name is needed by all callers so it is better for footprint that callers convert to j.l.String */
29-
public abstract void execute(Object object, String name, Object originalName);
34+
public abstract void execute(Node node, Object object, String name, Object originalName);
3035

3136
@Specialization
32-
void checkSymbol(Object object, String name, RubySymbol originalName,
37+
static void checkSymbol(Node node, Object object, String name, RubySymbol originalName,
3338
@Cached @Shared InlinedBranchProfile errorProfile) {
3439
if (originalName.getType() != IdentifierType.INSTANCE) {
35-
errorProfile.enter(this);
36-
throw new RaiseException(getContext(), getContext().getCoreExceptions().nameErrorInstanceNameNotAllowable(
37-
name,
38-
object,
39-
this));
40+
errorProfile.enter(node);
41+
throw new RaiseException(getContext(node),
42+
getContext(node).getCoreExceptions().nameErrorInstanceNameNotAllowable(name, object, node));
4043
}
4144
}
4245

4346
@Specialization(
4447
guards = { "name == cachedName", "isValidInstanceVariableName(cachedName)", "!isRubySymbol(originalName)" },
4548
limit = "getDynamicObjectCacheLimit()")
46-
void cached(Object object, String name, Object originalName,
49+
static void cached(Object object, String name, Object originalName,
4750
@Cached("name") String cachedName) {
4851
}
4952

5053
@Specialization(replaces = "cached", guards = "!isRubySymbol(originalName)")
51-
void uncached(Object object, String name, Object originalName,
54+
static void uncached(Node node, Object object, String name, Object originalName,
5255
@Cached @Shared InlinedBranchProfile errorProfile) {
5356
if (!Identifiers.isValidInstanceVariableName(name)) {
54-
errorProfile.enter(this);
55-
throw new RaiseException(getContext(), coreExceptions().nameErrorInstanceNameNotAllowable(
57+
errorProfile.enter(node);
58+
throw new RaiseException(getContext(node), coreExceptions(node).nameErrorInstanceNameNotAllowable(
5659
name,
5760
object,
58-
this));
61+
node));
5962
}
6063
}
6164
}

0 commit comments

Comments
 (0)