Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: f1280b16bf9a
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 24f9380267f1
Choose a head ref
  • 4 commits
  • 7 files changed
  • 1 contributor

Commits on Apr 5, 2016

  1. Copy the full SHA
    63bb793 View commit details
  2. Copy the full SHA
    e7d3c0e View commit details
  3. Copy the full SHA
    55469e9 View commit details
  4. Copy the full SHA
    24f9380 View commit details
Original file line number Diff line number Diff line change
@@ -74,11 +74,12 @@ public HelperNode(RubyContext context,
},
limit = "getCacheLimit()"
)
protected Object callProcCached(VirtualFrame frame,
DynamicObject proc,
Object[] arguments,
@Cached("proc") DynamicObject cachedProc,
@Cached("create(getProcCallTarget(cachedProc))") DirectCallNode callNode) {
protected Object callProcCached(
VirtualFrame frame,
DynamicObject proc,
Object[] arguments,
@Cached("proc") DynamicObject cachedProc,
@Cached("create(getProcCallTarget(cachedProc))") DirectCallNode callNode) {
return callNode.call(
frame,
RubyArguments.pack(
@@ -96,10 +97,11 @@ protected Object callProcCached(VirtualFrame frame,
guards = "isRubyProc(proc)",
contains = "callProcCached"
)
protected Object callProcUncached(VirtualFrame frame,
DynamicObject proc,
Object[] arguments,
@Cached("create()") IndirectCallNode callNode) {
protected Object callProcUncached(
VirtualFrame frame,
DynamicObject proc,
Object[] arguments,
@Cached("create()") IndirectCallNode callNode) {
return callNode.call(
frame,
getProcCallTarget(proc),
@@ -125,12 +127,13 @@ protected CallTarget getProcCallTarget(DynamicObject proc) {
},
limit = "getCacheLimit()"
)
protected Object callMethodCached(VirtualFrame frame,
DynamicObject method,
Object[] arguments,
@Cached("method") DynamicObject cachedMethod,
@Cached("getMethod(cachedMethod)") InternalMethod cachedInternalMethod,
@Cached("create(cachedInternalMethod.getCallTarget())") DirectCallNode callNode) {
protected Object callMethodCached(
VirtualFrame frame,
DynamicObject method,
Object[] arguments,
@Cached("method") DynamicObject cachedMethod,
@Cached("getMethod(cachedMethod)") InternalMethod cachedInternalMethod,
@Cached("create(cachedInternalMethod.getCallTarget())") DirectCallNode callNode) {
return callNode.call(
frame,
RubyArguments.pack(
@@ -148,10 +151,11 @@ protected Object callMethodCached(VirtualFrame frame,
guards = "isRubyMethod(method)",
contains = "callMethodCached"
)
protected Object callMethodUncached(VirtualFrame frame,
DynamicObject method,
Object[] arguments,
@Cached("create()") IndirectCallNode callNode) {
protected Object callMethodUncached(
VirtualFrame frame,
DynamicObject method,
Object[] arguments,
@Cached("create()") IndirectCallNode callNode) {
final InternalMethod internalMethod = getMethod(method);
return callNode.call(
frame,
103 changes: 56 additions & 47 deletions truffle/src/main/java/org/jruby/truffle/interop/ForeignReadNode.java
Original file line number Diff line number Diff line change
@@ -78,24 +78,26 @@ public StringCachingHelperNode(RubyContext context, SourceSection sourceSection)
},
limit = "getCacheLimit()"
)
public Object cacheStringAndForward(VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("privatizeRope(label)") Rope cachedRope,
@Cached("ropeToString(cachedRope)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
public Object cacheStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("privatizeRope(label)") Rope cachedRope,
@Cached("ropeToString(cachedRope)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, label, cachedString, cachedStartsWithAt);
}

@Specialization(
guards = "isRubyString(label)",
contains = "cacheStringAndForward"
)
public Object uncachedStringAndForward(VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
public Object uncachedStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString, startsWithAt(labelString));
}
@@ -107,24 +109,26 @@ public Object uncachedStringAndForward(VirtualFrame frame,
},
limit = "getCacheLimit()"
)
public Object cacheSymbolAndForward(VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("label") DynamicObject cachedLabel,
@Cached("objectToString(cachedLabel)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
public Object cacheSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("label") DynamicObject cachedLabel,
@Cached("objectToString(cachedLabel)") String cachedString,
@Cached("startsWithAt(cachedString)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedString, cachedStartsWithAt);
}

@Specialization(
guards = "isRubySymbol(label)",
contains = "cacheSymbolAndForward"
)
public Object uncachedSymbolAndForward(VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
public Object uncachedSymbolAndForward(
VirtualFrame frame,
DynamicObject receiver,
DynamicObject label,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
final String labelString = objectToString(label);
return nextHelper.executeStringCachedHelper(frame, receiver, label, labelString, startsWithAt(labelString));
}
@@ -133,20 +137,22 @@ public Object uncachedSymbolAndForward(VirtualFrame frame,
guards = "label == cachedLabel",
limit = "getCacheLimit()"
)
public Object cacheJavaStringAndForward(VirtualFrame frame,
DynamicObject receiver,
String label,
@Cached("label") String cachedLabel,
@Cached("startsWithAt(cachedLabel)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
public Object cacheJavaStringAndForward(
VirtualFrame frame,
DynamicObject receiver,
String label,
@Cached("label") String cachedLabel,
@Cached("startsWithAt(cachedLabel)") boolean cachedStartsWithAt,
@Cached("createNextHelper()") StringCachedHelperNode nextHelper) {
return nextHelper.executeStringCachedHelper(frame, receiver, cachedLabel, cachedLabel, cachedStartsWithAt);
}

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

@@ -226,11 +232,12 @@ public abstract Object executeStringCachedHelper(VirtualFrame frame, DynamicObje
String stringLabel, boolean startsAt);

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

@@ -248,11 +255,12 @@ protected ReadObjectFieldNode createReadObjectFieldNode(String label) {
"methodDefined(frame, receiver, stringLabel, getDefinedNode())"
}
)
public Object callMethod(VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
boolean startsAt) {
public Object callMethod(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
boolean startsAt) {
return getCallNode().call(frame, receiver, stringLabel, null);
}

@@ -263,11 +271,12 @@ public Object callMethod(VirtualFrame frame,
"methodDefined(frame, receiver, INDEX_METHOD_NAME, getIndexDefinedNode())"
}
)
public Object index(VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
boolean startsAt) {
public Object index(
VirtualFrame frame,
DynamicObject receiver,
Object label,
String stringLabel,
boolean startsAt) {
return getCallNode().call(frame, receiver, "[]", null, label);
}

Loading