… | |
… | |
130 | RETVAL = coro; |
130 | RETVAL = coro; |
131 | OUTPUT: |
131 | OUTPUT: |
132 | RETVAL |
132 | RETVAL |
133 | |
133 | |
134 | void |
134 | void |
135 | _transfer(old,new) |
135 | _transfer(prev,next) |
136 | Coro old |
136 | Coro prev |
137 | Coro new |
137 | Coro next |
138 | CODE: |
138 | CODE: |
139 | |
139 | |
140 | PUTBACK; |
140 | PUTBACK; |
141 | SAVE (old); |
141 | SAVE (prev); |
142 | |
142 | |
143 | if (new->mainstack) /* this is, in theory, unnecessary overhead */ |
143 | if (next->mainstack) /* this is, in theory, unnecessary overhead */ |
144 | { |
144 | { |
145 | LOAD (new); |
145 | LOAD (next); |
146 | SPAGAIN; |
146 | SPAGAIN; |
147 | } |
147 | } |
148 | else |
148 | else |
149 | { |
149 | { |
150 | init_stacks (); |
150 | init_stacks (); |
… | |
… | |
153 | DEFSV = newSVsv(&PL_sv_undef); |
153 | DEFSV = newSVsv(&PL_sv_undef); |
154 | |
154 | |
155 | SPAGAIN; |
155 | SPAGAIN; |
156 | PUSHMARK(SP); |
156 | PUSHMARK(SP); |
157 | PUTBACK; |
157 | PUTBACK; |
158 | call_sv (new->proc, G_VOID | G_DISCARD | G_EVAL); |
158 | call_sv (next->proc, G_VOID | G_DISCARD | G_EVAL); |
159 | |
159 | |
160 | exit (0); |
160 | exit (0); |
161 | |
161 | |
162 | /*SPAGAIN; |
162 | /*SPAGAIN; |
163 | SAVE (new); |
163 | SAVE (next); |
164 | |
164 | |
165 | LOAD (old); |
165 | LOAD (prev); |
166 | SPAGAIN;*/ |
166 | SPAGAIN;*/ |
167 | } |
167 | } |
168 | |
168 | |
169 | void |
169 | void |
170 | DESTROY(coro) |
170 | DESTROY(coro) |