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: d1c95c2d96e7
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 8dc7db41fe84
Choose a head ref
  • 12 commits
  • 36 files changed
  • 1 contributor

Commits on Mar 17, 2016

  1. Copy the full SHA
    ac11513 View commit details
  2. Copy the full SHA
    d982b60 View commit details
  3. Copy the full SHA
    13156e1 View commit details
  4. Copy the full SHA
    6d46885 View commit details
  5. Copy the full SHA
    7eee70f View commit details
  6. Copy the full SHA
    f67a94e View commit details
  7. Copy the full SHA
    40f0334 View commit details
  8. Copy the full SHA
    22d265f View commit details
  9. Copy the full SHA
    d943d70 View commit details
  10. Copy the full SHA
    c03a139 View commit details
  11. Copy the full SHA
    77f337e View commit details
  12. Copy the full SHA
    8dc7db4 View commit details
Showing with 1,182 additions and 1,137 deletions.
  1. +0 −2 truffle/src/main/java/org/jruby/truffle/RubyContext.java
  2. +10 −84 truffle/src/main/java/org/jruby/truffle/core/RubyMethodForeignAccessFactory.java
  3. +10 −85 truffle/src/main/java/org/jruby/truffle/core/array/ArrayForeignAccessFactory.java
  4. +16 −41 .../truffle/core/basicobject/{BasicForeignAccessFactory.java → BasicObjectForeignAccessFactory.java}
  5. +10 −94 truffle/src/main/java/org/jruby/truffle/core/hash/HashForeignAccessFactory.java
  6. +2 −2 truffle/src/main/java/org/jruby/truffle/core/numeric/FloatNodes.java
  7. +0 −1 truffle/src/main/java/org/jruby/truffle/core/rope/RopeNodes.java
  8. +16 −74 truffle/src/main/java/org/jruby/truffle/core/string/StringForeignAccessFactory.java
  9. +24 −0 truffle/src/main/java/org/jruby/truffle/interop/AbstractExecuteMethodNode.java
  10. +89 −0 truffle/src/main/java/org/jruby/truffle/interop/ExecuteMethodNode.java
  11. +30 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropArgumentNode.java
  12. +47 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropArgumentsNode.java
  13. +31 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropExecute.java
  14. +33 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropGetSizeProperty.java
  15. +42 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropInstanceVariableReadNode.java
  16. +42 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropInstanceVariableWriteNode.java
  17. +27 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropIsNull.java
  18. +0 −745 truffle/src/main/java/org/jruby/truffle/interop/InteropNode.java
  19. +47 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropReadStringByteNode.java
  20. +32 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropStringIsBoxed.java
  21. +30 −0 truffle/src/main/java/org/jruby/truffle/interop/InteropStringUnboxNode.java
  22. +49 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropExecuteAfterReadNode.java
  23. +41 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropIndexedReadNode.java
  24. +44 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropIndexedWriteNode.java
  25. +45 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropReadFromSymbolNode.java
  26. +44 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropReadNode.java
  27. +49 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropWriteNode.java
  28. +51 −0 truffle/src/main/java/org/jruby/truffle/interop/ResolvedInteropWriteToSymbolNode.java
  29. +31 −0 truffle/src/main/java/org/jruby/truffle/interop/RubyInteropArgumentNode.java
  30. +27 −0 truffle/src/main/java/org/jruby/truffle/interop/RubyInteropReceiverNode.java
  31. +36 −0 truffle/src/main/java/org/jruby/truffle/interop/RubyInteropRootNode.java
  32. +39 −0 truffle/src/main/java/org/jruby/truffle/interop/UnresolvedInteropExecuteAfterReadNode.java
  33. +60 −0 truffle/src/main/java/org/jruby/truffle/interop/UnresolvedInteropReadNode.java
  34. +55 −0 truffle/src/main/java/org/jruby/truffle/interop/UnresolvedInteropStringReadNode.java
  35. +62 −0 truffle/src/main/java/org/jruby/truffle/interop/UnresolvedInteropWriteNode.java
  36. +11 −9 truffle/src/main/java/org/jruby/truffle/language/RubyObjectType.java
