annotate src/core.c/Awaiter.pm6 @ 0:c341f82e7ad7 default tip

Rakudo branch in cr.ie.u-ryukyu.ac.jp
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 26 Dec 2019 16:50:27 +0900 (2019-12-26)
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 my role Awaiter {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 method await(Awaitable:D $a) { ... }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 method await-all(Iterable:D $i) { ... }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 my class Awaiter::Blocking does Awaiter {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 method await(Awaitable:D $a) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 my $handle := $a.get-await-handle;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 if $handle.already {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 $handle.success
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 ?? $handle.result
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 !! $handle.cause.rethrow
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 my $s = Semaphore.new(0);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 my $success;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 my $result;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 $handle.subscribe-awaiter(-> \success, \result {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 $success := success;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 $result := result;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 $s.release;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 });
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 $s.acquire;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 $success
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 ?? $result
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 !! $result.rethrow
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 method await-all(Iterable:D \i) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 # Collect results that are already available, and handles where the
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 # results are not yet available together with the matching insertion
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 # indices.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 my \results = nqp::list();
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 my \handles = nqp::list();
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 my \indices = nqp::list_i();
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 my int $insert = 0;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 my $saw-slip = False;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 for i -> $awaitable {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 unless nqp::istype($awaitable, Awaitable) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 die "Can only specify Awaitable objects to await (got a $awaitable.^name())";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 unless nqp::isconcrete($awaitable) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 die "Must specify a defined Awaitable to await (got an undefined $awaitable.^name())";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 my $handle := $awaitable.get-await-handle;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 if $handle.already {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 if $handle.success {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 my \result = $handle.result;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 nqp::bindpos(results, $insert, result);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 $saw-slip = True if nqp::istype(result, Slip);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 $handle.cause.rethrow
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 nqp::push(handles, $handle);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 nqp::push_i(indices, $insert);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 ++$insert;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 # See if we have anything that we need to really block on. If so, we
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 # use a lock and condition variable to handle the blocking. The lock
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 # protects writes into the array.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 my int $num-handles = nqp::elems(handles);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 if $num-handles {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 my $exception = Mu;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 my $l = Lock.new;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 my $ready = $l.condition();
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 my int $remaining = $num-handles;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 loop (my int $i = 0; $i < $num-handles; ++$i) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 my $handle := nqp::atpos(handles, $i);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 my int $insert = nqp::atpos_i(indices, $i);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 $handle.subscribe-awaiter(-> \success, \result {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 $l.protect: {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 if success && $remaining {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 nqp::bindpos(results, $insert, result);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 $saw-slip = True if nqp::istype(result, Slip);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 --$remaining;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 $ready.signal unless $remaining;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 elsif !nqp::isconcrete($exception) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 $exception := result;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 $remaining = 0;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 $ready.signal;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 });
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 # Block until remaining is 0 (need the loop to cope with suprious
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 # wakeups).
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 loop {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 $l.protect: {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 last if $remaining == 0;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 $ready.wait;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 # If we got an exception, throw it.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 $exception.rethrow if nqp::isconcrete($exception);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 my \result-list = nqp::p6bindattrinvres(nqp::create(List), List, '$!reified', results);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 $saw-slip ?? result-list.map(-> \val { val }).List !! result-list
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 PROCESS::<$AWAITER> := Awaiter::Blocking;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 # vim: ft=perl6 expandtab sw=4