… | |
… | |
64 | entereval unsafe noasync todo |
64 | entereval unsafe noasync todo |
65 | require unsafe |
65 | require unsafe |
66 | |
66 | |
67 | mapstart noasync |
67 | mapstart noasync |
68 | grepstart noasync |
68 | grepstart noasync |
69 | match noasync todo#whyisitunsafe? unsafe |
69 | match noasync |
70 | |
70 | |
71 | last noasync |
71 | last noasync |
72 | next noasync |
72 | next noasync |
73 | redo noasync |
73 | redo noasync |
74 | seq noasync |
74 | seq noasync |
… | |
… | |
258 | |
258 | |
259 | out_next; |
259 | out_next; |
260 | }; |
260 | }; |
261 | } |
261 | } |
262 | |
262 | |
|
|
263 | # does kill Crossfire/res2pm |
263 | sub xop_stringify { |
264 | sub op_stringify { |
264 | $source .= " { dSP; dTARGET; sv_copypv (TARG, TOPs); SETTARG; PUTBACK; }\n"; |
265 | my $targ = $op->targ; |
|
|
266 | |
|
|
267 | $source .= <<EOF; |
|
|
268 | { |
|
|
269 | dSP; |
|
|
270 | SV *targ = PAD_SV ((PADOFFSET)$targ); |
|
|
271 | sv_copypv (TARG, TOPs); |
|
|
272 | SETTARG; |
|
|
273 | PUTBACK; |
|
|
274 | } |
|
|
275 | EOF |
265 | |
276 | |
266 | out_next; |
277 | out_next; |
267 | } |
278 | } |
268 | |
279 | |
269 | sub op_and { |
280 | sub op_and { |
… | |
… | |
330 | # pattern const+ (or general push1) |
341 | # pattern const+ (or general push1) |
331 | # pattern pushmark return(?) |
342 | # pattern pushmark return(?) |
332 | # pattern pushmark gv rv2av pushmark padsv+o.ä. aassign |
343 | # pattern pushmark gv rv2av pushmark padsv+o.ä. aassign |
333 | |
344 | |
334 | # pattern const method_named |
345 | # pattern const method_named |
335 | sub xop_method_named { |
346 | sub op_method_named { |
336 | $source .= <<EOF; |
347 | $source .= <<EOF; |
337 | { |
348 | { |
338 | static HV *last_stash; |
349 | static HV *last_stash; |
339 | static SV *last_cv; |
350 | static SV *last_cv; |
340 | static U32 last_sub_generation; |
351 | static U32 last_sub_generation; |