Skip to content

Commit

Permalink
Showing 5 changed files with 33 additions and 15 deletions.
2 changes: 1 addition & 1 deletion truffle/pom.rb
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@
repository( :url => 'http://lafo.ssw.uni-linz.ac.at/nexus/content/repositories/snapshots/',
:id => 'truffle' )

truffle_version = '8495d7692f7a0ef12a696af2aed21f4db4d69658-SNAPSHOT'
truffle_version = '7de96d3ba72f2d1a2a0ef39351a3db4764c74b9c-SNAPSHOT'
jar 'com.oracle.truffle:truffle-api:' + truffle_version
jar 'com.oracle.truffle:truffle-debug:' + truffle_version
jar 'com.oracle.truffle:truffle-dsl-processor:' + truffle_version, :scope => 'provided'
8 changes: 4 additions & 4 deletions truffle/pom.xml
Original file line number Diff line number Diff line change
@@ -41,23 +41,23 @@ DO NOT MODIFIY - GENERATED CODE
<dependency>
<groupId>com.oracle.truffle</groupId>
<artifactId>truffle-api</artifactId>
<version>8495d7692f7a0ef12a696af2aed21f4db4d69658-SNAPSHOT</version>
<version>7de96d3ba72f2d1a2a0ef39351a3db4764c74b9c-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.oracle.truffle</groupId>
<artifactId>truffle-debug</artifactId>
<version>8495d7692f7a0ef12a696af2aed21f4db4d69658-SNAPSHOT</version>
<version>7de96d3ba72f2d1a2a0ef39351a3db4764c74b9c-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.oracle.truffle</groupId>
<artifactId>truffle-dsl-processor</artifactId>
<version>8495d7692f7a0ef12a696af2aed21f4db4d69658-SNAPSHOT</version>
<version>7de96d3ba72f2d1a2a0ef39351a3db4764c74b9c-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.oracle.truffle</groupId>
<artifactId>truffle-tck</artifactId>
<version>8495d7692f7a0ef12a696af2aed21f4db4d69658-SNAPSHOT</version>
<version>7de96d3ba72f2d1a2a0ef39351a3db4764c74b9c-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
Original file line number Diff line number Diff line change
@@ -100,7 +100,7 @@ public DynamicObject bindingOfCaller() {

@Override
public MaterializedFrame visitFrame(FrameInstance frameInstance) {
if (frameCount.get() == 1) {
if (frameCount.get() == 2) {
return frameInstance.getFrame(FrameInstance.FrameAccess.READ_WRITE, false).materialize();
} else {
frameCount.set(frameCount.get() + 1);
@@ -135,7 +135,7 @@ public DynamicObject sourceOfCaller() {

@Override
public String visitFrame(FrameInstance frameInstance) {
if (frameCount.get() == 1) {
if (frameCount.get() == 2) {
return frameInstance.getCallNode().getEncapsulatingSourceSection().getSource().getName();
} else {
frameCount.set(frameCount.get() + 1);
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@
import org.jruby.truffle.language.backtrace.InternalRootNode;
import org.jruby.truffle.language.exceptions.DisablingBacktracesNode;
import org.jruby.truffle.language.methods.InternalMethod;
import org.jruby.util.Memo;

import java.util.ArrayList;

@@ -41,9 +42,16 @@ public CallStackManager(RubyContext context) {

@TruffleBoundary
public FrameInstance getCallerFrameIgnoringSend() {
return Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<FrameInstance>() {
final Memo<Boolean> firstFrame = new Memo<>(true);

final FrameInstance fi = Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<FrameInstance>() {
@Override
public FrameInstance visitFrame(FrameInstance frameInstance) {
if (firstFrame.get()) {
firstFrame.set(false);
return null;
}

final InternalMethod method = getMethod(frameInstance);
assert method != null;

@@ -54,6 +62,8 @@ public FrameInstance visitFrame(FrameInstance frameInstance) {
}
}
});

return fi;
}

@TruffleBoundary
@@ -63,10 +73,17 @@ public InternalMethod getCallingMethodIgnoringSend() {

@TruffleBoundary
public Node getTopMostUserCallNode() {
final Memo<Boolean> firstFrame = new Memo<>(true);

return Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<Node>() {

@Override
public Node visitFrame(FrameInstance frameInstance) {
if (firstFrame.get()) {
firstFrame.set(false);
return null;
}

final SourceSection sourceSection = frameInstance.getCallNode().getEncapsulatingSourceSection();

if (CoreSourceSection.isCoreSourceSection(sourceSection)) {
@@ -138,11 +155,18 @@ public Backtrace getBacktrace(Node currentNode,
activations.add(new Activation(currentNode, currentFrame));
}

final Memo<Boolean> firstFrame = new Memo<>(true);

Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<Object>() {
int depth = 1;

@Override
public Object visitFrame(FrameInstance frameInstance) {
if (firstFrame.get()) {
firstFrame.set(false);
return null;
}

if (depth > limit) {
activations.add(Activation.OMITTED_LIMIT);
return new Object();
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@
import org.jruby.truffle.core.hash.Entry;
import org.jruby.truffle.language.SafepointAction;
import org.jruby.truffle.language.arguments.RubyArguments;
import org.jruby.util.Memo;

import java.util.ArrayDeque;
import java.util.Collection;
@@ -48,13 +49,6 @@ public void run(DynamicObject thread, Node currentNode) {
visitContextRoots(context, stack);
}

final FrameInstance currentFrame = Truffle.getRuntime().getCurrentFrame();

if (currentFrame != null) {
stack.addAll(getObjectsInFrame(currentFrame.getFrame(
FrameInstance.FrameAccess.READ_ONLY, true)));
}

Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<Object>() {

@Override

0 comments on commit e16f2b9

Please sign in to comment.