Skip to content

Commit

Permalink
Showing 2 changed files with 103 additions and 103 deletions.
102 changes: 51 additions & 51 deletions truffle/src/main/java/org/jruby/truffle/interop/ForeignReadNode.java
Original file line number Diff line number Diff line change
@@ -43,8 +43,8 @@ public final class ForeignReadNode extends ForeignReadBaseNode {
@Child private StringCachingHelperNode helperNode;

@Override
public Object access(VirtualFrame frame, DynamicObject object, Object label) {
return getHelperNode().executeStringCachingHelper(frame, object, label);
public Object access(VirtualFrame frame, DynamicObject object, Object name) {
return getHelperNode().executeStringCachingHelper(frame, object, name);
}

private StringCachingHelperNode getHelperNode() {
@@ -61,99 +61,99 @@ private StringCachingHelperNode getHelperNode() {
@ImportStatic(StringCachingGuards.class)
@NodeChildren({
@NodeChild("receiver"),
@NodeChild("label")
@NodeChild("name")
})
protected static abstract class StringCachingHelperNode extends RubyNode {

public StringCachingHelperNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

public abstract Object executeStringCachingHelper(VirtualFrame frame, DynamicObject receiver, Object label);
public abstract Object executeStringCachingHelper(VirtualFrame frame, DynamicObject receiver, Object name);

@Specialization(
guards = {
"isRubyString(label)",
"ropesEqual(label, cachedRope)"
"isRubyString(name)",
"ropesEqual(name, cachedRope)"
},
limit = "getCacheLimit()"
)
public Object cacheStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("privatizeRope(label)") Rope cachedRope,
DynamicObject name,
@Cached("privatizeRope(name)") Rope cachedRope,
@Cached("ropeToString(cachedRope)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, label, cachedString, cachedStartsWithAt);
return nextHelper.executeStringCachedHelper(frame, receiver, name, cachedString, cachedStartsWithAt);
}

@Specialization(
guards = "isRubyString(label)",
guards = "isRubyString(name)",
contains = "cacheStringAndForward"
)
public Object uncachedStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString, startsWithAt(labelString));
final String nameString = objectToString(name);
return nextHelper.executeStringCachedHelper(frame, receiver, name, nameString, startsWithAt(nameString));
}

@Specialization(
guards = {
"isRubySymbol(label)",
"label == cachedLabel"
"isRubySymbol(name)",
"name == cachedName"
},
limit = "getCacheLimit()"
)
public Object cacheSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("label") DynamicObject cachedLabel,
@Cached("objectToString(cachedLabel)") String cachedString,
DynamicObject name,
@Cached("name") DynamicObject cachedName,
@Cached("objectToString(cachedName)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedString, cachedStartsWithAt);
return nextHelper.executeStringCachedHelper(frame, receiver, cachedName, cachedString, cachedStartsWithAt);
}

@Specialization(
guards = "isRubySymbol(label)",
guards = "isRubySymbol(name)",
contains = "cacheSymbolAndForward"
)
public Object uncachedSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString, startsWithAt(labelString));
final String nameString = objectToString(name);
return nextHelper.executeStringCachedHelper(frame, receiver, name, nameString, startsWithAt(nameString));
}

@Specialization(
guards = "label == cachedLabel",
guards = "name == cachedName",
limit = "getCacheLimit()"
)
public Object cacheJavaStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
String label,
@Cached("label") String cachedLabel,
@Cached("startsWithAt(cachedLabel)") boolean cachedStartsWithAt,
String name,
@Cached("name") String cachedName,
@Cached("startsWithAt(cachedName)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedLabel, cachedStartsWithAt);
return nextHelper.executeStringCachedHelper(frame, receiver, cachedName, cachedName, cachedStartsWithAt);
}

@Specialization(contains = "cacheJavaStringAndForward")
public Object uncachedJavaStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
String label,
String name,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, label, label, startsWithAt(label));
return nextHelper.executeStringCachedHelper(frame, receiver, name, name, startsWithAt(name));
}

