Skip to content

Commit

Permalink
Showing 3 changed files with 5 additions and 6 deletions.
1 change: 0 additions & 1 deletion spec/truffle/tags/core/thread/new_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
fails:Thread.new can pass arguments to the thread block
fails:Thread.new raises an exception when not given a block
fails:Thread.new creates a subclass of thread calls super with a block in initialize
fails:Thread.new calls #initialize and raises an error if super not used
Original file line number Diff line number Diff line change
@@ -77,16 +77,16 @@ public void run(RubyThread currentThread, Node currentNode) {

}

@CoreMethod(names = "initialize", needsBlock = true)
@CoreMethod(names = "initialize", argumentsAsArray = true, needsBlock = true)
public abstract static class InitializeNode extends CoreMethodArrayArgumentsNode {

public InitializeNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

@Specialization
public RubyBasicObject initialize(RubyThread thread, RubyProc block) {
thread.initialize(getContext(), this, block);
public RubyBasicObject initialize(RubyThread thread, Object[] arguments, RubyProc block) {
thread.initialize(getContext(), this, arguments, block);
return nil();
}

Original file line number Diff line number Diff line change
@@ -60,12 +60,12 @@ public RubyThread(RubyClass rubyClass, ThreadManager manager) {
fiberManager = new FiberManager(this, manager);
}

public void initialize(RubyContext context, Node currentNode, final RubyProc block) {
public void initialize(RubyContext context, Node currentNode, final Object[] arguments, final RubyProc block) {
String info = block.getSharedMethodInfo().getSourceSection().getShortDescription();
initialize(context, currentNode, info, new Runnable() {
@Override
public void run() {
value = block.rootCall();
value = block.rootCall(arguments);
}
});
}

0 comments on commit ef4c54c

Please sign in to comment.