2 changes: 0 additions & 2 deletions truffle/src/main/java/org/jruby/truffle/RubyContext.java
Original file line number Diff line number Diff line change
@@ -53,8 +53,6 @@
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class RubyContext extends ExecutionContext {

Original file line number Diff line number Diff line change
@@ -11,105 +11,31 @@

import com.oracle.truffle.api.CallTarget;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.nodes.RootNode;
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.RubyLanguage;
import org.jruby.truffle.interop.InteropNode;
import org.jruby.truffle.language.RubyNode;
import org.jruby.truffle.language.backtrace.InternalRootNode;
import org.jruby.truffle.core.basicobject.BasicObjectForeignAccessFactory;
import org.jruby.truffle.interop.InteropExecute;
import org.jruby.truffle.interop.RubyInteropRootNode;
import org.jruby.truffle.language.literal.BooleanLiteralNode;

public class RubyMethodForeignAccessFactory implements ForeignAccess.Factory10 {
private final RubyContext context;
public class RubyMethodForeignAccessFactory extends BasicObjectForeignAccessFactory {

private RubyMethodForeignAccessFactory(RubyContext context) {
this.context = context;
}

public static ForeignAccess create(RubyContext context) {
return ForeignAccess.create(DynamicObject.class, new RubyMethodForeignAccessFactory(context));
public RubyMethodForeignAccessFactory(RubyContext context) {
super(context);
}

@Override
public CallTarget accessIsNull() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsNull(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, false)));
}

@Override
public CallTarget accessIsExecutable() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsExecutable(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessIsBoxed() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsBoxedPrimitive(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessHasSize() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createHasSizePropertyFalse(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessGetSize() {
return null;
}

@Override
public CallTarget accessUnbox() {
return null;
}

@Override
public CallTarget accessRead() {
return null;
}

@Override
public CallTarget accessWrite() {
return null;
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, true)));
}

@Override
public CallTarget accessExecute(int i) {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createExecute(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessInvoke(int i) {
return null;
}

@Override
public CallTarget accessNew(int argumentsLength) {
return null;
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new InteropExecute(context, null)));
}

@Override
public CallTarget accessMessage(com.oracle.truffle.api.interop.Message msg) {
return null;
}

protected static final class RubyInteropRootNode extends RootNode implements InternalRootNode {

@Child private RubyNode node;

public RubyInteropRootNode(RubyNode node) {
super(RubyLanguage.class, node.getSourceSection(), null);
this.node = node;
}

@Override
public Object execute(VirtualFrame virtualFrame) {
return node.execute(virtualFrame);
}

@Override
public String toString() {
return "Root of: " + node.toString();
}
}
}
Original file line number Diff line number Diff line change
@@ -11,106 +11,31 @@

import com.oracle.truffle.api.CallTarget;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.Message;
import com.oracle.truffle.api.nodes.RootNode;
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.RubyLanguage;
import org.jruby.truffle.interop.InteropNode;
import org.jruby.truffle.language.RubyNode;
import org.jruby.truffle.language.backtrace.InternalRootNode;
import org.jruby.truffle.core.basicobject.BasicObjectForeignAccessFactory;
import org.jruby.truffle.interop.InteropGetSizeProperty;
import org.jruby.truffle.interop.RubyInteropRootNode;
import org.jruby.truffle.language.literal.BooleanLiteralNode;

public class ArrayForeignAccessFactory implements ForeignAccess.Factory10 {
private final RubyContext context;
public class ArrayForeignAccessFactory extends BasicObjectForeignAccessFactory {

private ArrayForeignAccessFactory(RubyContext context) {
this.context = context;
}

public static ForeignAccess create(RubyContext context) {
return ForeignAccess.create(DynamicObject.class, new ArrayForeignAccessFactory(context));
public ArrayForeignAccessFactory(RubyContext context) {
super(context);
}

@Override
public CallTarget accessIsNull() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsNull(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessIsExecutable() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsExecutable(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessIsBoxed() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsBoxedPrimitive(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, false)));
}

@Override
public CallTarget accessHasSize() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createHasSizePropertyTrue(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, true)));
}