protected StringCachedHelperNode createNextHelper() {
@@ -170,8 +170,8 @@ protected String ropeToString(Rope rope) {
}

@TruffleBoundary
protected boolean startsWithAt(String label) {
return !label.isEmpty() && label.charAt(0) == '@';
protected boolean startsWithAt(String name) {
return !name.isEmpty() && name.charAt(0) == '@';
}

@Specialization(guards = {
@@ -212,8 +212,8 @@ protected int getCacheLimit() {

@NodeChildren({
@NodeChild("receiver"),
@NodeChild("label"),
@NodeChild("stringLabel"),
@NodeChild("name"),
@NodeChild("stringName"),
@NodeChild("startsAt")
})
protected static abstract class StringCachedHelperNode extends RubyNode {
@@ -228,56 +228,56 @@ public StringCachedHelperNode(RubyContext context, SourceSection sourceSection)
super(context, sourceSection);
}

public abstract Object executeStringCachedHelper(VirtualFrame frame, DynamicObject receiver, Object label,
String stringLabel, boolean startsAt);
public abstract Object executeStringCachedHelper(VirtualFrame frame, DynamicObject receiver, Object name,
String stringName, boolean startsAt);

@Specialization(guards = "startsAt(startsAt)")
public Object readInstanceVariable(
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt,
@Cached("createReadObjectFieldNode(stringLabel)") ReadObjectFieldNode readObjectFieldNode) {
@Cached("createReadObjectFieldNode(stringName)") ReadObjectFieldNode readObjectFieldNode) {
return readObjectFieldNode.execute(receiver);
}

protected boolean startsAt(boolean startsAt) {
return startsAt;
}

protected ReadObjectFieldNode createReadObjectFieldNode(String label) {
return ReadObjectFieldNodeGen.create(getContext(), label, nil());
protected ReadObjectFieldNode createReadObjectFieldNode(String name) {
return ReadObjectFieldNodeGen.create(getContext(), name, nil());
}

@Specialization(
guards = {
"notStartsAt(startsAt)",
"methodDefined(frame, receiver, stringLabel, getDefinedNode())"
"methodDefined(frame, receiver, stringName, getDefinedNode())"
}
)
public Object callMethod(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt) {
return getCallNode().call(frame, receiver, stringLabel, null);
return getCallNode().call(frame, receiver, stringName, null);
}

@Specialization(
guards = {
"notStartsAt(startsAt)",
"!methodDefined(frame, receiver, stringLabel, getDefinedNode())",
"!methodDefined(frame, receiver, stringName, getDefinedNode())",
"methodDefined(frame, receiver, INDEX_METHOD_NAME, getIndexDefinedNode())"
}
)
public Object index(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt) {
return getCallNode().call(frame, receiver, "[]", null, label);
return getCallNode().call(frame, receiver, "[]", null, name);
}

protected boolean notStartsAt(boolean startsAt) {
@@ -302,9 +302,9 @@ protected DoesRespondDispatchHeadNode getIndexDefinedNode() {
return indexDefinedNode;
}

protected boolean methodDefined(VirtualFrame frame, DynamicObject receiver, String stringLabel,
protected boolean methodDefined(VirtualFrame frame, DynamicObject receiver, String stringName,
DoesRespondDispatchHeadNode definedNode) {
return definedNode.doesRespondTo(frame, stringLabel, receiver);
return definedNode.doesRespondTo(frame, stringName, receiver);
}

protected CallDispatchHeadNode getCallNode() {
104 changes: 52 additions & 52 deletions truffle/src/main/java/org/jruby/truffle/interop/ForeignWriteNode.java
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ private StringCachingHelperNode getHelperNode() {
@ImportStatic(StringCachingGuards.class)
@NodeChildren({
@NodeChild("receiver"),
@NodeChild("label"),
@NodeChild("name"),
@NodeChild("value")
})
protected static abstract class StringCachingHelperNode extends RubyNode {
@@ -70,101 +70,101 @@ public StringCachingHelperNode(RubyContext context, SourceSection sourceSection)
}

public abstract Object executeStringCachingHelper(VirtualFrame frame, DynamicObject receiver,
Object label, Object value);
Object name, Object value);

@Specialization(
guards = {
"isRubyString(label)",
"ropesEqual(label, cachedRope)"
"isRubyString(name)",
"ropesEqual(name, cachedRope)"
},
limit = "getCacheLimit()"
)
public Object cacheStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
Object value,
@Cached("privatizeRope(label)") Rope cachedRope,
@Cached("privatizeRope(name)") Rope cachedRope,
@Cached("ropeToString(cachedRope)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, label, cachedString, cachedStartsWithAt, value);
return nextHelper.executeStringCachedHelper(frame, receiver, name, cachedString, cachedStartsWithAt, value);
}

@Specialization(
guards = "isRubyString(label)",
guards = "isRubyString(name)",
contains = "cacheStringAndForward"
)
public Object uncachedStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
Object value,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString,
startsWithAt(labelString), value);
final String nameString = objectToString(name);
return nextHelper.executeStringCachedHelper(frame, receiver, name, nameString,
startsWithAt(nameString), value);
}

@Specialization(
guards = {
"isRubySymbol(label)",
"label == cachedLabel"
"isRubySymbol(name)",
"name == cachedName"
},
limit = "getCacheLimit()"
)
public Object cacheSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
Object value,
@Cached("label") DynamicObject cachedLabel,
@Cached("objectToString(cachedLabel)") String cachedString,
@Cached("name") DynamicObject cachedName,
@Cached("objectToString(cachedName)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedString,
return nextHelper.executeStringCachedHelper(frame, receiver, cachedName, cachedString,
cachedStartsWithAt, value);
}

@Specialization(
guards = "isRubySymbol(label)",
guards = "isRubySymbol(name)",
contains = "cacheSymbolAndForward"
)
public Object uncachedSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
DynamicObject name,
Object value,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString,
startsWithAt(labelString), value);
final String nameString = objectToString(name);
return nextHelper.executeStringCachedHelper(frame, receiver, name, nameString,
startsWithAt(nameString), value);
}

@Specialization(
guards = "label == cachedLabel",
guards = "name == cachedName",
limit = "getCacheLimit()"
)
public Object cacheJavaStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
String label,
String name,
Object value,
@Cached("label") String cachedLabel,
@Cached("startsWithAt(cachedLabel)") boolean cachedStartsWithAt,
@Cached("name") String cachedName,
@Cached("startsWithAt(cachedName)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedLabel,
return nextHelper.executeStringCachedHelper(frame, receiver, cachedName, cachedName,
cachedStartsWithAt, value);
}

@Specialization(contains = "cacheJavaStringAndForward")
public Object uncachedJavaStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
String label,
String name,
Object value,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, label, label, startsWithAt(label), value);
return nextHelper.executeStringCachedHelper(frame, receiver, name, name, startsWithAt(name), value);
}

protected StringCachedHelperNode createNextHelper() {
@@ -182,8 +182,8 @@ protected String ropeToString(Rope rope) {
}

@CompilerDirectives.TruffleBoundary
protected boolean startsWithAt(String label) {
return !label.isEmpty() && label.charAt(0) == '@';
protected boolean startsWithAt(String name) {
return !name.isEmpty() && name.charAt(0) == '@';
}

protected int getCacheLimit() {
@@ -194,8 +194,8 @@ protected int getCacheLimit() {

@NodeChildren({
@NodeChild("receiver"),
@NodeChild("label"),
@NodeChild("stringLabel"),
@NodeChild("name"),
@NodeChild("stringName"),
@NodeChild("startsAt"),
@NodeChild("value")
})
@@ -211,17 +211,17 @@ public StringCachedHelperNode(RubyContext context, SourceSection sourceSection)
super(context, sourceSection);
}

public abstract Object executeStringCachedHelper(VirtualFrame frame, DynamicObject receiver, Object label,
String stringLabel, boolean startsAt, Object value);
public abstract Object executeStringCachedHelper(VirtualFrame frame, DynamicObject receiver, Object name,
String stringName, boolean startsAt, Object value);

@Specialization(guards = "startsAt(startsAt)")
public Object readInstanceVariable(
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt,
Object value,
@Cached("createWriteObjectFieldNode(stringLabel)") WriteObjectFieldNode writeObjectFieldNode) {
@Cached("createWriteObjectFieldNode(stringName)") WriteObjectFieldNode writeObjectFieldNode) {
writeObjectFieldNode.execute(receiver, value);
return value;
}
@@ -230,8 +230,8 @@ protected boolean startsAt(boolean startsAt) {
return startsAt;
}

protected WriteObjectFieldNode createWriteObjectFieldNode(String label) {
return WriteObjectFieldNodeGen.create(getContext(), label);
protected WriteObjectFieldNode createWriteObjectFieldNode(String name) {
return WriteObjectFieldNodeGen.create(getContext(), name);
}

@Specialization(
@@ -243,16 +243,16 @@ protected WriteObjectFieldNode createWriteObjectFieldNode(String label) {
public Object callMethod(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt,
Object value,
@Cached("createWriteMethodName(stringLabel)") String writeMethodName) {
@Cached("createWriteMethodName(stringName)") String writeMethodName) {
return getCallNode().call(frame, receiver, writeMethodName, null, value);
}

protected String createWriteMethodName(String label) {
return label + "=";
protected String createWriteMethodName(String name) {
return name + "=";
}

@Specialization(
@@ -265,12 +265,12 @@ protected String createWriteMethodName(String label) {
public Object index(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
Object name,
String stringName,
boolean startsAt,
Object value,
@Cached("createWriteMethodName(stringLabel)") String writeMethodName) {
return getCallNode().call(frame, receiver, "[]", null, label, value);
@Cached("createWriteMethodName(stringName)") String writeMethodName) {
return getCallNode().call(frame, receiver, "[]", null, name, value);
}

protected boolean notStartsAt(boolean startsAt) {
@@ -295,9 +295,9 @@ protected DoesRespondDispatchHeadNode getIndexDefinedNode() {
return indexDefinedNode;
}

protected boolean methodDefined(VirtualFrame frame, DynamicObject receiver, String stringLabel,
protected boolean methodDefined(VirtualFrame frame, DynamicObject receiver, String stringName,
DoesRespondDispatchHeadNode definedNode) {
return definedNode.doesRespondTo(frame, stringLabel, receiver);
return definedNode.doesRespondTo(frame, stringName, receiver);
}

protected CallDispatchHeadNode getCallNode() {

0 comments on commit 296f740

Please sign in to comment.