|
40 | 40 | */
|
41 | 41 | package org.truffleruby.core.thread;
|
42 | 42 |
|
43 |
| -import java.util.concurrent.CountDownLatch; |
44 |
| -import java.util.concurrent.TimeUnit; |
45 |
| - |
| 43 | +import com.oracle.truffle.api.CompilerDirectives; |
| 44 | +import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; |
| 45 | +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
| 46 | +import com.oracle.truffle.api.dsl.Cached; |
| 47 | +import com.oracle.truffle.api.dsl.Specialization; |
| 48 | +import com.oracle.truffle.api.frame.VirtualFrame; |
| 49 | +import com.oracle.truffle.api.nodes.Node; |
| 50 | +import com.oracle.truffle.api.object.DynamicObject; |
| 51 | +import com.oracle.truffle.api.profiles.BranchProfile; |
| 52 | +import com.oracle.truffle.api.source.SourceSection; |
46 | 53 | import org.jcodings.specific.USASCIIEncoding;
|
47 | 54 | import org.jcodings.specific.UTF8Encoding;
|
48 | 55 | import org.truffleruby.Layouts;
|
|
76 | 83 | import org.truffleruby.language.objects.shared.SharedObjects;
|
77 | 84 | import org.truffleruby.language.yield.YieldNode;
|
78 | 85 |
|
79 |
| -import com.oracle.truffle.api.CompilerDirectives; |
80 |
| -import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; |
81 |
| -import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
82 |
| -import com.oracle.truffle.api.dsl.Cached; |
83 |
| -import com.oracle.truffle.api.dsl.Specialization; |
84 |
| -import com.oracle.truffle.api.frame.VirtualFrame; |
85 |
| -import com.oracle.truffle.api.nodes.Node; |
86 |
| -import com.oracle.truffle.api.object.DynamicObject; |
87 |
| -import com.oracle.truffle.api.profiles.BranchProfile; |
88 |
| -import com.oracle.truffle.api.source.SourceSection; |
| 86 | +import java.util.concurrent.CountDownLatch; |
| 87 | +import java.util.concurrent.TimeUnit; |
89 | 88 |
|
90 | 89 | @CoreClass("Thread")
|
91 | 90 | public abstract class ThreadNodes {
|
@@ -244,6 +243,18 @@ private DynamicObject getNeverSymbol() {
|
244 | 243 |
|
245 | 244 | }
|
246 | 245 |
|
| 246 | + @Primitive(name = "thread_allocate") |
| 247 | + public abstract static class ThreadAllocateNode extends PrimitiveArrayArgumentsNode { |
| 248 | + |
| 249 | + @Specialization |
| 250 | + public DynamicObject allocate( |
| 251 | + DynamicObject rubyClass, |
| 252 | + @Cached("create()") AllocateObjectNode allocateObjectNode) { |
| 253 | + return getContext().getThreadManager().createThread(rubyClass, allocateObjectNode); |
| 254 | + } |
| 255 | + |
| 256 | + } |
| 257 | + |
247 | 258 | @Primitive(name = "thread_initialized?")
|
248 | 259 | public abstract static class ThreadIsInitializedNode extends PrimitiveArrayArgumentsNode {
|
249 | 260 |
|
@@ -487,18 +498,6 @@ public DynamicObject setAbortOnException(DynamicObject self, boolean abortOnExce
|
487 | 498 |
|
488 | 499 | }
|
489 | 500 |
|
490 |
| - @Primitive(name = "thread_allocate") |
491 |
| - public abstract static class ThreadAllocateNode extends PrimitiveArrayArgumentsNode { |
492 |
| - |
493 |
| - @Specialization |
494 |
| - public DynamicObject allocate( |
495 |
| - DynamicObject rubyClass, |
496 |
| - @Cached("create()") AllocateObjectNode allocateObjectNode) { |
497 |
| - return getContext().getThreadManager().createThread(rubyClass, allocateObjectNode); |
498 |
| - } |
499 |
| - |
500 |
| - } |
501 |
| - |
502 | 501 | @CoreMethod(names = "list", onSingleton = true)
|
503 | 502 | public abstract static class ListNode extends CoreMethodArrayArgumentsNode {
|
504 | 503 |
|
|
0 commit comments