Skip to content

Commit a76b34f

Browse files
committed
[truffle] Add support for a Block's name
nqp::getcodename now works without requiring nqp::setcodename to be explicitly called beforehand.
1 parent 5d88bd9 commit a76b34f

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

src/vm/jvm/Truffle.nqp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,7 @@ class QAST::TruffleCompiler does SerializeOnce {
11291129
}
11301130

11311131
@body.push($node.cuid);
1132+
@body.push($node.name);
11321133

11331134
my $setup_context := [];
11341135

src/vm/jvm/bin/run_tests.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
}
1010
});
1111

12-
my @nqp_tests = glob "t/nqp/{001,002,003,004,005,006,007,008,010,011,012,013,015,016,017,018,022,025,026,036,037,038,046,083,109}*.t";
12+
my @nqp_tests = glob "t/nqp/{001,002,003,004,005,006,007,008,010,011,012,013,015,016,017,018,022,025,026,036,037,038,046,083,091,109}*.t";
1313

1414
$harness->runtests(@nqp_tests);

src/vm/jvm/runtime/org/perl6/nqp/truffle/ManageScopes.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,32 +72,32 @@ public static NQPScope createNewForcedOuterScope(NQPScope scope) {
7272
}
7373

7474
@Deserializer("block")
75-
public static NQPNode createBlock(NQPScope scope, String cuid, NQPNode[] children) {
75+
public static NQPNode createBlock(NQPScope scope, String cuid, String name, NQPNode[] children) {
7676
FrameDescriptor frameDescriptor = ((NQPScopeWithFrame) scope).getFrameDescriptor();
7777

7878
RootNode rootNode = new NQPRootNode(null, frameDescriptor, new NQPBlockBodyNode(children));
79-
NQPCodeRef code = new NQPCodeRef(rootNode, null);
79+
NQPCodeRef code = new NQPCodeRef(rootNode, null, name);
8080
scope.addCuid(cuid, code);
8181

8282
return new NQPBlockNode(
83-
new NQPRootNode(null, frameDescriptor, new NQPBlockBodyNode(children))
83+
new NQPRootNode(null, frameDescriptor, new NQPBlockBodyNode(children)), name
8484
);
8585
}
8686

8787
@Deserializer("block-static")
88-
public static NQPNode createStaticBlock(NQPScope scope, String cuid, NQPNode[] children) {
88+
public static NQPNode createStaticBlock(NQPScope scope, String cuid, String name, NQPNode[] children) {
8989
FrameDescriptor frameDescriptor = ((NQPScopeWithFrame) scope).getFrameDescriptor();
9090
RootNode rootNode = new NQPRootNode(null, frameDescriptor, new NQPBlockBodyNode(children));
91-
NQPCodeRef code = new NQPCodeRef(rootNode, null);
91+
NQPCodeRef code = new NQPCodeRef(rootNode, null, name);
9292
scope.addCuid(cuid, code);
9393
return new NQPStaticBlockNode(code);
9494
}
9595

9696
@Deserializer("block-forced-outer")
97-
public static NQPNode createForcedOuterBlock(NQPScope scope, String cuid, NQPNode[] children) {
97+
public static NQPNode createForcedOuterBlock(NQPScope scope, String cuid, String name, NQPNode[] children) {
9898
FrameDescriptor frameDescriptor = ((NQPScopeWithFrame) scope).getFrameDescriptor();
9999
RootNode rootNode = new NQPRootNode(null, frameDescriptor, new NQPBlockBodyNode(children));
100-
NQPCodeRef code = new NQPCodeRef(rootNode, null);
100+
NQPCodeRef code = new NQPCodeRef(rootNode, null, name);
101101
scope.addCuid(cuid, code);
102102
return new NQPForcedOuterBlockNode(code);
103103
}

src/vm/jvm/runtime/org/perl6/nqp/truffle/nodes/control/NQPBlockNode.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88
public class NQPBlockNode extends NQPNode {
99
private RootNode rootNode;
1010

11-
public NQPBlockNode(RootNode rootNode) {
11+
public String name = "";
12+
13+
public NQPBlockNode(RootNode rootNode, String name) {
1214
this.rootNode = rootNode;
15+
this.name = name;
1316
}
1417

1518
@Override
1619
public Object execute(VirtualFrame frame) {
17-
return new NQPCodeRef(rootNode, frame.materialize());
20+
return new NQPCodeRef(rootNode, frame.materialize(), name);
1821
}
1922

2023
@Override

src/vm/jvm/runtime/org/perl6/nqp/truffle/runtime/NQPCodeRef.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ public final class NQPCodeRef {
5454

5555
public String name;
5656

57-
public NQPCodeRef(RootNode root, MaterializedFrame outer) {
57+
public NQPCodeRef(RootNode root, MaterializedFrame outer, String name) {
5858
this.callTarget = Truffle.getRuntime().createCallTarget(root);
5959
this.outer = outer;
60+
this.name = name;
6061
}
6162

6263
public RootCallTarget getCallTarget() {

0 commit comments

Comments
 (0)