@Override
public CallTarget accessGetSize() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createGetSize(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessUnbox() {
return null;
}

@Override
public CallTarget accessRead() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createRead(context, SourceSection.createUnavailable("", ""))));
}

@Override
public CallTarget accessWrite() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createWrite(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new InteropGetSizeProperty(context, null)));
}

@Override
public CallTarget accessExecute(int i) {
return null;
}

@Override
public CallTarget accessInvoke(int arity) {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createExecuteAfterRead(context, SourceSection.createUnavailable("", ""), arity)));
}

@Override
public CallTarget accessNew(int argumentsLength) {
return null;
}

@Override
public CallTarget accessMessage(Message msg) {
return null;
}

protected static final class RubyInteropRootNode extends RootNode implements InternalRootNode {

@Child private RubyNode node;

public RubyInteropRootNode(RubyNode node) {
super(RubyLanguage.class, node.getSourceSection(), null);
this.node = node;
}

@Override
public Object execute(VirtualFrame virtualFrame) {
return node.execute(virtualFrame);
}

@Override
public String toString() {
return "Root of: " + node.toString();
}
}
}
Original file line number Diff line number Diff line change
@@ -11,48 +11,42 @@

import com.oracle.truffle.api.CallTarget;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.Message;
import com.oracle.truffle.api.nodes.RootNode;
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.RubyLanguage;
import org.jruby.truffle.interop.InteropNode;
import org.jruby.truffle.language.RubyNode;
import org.jruby.truffle.language.backtrace.InternalRootNode;
import org.jruby.truffle.interop.InteropIsNull;
import org.jruby.truffle.interop.RubyInteropRootNode;
import org.jruby.truffle.interop.UnresolvedInteropExecuteAfterReadNode;
import org.jruby.truffle.interop.UnresolvedInteropReadNode;
import org.jruby.truffle.interop.UnresolvedInteropWriteNode;
import org.jruby.truffle.language.literal.BooleanLiteralNode;

public class BasicForeignAccessFactory implements ForeignAccess.Factory10 {
public class BasicObjectForeignAccessFactory implements ForeignAccess.Factory10 {

private final RubyContext context;
protected final RubyContext context;

private BasicForeignAccessFactory(RubyContext context) {
public BasicObjectForeignAccessFactory(RubyContext context) {
this.context = context;
}

public static ForeignAccess create(RubyContext context) {
return ForeignAccess.create(DynamicObject.class, new BasicForeignAccessFactory(context));
}

@Override
public CallTarget accessIsNull() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsNull(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new InteropIsNull(context, null)));
}

@Override
public CallTarget accessIsExecutable() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsExecutable(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, false)));
}

@Override
public CallTarget accessIsBoxed() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createIsBoxedPrimitive(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, false)));
}

@Override
public CallTarget accessHasSize() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createHasSizePropertyFalse(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new BooleanLiteralNode(context, null, false)));
}

@Override
@@ -67,12 +61,12 @@ public CallTarget accessUnbox() {

@Override
public CallTarget accessRead() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createRead(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new UnresolvedInteropReadNode(context, null)));
}

@Override
public CallTarget accessWrite() {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createWrite(context, SourceSection.createUnavailable("", ""))));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new UnresolvedInteropWriteNode(context, null)));
}

@Override
@@ -82,7 +76,7 @@ public CallTarget accessExecute(int i) {

@Override
public CallTarget accessInvoke(int arity) {
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(InteropNode.createExecuteAfterRead(context, SourceSection.createUnavailable("", ""), arity)));
return Truffle.getRuntime().createCallTarget(new RubyInteropRootNode(new UnresolvedInteropExecuteAfterReadNode(context, null, arity)));
}

@Override
@@ -95,23 +89,4 @@ public CallTarget accessMessage(Message msg) {
return null;
}

protected static final class RubyInteropRootNode extends RootNode implements InternalRootNode {

@Child private RubyNode node;

public RubyInteropRootNode(RubyNode node) {
super(RubyLanguage.class, node.getSourceSection(), null);
this.node = node;
}

@Override
public Object execute(VirtualFrame virtualFrame) {
return node.execute(virtualFrame);
}

@Override
public String toString() {
return "Root of: " + node.toString();
}
}
}
Loading