Changeset 14356
- Timestamp:
- 10/17/06 08:26:14 (2 years ago)
- svk:copy_cache_prev:
- 21206
- Location:
- perl5/PIL2JS
- Files:
-
- 19 modified
-
README (modified) (1 diff)
-
lib/PIL.pm (modified) (3 diffs)
-
lib/PIL/PPad.pm (modified) (1 diff)
-
lib/PIL/PPos.pm (modified) (1 diff)
-
lib/PIL/PVal.pm (modified) (1 diff)
-
lib/PIL/Subs.pm (modified) (3 diffs)
-
lib/Prelude/JS.pm (modified) (3 diffs)
-
lib6/Prelude/JS/Array.pm (modified) (1 diff)
-
lib6/Prelude/JS/Bool.pm (modified) (1 diff)
-
lib6/Prelude/JS/Continuations.pm (modified) (1 diff)
-
lib6/Prelude/JS/ControlFlow.pm (modified) (1 diff)
-
lib6/Prelude/JS/Hash.pm (modified) (1 diff)
-
lib6/Prelude/JS/JSAN.pm (modified) (1 diff)
-
lib6/Prelude/JS/Pair.pm (modified) (1 diff)
-
lib6/Prelude/JS/Perl5.pm (modified) (1 diff)
-
lib6/Prelude/JS/Rules.pm (modified) (1 diff)
-
lib6/Prelude/JS/Str.pm (modified) (2 diffs)
-
libjs/PIL2JS.js (modified) (27 diffs)
-
pil2js.pl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
perl5/PIL2JS/README
r13342 r14356 587 587 =item * 588 588 589 C<method foo (Bar $self:)> should create a C<&Bar::foo>, not a C<& main::foo>.589 C<method foo (Bar $self:)> should create a C<&Bar::foo>, not a C<&Main::foo>. 590 590 Required to implement hash and array autovification elegantly. (Partly a PIL1 591 591 bug.) -
perl5/PIL2JS/lib/PIL.pm
r12377 r14356 245 245 var PIL2JS = AlsoPIL2JS_SpeedupHack; 246 246 var pad = {}; PIL2JS_subpads.push(pad); 247 pad['\$?POSITION'] = _24 main_3a_3a_3fPOSITION;248 pad['\$_'] = _24 main_3a_3a_;247 pad['\$?POSITION'] = _24Main_3a_3a_3fPOSITION; 248 pad['\$_'] = _24Main_3a_3a_; 249 249 250 250 %s … … 337 337 # ::JS::Root:: ::= ::*::; 338 338 if($str =~ /^&\*?JS::Root::(.+)$/) { 339 $str = "& main::$1";339 $str = "&Main::$1"; 340 340 # ::JS::native_js_function 341 341 } elsif($str =~ /^[\&\$\@\+\%\:]\*?JS::(.+)$/) { … … 346 346 return sprintf "PIL2JS.resolve_callervar($delta, %s)", 347 347 doublequote($name); 348 # No qualification? Use " main" as package name. XXX! Lexical variables?348 # No qualification? Use "Main" as package name. XXX! Lexical variables? 349 349 } elsif(length($str) and $str !~ /::/) { 350 350 $str = 351 351 substr($str, 0, 1) . 352 " main::" .352 "Main::" . 353 353 substr($str, 1); 354 354 } -
perl5/PIL2JS/lib/PIL/PPad.pm
r7900 r14356 89 89 block_leave_hooks.push(function (retval) { 90 90 if(!PIL2JS.cps2normal( 91 _26 main_3a_3aprefix_3a_3f.FETCH(),91 _26Main_3a_3aprefix_3a_3f.FETCH(), 92 92 [PIL2JS.Context.ItemAny, retval] 93 93 ).FETCH()) -
perl5/PIL2JS/lib/PIL/PPos.pm
r6937 r14356 30 30 no warnings "recursion"; 31 31 return sprintf 32 "_24 main_3a_3a_3fPOSITION.BINDTO(new PIL2JS.Box.Constant(%s));\n%s",32 "_24Main_3a_3a_3fPOSITION.BINDTO(new PIL2JS.Box.Constant(%s));\n%s", 33 33 PIL::doublequote($self->{pPos}), $self->{pNode}->as_js; 34 34 } -
perl5/PIL2JS/lib/PIL/PVal.pm
r10814 r14356 47 47 sub as_js { 48 48 my $key = ref $_[0]->{key} 49 ? sprintf "PIL2JS.cps2normal(_26 main_3a_3aprefix_3a_7e.FETCH(), [PIL2JS.Context.ItemAny, %s]).toNative()", $_[0]->{key}->as_js49 ? sprintf "PIL2JS.cps2normal(_26Main_3a_3aprefix_3a_7e.FETCH(), [PIL2JS.Context.ItemAny, %s]).toNative()", $_[0]->{key}->as_js 50 50 : PIL::doublequote($_[0]->{key}); 51 51 sprintf "new PIL2JS.Box.Constant(new PIL2JS.NamedPair(%s, %s))", -
perl5/PIL2JS/lib/PIL/Subs.pm
r7343 r14356 32 32 my $jsvar = PIL::name_mangle $self->name; 33 33 my $name = PIL::doublequote $self->name; 34 $js .= "_26 main_3a_3a_3fBLOCK = $jsvar; pad['&?BLOCK'] = _26main_3a_3a_3fBLOCK;\n"34 $js .= "_26Main_3a_3a_3fBLOCK = $jsvar; pad['&?BLOCK'] = _26Main_3a_3a_3fBLOCK;\n" 35 35 if $PIL::IN_SUBLIKE >= PIL::SUBBLOCK; 36 $js .= "_26 main_3a_3a_3fSUB = $jsvar; pad['&?SUB'] = _26main_3a_3a_3fSUB;\n"36 $js .= "_26Main_3a_3a_3fSUB = $jsvar; pad['&?SUB'] = _26Main_3a_3a_3fSUB;\n" 37 37 if $PIL::IN_SUBLIKE >= PIL::SUBROUTINE; 38 $js .= "_24 main_3a_3a_3fSUBNAME = new PIL2JS.Box.Constant($name); pad['\$?SUBNAME'] = _24main_3a_3a_3fSUBNAME;\n";38 $js .= "_24Main_3a_3a_3fSUBNAME = new PIL2JS.Box.Constant($name); pad['\$?SUBNAME'] = _24Main_3a_3a_3fSUBNAME;\n"; 39 39 40 40 return ($js, @vars, qw< &?BLOCK &?SUB $?SUBNAME >); … … 97 97 if($self->name =~ /^&\*END_\d+/) { 98 98 $js .= sprintf 99 "_40 main_3a_3a_2aEND.FETCH().push(%s);\n",99 "_40Main_3a_3a_2aEND.FETCH().push(%s);\n", 100 100 PIL::name_mangle $self->name; 101 101 } … … 155 155 my $vars; 156 156 $vars .= $PIL::IN_SUBLIKE >= PIL::SUBROUTINE && !$self->isa("PIL::PSub") 157 ? "_24 main_3a_3a_3fSUBNAME = new PIL2JS.Box.Constant('<anon>');\n"157 ? "_24Main_3a_3a_3fSUBNAME = new PIL2JS.Box.Constant('<anon>');\n" 158 158 : ""; 159 $vars .= "_24 main_3a_3a_3fPOSITION = new PIL2JS.Box('<unknown>'); pad['\$?POSITION'] = _24main_3a_3a_3fPOSITION;\n";160 $vars .= "var _24 main_3a_3a_ = new PIL2JS.Box(undefined); pad['\$_'] = _24main_3a_3a_;\n"159 $vars .= "_24Main_3a_3a_3fPOSITION = new PIL2JS.Box('<unknown>'); pad['\$?POSITION'] = _24Main_3a_3a_3fPOSITION;\n"; 160 $vars .= "var _24Main_3a_3a_ = new PIL2JS.Box(undefined); pad['\$_'] = _24Main_3a_3a_;\n" 161 161 unless grep { $_->name eq '$_' } @{ $self->params }; 162 162 -
perl5/PIL2JS/lib/Prelude/JS.pm
r7555 r14356 16 16 ( 17 17 PIL2JS.cps2normal( 18 _26 main_3a_3aprefix_3a_3f.FETCH(),18 _26Main_3a_3aprefix_3a_3f.FETCH(), 19 19 [ PIL2JS.Context.ItemAny, $cond ] 20 20 ).FETCH() … … 57 57 58 58 push @PIL::PIL1_HACK_CLASSDECLS, 59 sprintf "if(!%s) var %s = PIL2JS.new_empty_class(%s, _3a main_3a_3aItem);",59 sprintf "if(!%s) var %s = PIL2JS.new_empty_class(%s, _3aMain_3a_3aItem);", 60 60 PIL::name_mangle(":$classname"), 61 61 PIL::name_mangle(":$classname"), … … 92 92 93 93 my $undef = $type eq "S" ? '""' : 0; 94 my $conv = "_26 main_3a_3aprefix_3a_" . ($type eq "S" ? "7e" : "2b");94 my $conv = "_26Main_3a_3aprefix_3a_" . ($type eq "S" ? "7e" : "2b"); 95 95 96 96 register "&$name" => sub { -
perl5/PIL2JS/lib6/Prelude/JS/Array.pm
r13342 r14356 437 437 JS::inline('(function () { 438 438 PIL2JS.addmethod( 439 _3a main_3a_3aItem,439 _3aMain_3a_3aItem, 440 440 "postcircumfix:[]", 441 441 _26PIL2JS_3a_3aInternals_3a_3aHacks_3a_3aarray_postcircumfix_for_undefs -
perl5/PIL2JS/lib6/Prelude/JS/Bool.pm
r14352 r14356 30 30 31 31 sub infix:<//> ($a, Code $b) is primitive { defined($a) ?? $a !! $b() } 32 sub infix:<||> ($a, Code $b ) is primitive { $a ?? $a !! $b() }32 sub infix:<||> ($a, Code $b999999) is primitive { $a ?? $a !! $b999999() } 33 33 sub infix:<&&> ($a, Code $b) is primitive { $a ?? $b() !! $a } 34 34 sub infix:<err> ($a, Code $b) is primitive { infix:<//>($a, $b()) } -
perl5/PIL2JS/lib6/Prelude/JS/Continuations.pm
r6505 r14356 22 22 PIL2JS.catch_end_exception(function () { 23 23 PIL2JS.runloop(function () { 24 _26 main_3a_3aexit.FETCH()([24 _26Main_3a_3aexit.FETCH()([ 25 25 PIL2JS.Context.ItemAny, 26 26 new PIL2JS.Box.Constant(undefined), -
perl5/PIL2JS/lib6/Prelude/JS/ControlFlow.pm
r13342 r14356 89 89 var cxt = args[0], code = args[1], cc = args.pop(); 90 90 var ret = new PIL2JS.Box.Constant(undefined); 91 _24 main_3a_3a_21 = new PIL2JS.Box(undefined);91 _24Main_3a_3a_21 = new PIL2JS.Box(undefined); 92 92 93 93 try { ret = PIL2JS.cps2normal(code.FETCH(), [PIL2JS.Context.ItemAny]) } catch(err) { 94 94 // Set $! 95 _24 main_3a_3a_21 = new PIL2JS.Box(95 _24Main_3a_3a_21 = new PIL2JS.Box( 96 96 err.pil2js_orig_msg 97 97 ? err.pil2js_orig_msg.FETCH() -
perl5/PIL2JS/lib6/Prelude/JS/Hash.pm
r13342 r14356 147 147 JS::inline('(function () { 148 148 PIL2JS.addmethod( 149 _3a main_3a_3aItem,149 _3aMain_3a_3aItem, 150 150 "postcircumfix:{}", 151 151 _26PIL2JS_3a_3aInternals_3a_3aHacks_3a_3ahash_postcircumfix_for_undefs -
perl5/PIL2JS/lib6/Prelude/JS/JSAN.pm
r6330 r14356 21 21 for(var i = 0; i < exportList.length; i++) { 22 22 var name = exportList[i]; 23 // & main::<name>24 var p6name = "_26 main_3a_3a" + name;23 // &Main::<name> 24 var p6name = "_26Main_3a_3a" + name; 25 25 JSAN.globalScope[p6name] = PIL2JS.toPIL2JSBox(classdef[name]); 26 26 } -
perl5/PIL2JS/lib6/Prelude/JS/Pair.pm
r7946 r14356 47 47 JS::inline('(function () { 48 48 PIL2JS.addmethod( 49 _3a main_3a_3aPair,49 _3aMain_3a_3aPair, 50 50 "postcircumfix:{}", 51 51 _26PIL2JS_3a_3aInternals_3a_3aHacks_3a_3apostcircumfix_for_pair_objects -
perl5/PIL2JS/lib6/Prelude/JS/Perl5.pm
r12278 r14356 6 6 var f = Perl5.perl_can(mod, imports[sym]); 7 7 // XXX: should be caller space, not main! 8 // & main::<name>9 var p6name = "_26 main_3a_3a" + imports[sym];8 // &Main::<name> 9 var p6name = "_26Main_3a_3a" + imports[sym]; 10 10 eval(p6name+" = PIL2JS.toPIL2JSBox(f)"); 11 11 } -
perl5/PIL2JS/lib6/Prelude/JS/Rules.pm
r13342 r14356 235 235 JS::inline('(function () { 236 236 PIL2JS.addmethod( 237 _3a main_3a_3aMatch,237 _3aMain_3a_3aMatch, 238 238 "postcircumfix:[]", 239 239 _26PIL2JS_3a_3aInternals_3a_3aHacks_3a_3apostcircumfix_for_match_objects -
perl5/PIL2JS/lib6/Prelude/JS/Str.pm
r10200 r14356 10 10 function () { 11 11 var str_ = String(PIL2JS.cps2normal( 12 _26 main_3a_3aprefix_3a_7e.FETCH(),12 _26Main_3a_3aprefix_3a_7e.FETCH(), 13 13 [ PIL2JS.Context.ItemAny, str ] 14 14 ).toNative()); … … 18 18 function (n) { 19 19 var str_ = String(PIL2JS.cps2normal( 20 _26 main_3a_3aprefix_3a_7e.FETCH(),20 _26Main_3a_3aprefix_3a_7e.FETCH(), 21 21 [ PIL2JS.Context.ItemAny, str ] 22 22 ).toNative()); 23 23 var repl = String(PIL2JS.cps2normal( 24 _26 main_3a_3aprefix_3a_7e.FETCH(),24 _26Main_3a_3aprefix_3a_7e.FETCH(), 25 25 [ PIL2JS.Context.ItemAny, n ] 26 26 ).toNative()); -
perl5/PIL2JS/libjs/PIL2JS.js
r13280 r14356 213 213 ) { 214 214 new_val = PIL2JS.cps2normal( 215 _26 main_3a_3ahash.FETCH(),215 _26Main_3a_3ahash.FETCH(), 216 216 [PIL2JS.Context.SlurpyAny].concat(new_val) 217 217 ).FETCH(); … … 229 229 new_val = 230 230 PIL2JS.cps2normal( 231 _26 main_3a_3ahash.FETCH(), [PIL2JS.Context.SlurpyAny].concat(pairs)231 _26Main_3a_3ahash.FETCH(), [PIL2JS.Context.SlurpyAny].concat(pairs) 232 232 ).FETCH(); 233 233 … … 238 238 ) { 239 239 new_val = PIL2JS.cps2normal( 240 _26 main_3a_3ahash.FETCH(),240 _26Main_3a_3ahash.FETCH(), 241 241 [PIL2JS.Context.SlurpyAny, n] 242 242 ).FETCH(); … … 248 248 ) { 249 249 new_val = PIL2JS.cps2normal( 250 _26 main_3a_3aprefix_3a_5c.FETCH(), [PIL2JS.Context.ItemAny, n]250 _26Main_3a_3aprefix_3a_5c.FETCH(), [PIL2JS.Context.ItemAny, n] 251 251 ).FETCH(); 252 252 } else if( … … 309 309 this.isConstant = other.isConstant; 310 310 } else { 311 PIL2JS.die("Can't use object of type \"" + PIL2JS.cps2normal(_26 main_3a_3aref.FETCH(), [PIL2JS.Context.ItemAny, other]).toNative() + "\" as an array or array reference!");311 PIL2JS.die("Can't use object of type \"" + PIL2JS.cps2normal(_26Main_3a_3aref.FETCH(), [PIL2JS.Context.ItemAny, other]).toNative() + "\" as an array or array reference!"); 312 312 } 313 313 } else if(my_ctype == PIL2JS.ContainerType.Hash && other_ctype == PIL2JS.ContainerType.Scalar) { … … 321 321 this.isConstant = other.isConstant; 322 322 } else { 323 PIL2JS.die("Can't use object of type \"" + PIL2JS.cps2normal(_26 main_3a_3aref.FETCH(), [PIL2JS.Context.ItemAny, other]).toNative() + "\" as a hash or hash reference!");323 PIL2JS.die("Can't use object of type \"" + PIL2JS.cps2normal(_26Main_3a_3aref.FETCH(), [PIL2JS.Context.ItemAny, other]).toNative() + "\" as a hash or hash reference!"); 324 324 } 325 325 // Impossible (confirmed by Larry: … … 611 611 } 612 612 613 var _3a main_3a_3aAny = PIL2JS.new_empty_class("Any", new PIL2JS.Box.Constant(PIL2JS.__PIL2JSClass));614 var _3a main_3a_3aItem = PIL2JS.new_empty_class("Item", _3amain_3a_3aAny);615 var _3a main_3a_3aArray = PIL2JS.new_empty_class("Array", _3amain_3a_3aItem);616 var _3a main_3a_3aHash = PIL2JS.new_empty_class("Hash", _3amain_3a_3aItem);617 var _3a main_3a_3aPair = PIL2JS.new_empty_class("Pair", _3amain_3a_3aItem);618 var _3a main_3a_3aStr = PIL2JS.new_empty_class("Str", _3amain_3a_3aItem);619 var _3a main_3a_3aNum = PIL2JS.new_empty_class("Num", _3amain_3a_3aItem);620 var _3a main_3a_3aInt = PIL2JS.new_empty_class("Int", _3amain_3a_3aNum);621 var _3a main_3a_3aRat = PIL2JS.new_empty_class("Rat", _3amain_3a_3aNum);622 var _3a main_3a_3aBool = PIL2JS.new_empty_class("Bool", _3amain_3a_3aItem);623 var _3a main_3a_3aCode = PIL2JS.new_empty_class("Code", _3amain_3a_3aItem);624 var _3a main_3a_3aBlock = PIL2JS.new_empty_class("Block", _3amain_3a_3aCode);625 var _3a main_3a_3aRoutine = PIL2JS.new_empty_class("Routine", _3amain_3a_3aCode);626 var _3a main_3a_3aSub = PIL2JS.new_empty_class("Sub", _3amain_3a_3aRoutine);627 var _3a main_3a_3aMethod = PIL2JS.new_empty_class("Method", _3amain_3a_3aRoutine);628 var _3a main_3a_3aSubmethod = PIL2JS.new_empty_class("Submethod", _3amain_3a_3aRoutine);629 var _3a main_3a_3aMulti = PIL2JS.new_empty_class("Multi", _3amain_3a_3aRoutine);630 var _3a main_3a_3aRule = PIL2JS.new_empty_class("Rule", _3amain_3a_3aRoutine);631 var _3a main_3a_3aMacro = PIL2JS.new_empty_class("Macro", _3amain_3a_3aRoutine);632 var _3a main_3a_3aRef = PIL2JS.new_empty_class("Ref", _3amain_3a_3aItem);633 var _3a main_3a_3aJunction = PIL2JS.new_empty_class("Junction", _3amain_3a_3aAny);634 var _3a main_3a_3aRul = PIL2JS.new_empty_class("Rul", _3amain_3a_3aItem);635 var _3a main_3a_3aMatch = PIL2JS.new_empty_class("Match", _3amain_3a_3aItem);613 var _3aMain_3a_3aAny = PIL2JS.new_empty_class("Any", new PIL2JS.Box.Constant(PIL2JS.__PIL2JSClass)); 614 var _3aMain_3a_3aItem = PIL2JS.new_empty_class("Item", _3aMain_3a_3aAny); 615 var _3aMain_3a_3aArray = PIL2JS.new_empty_class("Array", _3aMain_3a_3aItem); 616 var _3aMain_3a_3aHash = PIL2JS.new_empty_class("Hash", _3aMain_3a_3aItem); 617 var _3aMain_3a_3aPair = PIL2JS.new_empty_class("Pair", _3aMain_3a_3aItem); 618 var _3aMain_3a_3aStr = PIL2JS.new_empty_class("Str", _3aMain_3a_3aItem); 619 var _3aMain_3a_3aNum = PIL2JS.new_empty_class("Num", _3aMain_3a_3aItem); 620 var _3aMain_3a_3aInt = PIL2JS.new_empty_class("Int", _3aMain_3a_3aNum); 621 var _3aMain_3a_3aRat = PIL2JS.new_empty_class("Rat", _3aMain_3a_3aNum); 622 var _3aMain_3a_3aBool = PIL2JS.new_empty_class("Bool", _3aMain_3a_3aItem); 623 var _3aMain_3a_3aCode = PIL2JS.new_empty_class("Code", _3aMain_3a_3aItem); 624 var _3aMain_3a_3aBlock = PIL2JS.new_empty_class("Block", _3aMain_3a_3aCode); 625 var _3aMain_3a_3aRoutine = PIL2JS.new_empty_class("Routine", _3aMain_3a_3aCode); 626 var _3aMain_3a_3aSub = PIL2JS.new_empty_class("Sub", _3aMain_3a_3aRoutine); 627 var _3aMain_3a_3aMethod = PIL2JS.new_empty_class("Method", _3aMain_3a_3aRoutine); 628 var _3aMain_3a_3aSubmethod = PIL2JS.new_empty_class("Submethod", _3aMain_3a_3aRoutine); 629 var _3aMain_3a_3aMulti = PIL2JS.new_empty_class("Multi", _3aMain_3a_3aRoutine); 630 var _3aMain_3a_3aRule = PIL2JS.new_empty_class("Rule", _3aMain_3a_3aRoutine); 631 var _3aMain_3a_3aMacro = PIL2JS.new_empty_class("Macro", _3aMain_3a_3aRoutine); 632 var _3aMain_3a_3aRef = PIL2JS.new_empty_class("Ref", _3aMain_3a_3aItem); 633 var _3aMain_3a_3aJunction = PIL2JS.new_empty_class("Junction", _3aMain_3a_3aAny); 634 var _3aMain_3a_3aRul = PIL2JS.new_empty_class("Rul", _3aMain_3a_3aItem); 635 var _3aMain_3a_3aMatch = PIL2JS.new_empty_class("Match", _3aMain_3a_3aItem); 636 636 637 637 // Returns, given a native JS object, the corresponding boxed class object. 638 638 PIL2JS.nativeclass2realclass = function (constr) { 639 639 if(constr == Array) { 640 return _3a main_3a_3aArray;640 return _3aMain_3a_3aArray; 641 641 } else if(constr == PIL2JS.Hash) { 642 return _3a main_3a_3aHash;642 return _3aMain_3a_3aHash; 643 643 } else if(constr == PIL2JS.Pair) { 644 return _3a main_3a_3aPair;644 return _3aMain_3a_3aPair; 645 645 } else if(constr == PIL2JS.NamedPair) { 646 646 PIL2JS.die("A named pair leaked into PIL2JS.nativeclass2realclass!"); 647 647 } else if(constr == String) { 648 return _3a main_3a_3aStr;648 return _3aMain_3a_3aStr; 649 649 } else if(constr == Number) { 650 return _3a main_3a_3aNum;650 return _3aMain_3a_3aNum; 651 651 } else if(constr == Boolean) { 652 return _3a main_3a_3aBool;652 return _3aMain_3a_3aBool; 653 653 } else if(constr == Function) { 654 return _3a main_3a_3aCode;654 return _3aMain_3a_3aCode; 655 655 } else if(constr == PIL2JS.Junction.Any || constr == PIL2JS.Junction.All || constr == PIL2JS.Junction.One || constr == PIL2JS.Junction.None) { 656 return _3a main_3a_3aJunction;656 return _3aMain_3a_3aJunction; 657 657 } else if(constr == PIL2JS.Ref) { 658 return _3a main_3a_3aRef;658 return _3aMain_3a_3aRef; 659 659 } else if(constr == PIL2JS.Match) { 660 return _3a main_3a_3aMatch;660 return _3aMain_3a_3aMatch; 661 661 } else if(constr == PIL2JS.Rul) { 662 return _3a main_3a_3aRul;662 return _3aMain_3a_3aRul; 663 663 } else if(constr == undefined) { 664 return _3a main_3a_3aItem;664 return _3aMain_3a_3aItem; 665 665 } 666 666 }; … … 712 712 PIL2JS.StubIO = function () {}; 713 713 PIL2JS.StubIO.prototype.print = new PIL2JS.Box.Constant(function (args) { 714 _26 main_3a_3aprint.FETCH()(args);714 _26Main_3a_3aprint.FETCH()(args); 715 715 }); 716 716 PIL2JS.StubIO.prototype.say = new PIL2JS.Box.Constant(function (args) { 717 _26 main_3a_3asay.FETCH()(args);717 _26Main_3a_3asay.FETCH()(args); 718 718 }); 719 719 … … 731 731 732 732 // Magical variables: $?POSITION, $!, etc. 733 var _24 main_3a_3a_3fPOSITION = new PIL2JS.Box("<unknown>");734 var _24 main_3a_3a_3fSUBNAME = new PIL2JS.Box(undefined);735 var _24 main_3a_3a_21 = new PIL2JS.Box(undefined);736 var _25 main_3a_3aENV = new PIL2JS.Box(new PIL2JS.Hash);737 var _40 main_3a_3a_2aEND = new PIL2JS.Box([]);738 var _24 main_3a_3a_2aERR = new PIL2JS.StubIO;739 var _24 main_3a_3aERR = _24main_3a_3a_2aERR;740 var _24 main_3a_3a_2aOUT = new PIL2JS.StubIO;741 var _24 main_3a_3aOUT = _24main_3a_3a_2aOUT;742 var _24 main_3a_3a_2aPUGS_HAS_HSPLUGINS = new PIL2JS.Box.Constant(0);743 var _24 main_3a_3aPUGS_HAS_HSPLUGINS = _24main_3a_3a_2aPUGS_HAS_HSPLUGINS;744 var _40 main_3a_3a_2aINC = new PIL2JS.Box([]);745 var _26 main_3a_3a_3fBLOCK = new PIL2JS.Box(undefined);746 var _26 main_3a_3a_3fSUB = new PIL2JS.Box(undefined);747 var _24 main_3a_3a_3fOS = new PIL2JS.Box.Constant("unknown"); // XXX748 var _24 main_3a_3a_2aOS = new PIL2JS.Box.Constant(Perl5 ? Perl5.perl_eval('$^O') : "browser");749 var _24 main_3a_3aOS = _24main_3a_3a_2aOS;750 var _24 main_3a_3a_2aPID = new PIL2JS.Box.Constant(Perl5 ? Perl5.perl_eval('$$') : "unknown");751 var _24 main_3a_3aPID = _24main_3a_3a_2aPID;752 var _24 main_3a_3a_3fPUGS_BACKEND = new PIL2JS.Box.Constant("BACKEND_JAVASCRIPT");753 var _24 main_3a_3a_ = new PIL2JS.Box(undefined);733 var _24Main_3a_3a_3fPOSITION = new PIL2JS.Box("<unknown>"); 734 var _24Main_3a_3a_3fSUBNAME = new PIL2JS.Box(undefined); 735 var _24Main_3a_3a_21 = new PIL2JS.Box(undefined); 736 var _25Main_3a_3aENV = new PIL2JS.Box(new PIL2JS.Hash); 737 var _40Main_3a_3a_2aEND = new PIL2JS.Box([]); 738 var _24Main_3a_3a_2aERR = new PIL2JS.StubIO; 739 var _24Main_3a_3aERR = _24Main_3a_3a_2aERR; 740 var _24Main_3a_3a_2aOUT = new PIL2JS.StubIO; 741 var _24Main_3a_3aOUT = _24Main_3a_3a_2aOUT; 742 var _24Main_3a_3a_2aPUGS_HAS_HSPLUGINS = new PIL2JS.Box.Constant(0); 743 var _24Main_3a_3aPUGS_HAS_HSPLUGINS = _24Main_3a_3a_2aPUGS_HAS_HSPLUGINS; 744 var _40Main_3a_3a_2aINC = new PIL2JS.Box([]); 745 var _26Main_3a_3a_3fBLOCK = new PIL2JS.Box(undefined); 746 var _26Main_3a_3a_3fSUB = new PIL2JS.Box(undefined); 747 var _24Main_3a_3a_3fOS = new PIL2JS.Box.Constant("unknown"); // XXX 748 var _24Main_3a_3a_2aOS = new PIL2JS.Box.Constant(Perl5 ? Perl5.perl_eval('$^O') : "browser"); 749 var _24Main_3a_3aOS = _24Main_3a_3a_2aOS; 750 var _24Main_3a_3a_2aPID = new PIL2JS.Box.Constant(Perl5 ? Perl5.perl_eval('$$') : "unknown"); 751 var _24Main_3a_3aPID = _24Main_3a_3a_2aPID; 752 var _24Main_3a_3a_3fPUGS_BACKEND = new PIL2JS.Box.Constant("BACKEND_JAVASCRIPT"); 753 var _24Main_3a_3a_ = new PIL2JS.Box(undefined); 754 754 // $/ -- XXX WRONG needs to be lexical 755 var _24 main_3a_3a_2f = new PIL2JS.Box(undefined);755 var _24Main_3a_3a_2f = new PIL2JS.Box(undefined); 756 756 // Stub for $?CALLER::CALLER::POSITION, so Test.pm doesn't die on a failed 757 757 // test. … … 773 773 var err = new Error(errmsg.slice(-1, 1) == "\n" 774 774 ? errmsg 775 : errmsg + " at " + _24 main_3a_3a_3fPOSITION.toNative()775 : errmsg + " at " + _24Main_3a_3a_3fPOSITION.toNative() 776 776 ); 777 777 err.pil2js_orig_msg = msg; 778 err.pil2js_pos = _24 main_3a_3a_3fPOSITION.toNative();778 err.pil2js_pos = _24Main_3a_3a_3fPOSITION.toNative(); 779 779 return err; 780 780 }; … … 821 821 822 822 PIL2JS.already_exited = false; 823 var _26 main_3a_3aexit = new PIL2JS.Box(PIL2JS.Box.constant_func(1, function (args) {823 var _26Main_3a_3aexit = new PIL2JS.Box(PIL2JS.Box.constant_func(1, function (args) { 824 824 if(PIL2JS.already_exited) return; 825 825 PIL2JS.already_exited = true; 826 826 827 827 // Run all END blocks. 828 var blocks = _40 main_3a_3a_2aEND.FETCH();828 var blocks = _40Main_3a_3a_2aEND.FETCH(); 829 829 for(var i = 0; i < blocks.length; i++) { 830 830 PIL2JS.cps2normal(blocks[i].FETCH(), [PIL2JS.Context.Void]); … … 958 958 PIL2JS.print_exception = function (err) { 959 959 PIL2JS.cps2normal( 960 _26 main_3a_3asay.FETCH(), [960 _26Main_3a_3asay.FETCH(), [ 961 961 PIL2JS.Context.Void, 962 PIL2JS.cps2normal(_26 main_3a_3aprefix_3a_7e.FETCH(), [962 PIL2JS.cps2normal(_26Main_3a_3aprefix_3a_7e.FETCH(), [ 963 963 PIL2JS.Context.ItemAny, 964 964 //err.pil2js_orig_msg … … 993 993 994 994 // &*ref. 995 var _26 main_3a_3aref = PIL2JS.Box.constant_func(1, function (args) {995 var _26Main_3a_3aref = PIL2JS.Box.constant_func(1, function (args) { 996 996 var thing = args[1].FETCH(); 997 997 var cc = args.pop(); … … 1032 1032 } 1033 1033 }); 1034 _26 main_3a_3aref.perl_name = "&main::WHAT";1035 PIL2JS.addmethod(_3a main_3a_3aAny, "WHAT", _26main_3a_3aref);1034 _26Main_3a_3aref.perl_name = "&Main::WHAT"; 1035 PIL2JS.addmethod(_3aMain_3a_3aAny, "WHAT", _26Main_3a_3aref); 1036 1036 1037 1037 // &*isa. hack. 1038 var _26 main_3a_3aisa = PIL2JS.Box.constant_func(1, function (args) {1038 var _26Main_3a_3aisa = PIL2JS.Box.constant_func(1, function (args) { 1039 1039 args.shift(); // cxt 1040 1040 var self = args.shift(), 1041 1041 cmptype = args.shift().FETCH(); 1042 1042 cc = args.pop(), 1043 ref = _26 main_3a_3aref;1043 ref = _26Main_3a_3aref; 1044 1044 1045 1045 if(args.length > 0) { … … 1066 1066 }]); 1067 1067 }); 1068 _26 main_3a_3aisa.perl_name = "&main::isa";1069 PIL2JS.addmethod(_3a main_3a_3aAny, "isa", _26main_3a_3aisa);1068 _26Main_3a_3aisa.perl_name = "&Main::isa"; 1069 PIL2JS.addmethod(_3aMain_3a_3aAny, "isa", _26Main_3a_3aisa); 1070 1070 1071 1071 // &prefix:<\> 1072 var _26 main_3a_3aprefix_3a_5c = PIL2JS.Box.constant_func(1, function (args) {1072 var _26Main_3a_3aprefix_3a_5c = PIL2JS.Box.constant_func(1, function (args) { 1073 1073 var thing = args[1], cc = args.pop(); 1074 1074 cc(new PIL2JS.Box.Constant(new PIL2JS.Ref(thing))); 1075 1075 }); 1076 _26 main_3a_3aprefix_3a_5c.perl_name = "&main::prefix:\\";1076 _26Main_3a_3aprefix_3a_5c.perl_name = "&Main::prefix:\\"; 1077 1077
