Skip to content

Commit

Permalink
Showing 12 changed files with 57 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -11,11 +11,13 @@

import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.DirectCallNode;
import com.oracle.truffle.api.nodes.InvalidAssumptionException;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
@@ -27,8 +29,8 @@ public class TraceNode extends RubyNode {

private final RubyContext context;

@CompilerDirectives.CompilationFinal private Assumption traceAssumption;
@CompilerDirectives.CompilationFinal private RubyProc traceFunc;
@CompilationFinal private Assumption traceAssumption;
@CompilationFinal private RubyProc traceFunc;
@Child private DirectCallNode callNode;

private final RubyBasicObject event;
Original file line number Diff line number Diff line change
@@ -10,13 +10,15 @@
package org.jruby.truffle.nodes.core;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.source.SourceSection;
import com.oracle.truffle.interop.messages.*;
import com.oracle.truffle.interop.node.ForeignObjectAccessNode;

import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;
@@ -161,7 +163,7 @@ public Object executeForeign(VirtualFrame frame, TruffleObject receiver, long id
return node.executeForeign(frame, receiver, identifier);
}

@CompilerDirectives.CompilationFinal private String identifier;
@CompilationFinal private String identifier;

@Specialization(guards = "isRubySymbol(identifier)")
public Object executeForeign(VirtualFrame frame, TruffleObject receiver, RubyBasicObject identifier) {
@@ -204,7 +206,7 @@ public Object executeForeign(VirtualFrame frame, TruffleObject receiver, long id
return node.executeForeign(frame, receiver, identifier, value);
}

@CompilerDirectives.CompilationFinal private String identifier;
@CompilationFinal private String identifier;

@Specialization(guards = "isRubySymbol(identifier)")
public Object executeForeign(VirtualFrame frame, TruffleObject receiver, RubyBasicObject identifier, Object value) {
Original file line number Diff line number Diff line change
@@ -10,7 +10,9 @@
package org.jruby.truffle.nodes.core.array;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.nodes.Node;

import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.array.ArrayUtils;
import org.jruby.truffle.runtime.core.RubyArray;
@@ -145,7 +147,7 @@ public static class IntegerArrayBuilderNode extends ArrayBuilderNode {

private final int expectedLength;

@CompilerDirectives.CompilationFinal private boolean hasAppendedIntegerArray = false;
@CompilationFinal private boolean hasAppendedIntegerArray = false;

public IntegerArrayBuilderNode(RubyContext context, int expectedLength) {
super(context);
@@ -380,8 +382,8 @@ public static class ObjectArrayBuilderNode extends ArrayBuilderNode {

private final int expectedLength;

@CompilerDirectives.CompilationFinal private boolean hasAppendedObjectArray = false;
@CompilerDirectives.CompilationFinal private boolean hasAppendedIntArray = false;
@CompilationFinal private boolean hasAppendedObjectArray = false;
@CompilationFinal private boolean hasAppendedIntArray = false;

public ObjectArrayBuilderNode(RubyContext context, int expectedLength) {
super(context);
Original file line number Diff line number Diff line change
@@ -10,8 +10,10 @@
package org.jruby.truffle.nodes.core.fixnum;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.UnexpectedResultException;

import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.runtime.NotProvided;
import org.jruby.truffle.runtime.core.CoreLibrary;
@@ -22,14 +24,14 @@ public class FixnumLowerNode extends RubyNode {

@Child private RubyNode child;

@CompilerDirectives.CompilationFinal private boolean hasSeenInteger = false;
@CompilerDirectives.CompilationFinal private boolean hasSeenLong = false;
@CompilerDirectives.CompilationFinal private boolean hasSeenIntegerRange = false;
@CompilerDirectives.CompilationFinal private boolean hasSeenLongRange = false;
@CompilerDirectives.CompilationFinal private boolean hasSeenUndefined = false;
@CompilationFinal private boolean hasSeenInteger = false;
@CompilationFinal private boolean hasSeenLong = false;
@CompilationFinal private boolean hasSeenIntegerRange = false;
@CompilationFinal private boolean hasSeenLongRange = false;
@CompilationFinal private boolean hasSeenUndefined = false;

@CompilerDirectives.CompilationFinal private boolean hasNeededToLowerLongFixnum = false;
@CompilerDirectives.CompilationFinal private boolean hasNeededToLowerLongFixnumRange = false;
@CompilationFinal private boolean hasNeededToLowerLongFixnum = false;
@CompilationFinal private boolean hasNeededToLowerLongFixnumRange = false;

public FixnumLowerNode(RubyNode child) {
super(child.getContext(), child.getEncapsulatingSourceSection());
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
package org.jruby.truffle.nodes.core.hash;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.ImportStatic;
import com.oracle.truffle.api.dsl.NodeChild;
@@ -23,6 +24,7 @@
import com.oracle.truffle.api.source.SourceSection;
import com.oracle.truffle.api.utilities.BranchProfile;
import com.oracle.truffle.api.utilities.ConditionProfile;

import org.jruby.truffle.nodes.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.*;
@@ -388,7 +390,7 @@ public abstract static class GetIndexNode extends CoreMethodArrayArgumentsNode {
private final BranchProfile notInHashProfile = BranchProfile.create();
private final BranchProfile useDefaultProfile = BranchProfile.create();

@CompilerDirectives.CompilationFinal private Object undefinedValue;
@CompilationFinal private Object undefinedValue;

public GetIndexNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
Original file line number Diff line number Diff line change
@@ -11,10 +11,12 @@

import com.oracle.truffle.api.CompilerAsserts;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.ExplodeLoop;
import com.oracle.truffle.api.nodes.NodeUtil;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.nodes.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.arguments.OptionalKeywordArgMissingNode;
@@ -46,25 +48,25 @@ public class RubyCallNode extends RubyNode {
@Child private ProcOrNullNode block;
@Children private final RubyNode[] arguments;
@Children private final RubyNode[] keywordOptimizedArguments;
@CompilerDirectives.CompilationFinal private int keywordOptimizedArgumentsLength;
@CompilationFinal private int keywordOptimizedArgumentsLength;

private final boolean isSplatted;
private final boolean isVCall;

@Child private CallDispatchHeadNode dispatchHead;

@CompilerDirectives.CompilationFinal private boolean seenNullInUnsplat = false;
@CompilerDirectives.CompilationFinal private boolean seenIntegerFixnumInUnsplat = false;
@CompilerDirectives.CompilationFinal private boolean seenLongFixnumInUnsplat = false;
@CompilerDirectives.CompilationFinal private boolean seenFloatInUnsplat = false;
@CompilerDirectives.CompilationFinal private boolean seenObjectInUnsplat = false;
@CompilationFinal private boolean seenNullInUnsplat = false;
@CompilationFinal private boolean seenIntegerFixnumInUnsplat = false;
@CompilationFinal private boolean seenLongFixnumInUnsplat = false;
@CompilationFinal private boolean seenFloatInUnsplat = false;
@CompilationFinal private boolean seenObjectInUnsplat = false;

@Child private CallDispatchHeadNode respondToMissing;
@Child private BooleanCastNode respondToMissingCast;

private final boolean ignoreVisibility;

@CompilerDirectives.CompilationFinal private boolean cannotOptimize;
@CompilationFinal private boolean cannotOptimize;

public RubyCallNode(RubyContext context, SourceSection section, String methodName, RubyNode receiver, RubyNode block, boolean isSplatted, RubyNode... arguments) {
this(context, section, methodName, receiver, block, isSplatted, false, arguments);
Original file line number Diff line number Diff line change
@@ -10,8 +10,10 @@
package org.jruby.truffle.nodes.rubinius;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyModule;
import org.jruby.truffle.runtime.core.RubyString;
@@ -21,7 +23,7 @@ public abstract class ModulePrimitiveNodes {
@RubiniusPrimitive(name = "module_mirror")
public abstract static class ModuleMirrorPrimitiveNode extends RubiniusPrimitiveNode {

@CompilerDirectives.CompilationFinal RubyModule stringMirror;
@CompilationFinal RubyModule stringMirror;

public ModuleMirrorPrimitiveNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
Original file line number Diff line number Diff line change
@@ -12,10 +12,12 @@
import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerAsserts;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.DirectCallNode;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.objects.MetaClassNode;
import org.jruby.truffle.nodes.objects.MetaClassNodeGen;
@@ -32,10 +34,10 @@ public abstract class AbstractGeneralSuperCallNode extends RubyNode {
@Child protected MetaClassNode metaClassNode;
@Child protected DirectCallNode callNode;

@CompilerDirectives.CompilationFinal private InternalMethod currentMethod;
@CompilerDirectives.CompilationFinal private RubyClass selfMetaClass;
@CompilerDirectives.CompilationFinal private Assumption unmodifiedAssumption;
@CompilerDirectives.CompilationFinal protected InternalMethod superMethod;
@CompilationFinal private InternalMethod currentMethod;
@CompilationFinal private RubyClass selfMetaClass;
@CompilationFinal private Assumption unmodifiedAssumption;
@CompilationFinal protected InternalMethod superMethod;

public AbstractGeneralSuperCallNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
Original file line number Diff line number Diff line change
@@ -10,10 +10,12 @@
package org.jruby.truffle.pack.nodes;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.frame.FrameSlotTypeException;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.RootNode;
import com.oracle.truffle.api.source.NullSourceSection;

import org.jruby.truffle.pack.runtime.PackEncoding;
import org.jruby.truffle.pack.runtime.PackFrameDescriptor;
import org.jruby.truffle.pack.runtime.PackResult;
@@ -29,7 +31,7 @@ public class PackRootNode extends RootNode {

@Child private PackNode child;

@CompilerDirectives.CompilationFinal private int expectedLength = ArrayUtils.capacity(0, 0);
@CompilationFinal private int expectedLength = ArrayUtils.capacity(0, 0);

public PackRootNode(String description, PackEncoding encoding, PackNode child) {
super(new NullSourceSection("pack", description), PackFrameDescriptor.FRAME_DESCRIPTOR);
Original file line number Diff line number Diff line change
@@ -10,10 +10,12 @@
package org.jruby.truffle.pack.nodes.type;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.NodeChild;
import com.oracle.truffle.api.dsl.NodeChildren;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;

import org.jruby.truffle.nodes.core.BignumNodes;
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
@@ -36,9 +38,9 @@ public abstract class ToLongNode extends PackNode {

@Child private CallDispatchHeadNode toIntNode;

@CompilerDirectives.CompilationFinal private boolean seenInt;
@CompilerDirectives.CompilationFinal private boolean seenLong;
@CompilerDirectives.CompilationFinal private boolean seenBignum;
@CompilationFinal private boolean seenInt;
@CompilationFinal private boolean seenLong;
@CompilationFinal private boolean seenBignum;

public ToLongNode(RubyContext context) {
super(context);
Original file line number Diff line number Diff line change
@@ -10,8 +10,10 @@
package org.jruby.truffle.runtime.core;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.frame.MaterializedFrame;
import com.oracle.truffle.api.nodes.Node;

import org.jruby.truffle.nodes.objects.Allocator;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.subsystems.ObjectSpaceManager;
@@ -21,8 +23,8 @@
*/
public class RubyBinding extends RubyBasicObject {

@CompilerDirectives.CompilationFinal private Object self;
@CompilerDirectives.CompilationFinal private MaterializedFrame frame;
@CompilationFinal private Object self;
@CompilationFinal private MaterializedFrame frame;

public RubyBinding(RubyClass bindingClass) {
super(bindingClass);
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@
import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerAsserts;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.nodes.InvalidAssumptionException;
import com.oracle.truffle.api.nodes.Node;
@@ -33,7 +34,7 @@ public class SafepointManager {

private final Set<Thread> runningThreads = Collections.newSetFromMap(new ConcurrentHashMap<Thread, Boolean>());

@CompilerDirectives.CompilationFinal private Assumption assumption = Truffle.getRuntime().createAssumption("SafepointManager");
@CompilationFinal private Assumption assumption = Truffle.getRuntime().createAssumption("SafepointManager");
private final ReentrantLock lock = new ReentrantLock();

private final Phaser phaser = new Phaser();

0 comments on commit 2843c37

Please sign in to comment.