-
-
Save MasterDuke17/b69bf98b0681a80a00986a4473842af1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/usr/bin/perl tools/build/gen-cat.pl jvm src/core/NativeTypes.nqp src/core/NQPRoutine.nqp src/core/NQPMu.nqp src/core/NQPCapture.nqp src/core/IO.nqp src/core/Regex.nqp src/core/Hash.nqp src/core/NQPLock.nqp src/core/testing.nqp src/core/YOUAREHERE.nqp > gen/jvm/stage2/NQPCORE.setting | |
java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna-4.0.0.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting=NULL --no-regex-lib --target=jar \ | |
--output=gen/jvm/stage2/NQPCORE.setting.jar gen/jvm/stage2/NQPCORE.setting | |
This type cannot unbox to a native integer | |
in compose (gen/jvm/stage2/nqpmo.nqp:1522) | |
in pkg_compose (gen/jvm/stage1/NQP.nqp:601) | |
in package_def (gen/jvm/stage1/NQP.nqp:2860) | |
in !reduce (gen/jvm/stage1/QRegex.nqp:1659) | |
in !cursor_pass (gen/jvm/stage1/QRegex.nqp:1602) | |
in package_def (gen/jvm/stage1/NQP.nqp:1249) | |
in package_declarator:sym<native> (gen/jvm/stage1/NQP.nqp) | |
in !protoregex (gen/jvm/stage1/QRegex.nqp:1699) | |
in package_declarator (gen/jvm/stage1/NQP.nqp) | |
in scoped (gen/jvm/stage1/NQP.nqp:1280) | |
in scope_declarator:sym<my> (gen/jvm/stage1/NQP.nqp) | |
in !protoregex (gen/jvm/stage1/QRegex.nqp:1699) | |
in scope_declarator (gen/jvm/stage1/NQP.nqp) | |
in term:sym<scope_declarator> (gen/jvm/stage1/NQP.nqp) | |
in !protoregex (gen/jvm/stage1/QRegex.nqp:1699) | |
in term (gen/jvm/stage1/NQPHLL.nqp) | |
in termish (gen/jvm/stage1/NQPHLL.nqp) | |
in EXPR (gen/jvm/stage1/NQPHLL.nqp:522) | |
in statement (gen/jvm/stage1/NQP.nqp:963) | |
in statementlist (gen/jvm/stage1/NQP.nqp) | |
in comp_unit (gen/jvm/stage1/NQP.nqp:930) | |
in TOP (gen/jvm/stage1/NQP.nqp:828) | |
in parse (gen/jvm/stage1/QRegex.nqp:2306) | |
in parse (gen/jvm/stage1/NQPHLL.nqp:1546) | |
in execute_stage (gen/jvm/stage1/NQPHLL.nqp:1462) | |
in run (gen/jvm/stage1/NQPHLL.nqp:1495) | |
in <anon> (gen/jvm/stage1/NQPHLL.nqp:1498) | |
in compile (gen/jvm/stage1/NQPHLL.nqp:1484) | |
in eval (gen/jvm/stage1/NQPHLL.nqp:1178) | |
in evalfiles (gen/jvm/stage1/NQPHLL.nqp:1439) | |
in command_eval (gen/jvm/stage1/NQPHLL.nqp:1329) | |
in command_line (gen/jvm/stage1/NQPHLL.nqp:1288) | |
in MAIN (gen/jvm/stage1/NQP.nqp:4149) | |
in <mainline> (gen/jvm/stage1/NQP.nqp:4145) | |
in <anon> (gen/jvm/stage1/NQP.nqp) | |
make: *** [Makefile:676: gen/jvm/stage2/NQPCORE.setting.jar] Error 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/usr/bin/perl tools/build/gen-cat.pl jvm src/core/NativeTypes.nqp src/core/NQPRoutine.nqp src/core/NQPMu.nqp src/core/NQPCapture.nqp src/core/IO.nqp src/core/Regex.nqp src/core/Hash.nqp src/core/NQPLock.nqp src/core/testing.nqp src/core/YOUAREHERE.nqp > gen/jvm/stage2/NQPCORE.setting | |
java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna-4.0.0.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting=NULL --no-regex-lib --target=jar \ | |
--output=gen/jvm/stage2/NQPCORE.setting.jar gen/jvm/stage2/NQPCORE.setting | |
java.lang.VerifyError: Bad type on operand stack | |
Exception Details: | |
Location: | |
9AB16ECD28778906CF8E5F7F3D7D2F552734836B.qb_76(Lorg/perl6/nqp/runtime/CompilationUnit;Lorg/perl6/nqp/runtime/ThreadContext;Lorg/perl6/nqp/runtime/CodeRef;Lorg/perl6/nqp/runtime/CallSiteDescriptor;Lorg/perl6/nqp/runtime/ResumeStatus$Frame;Lorg/perl6/nqp/sixmodel/SixModelObject;Lorg/perl6/nqp/sixmodel/SixModelObject;)V @163: d2l | |
Reason: | |
Type long (current frame, stack[0]) is not assignable to double | |
Current Frame: | |
bci: @163 | |
flags: { } | |
locals: { 'org/perl6/nqp/runtime/CompilationUnit', 'org/perl6/nqp/runtime/ThreadContext', 'org/perl6/nqp/runtime/CodeRef', 'org/perl6/nqp/runtime/CallSiteDescriptor', 'org/perl6/nqp/runtime/ResumeStatus$Frame', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', long, long_2nd, long, long_2nd, long, long_2nd, long, long_2nd, 'java/lang/String', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/sixmodel/SixModelObject', 'org/perl6/nqp/runtime/CallFrame' } | |
stack: { long, long_2nd } | |
Bytecode: | |
0x0000000: 013a 0701 3a08 013a 0901 3a0a 013a 0b01 | |
0x0000010: 3a0c 013a 0d01 3a0e 013a 0f01 3a10 013a | |
0x0000020: 1101 3a12 013a 1309 3714 0937 1609 3718 | |
0x0000030: 0937 1a01 3a1c 013a 1d01 3a1e 013a 1f01 | |
0x0000040: 3a20 013a 2101 3a22 013a 2301 3a24 1904 | |
0x0000050: c705 0bbb 000e 592b 2cb7 0012 3a25 1905 | |
0x0000060: 3a07 1906 3a08 1907 2bb8 0036 1293 1007 | |
0x0000070: 2bba 009a 0000 1301 e114 00a7 2bb8 00b4 | |
0x0000080: 2bb8 015a 2bb8 00b8 2bb8 00bc 593a 0957 | |
0x0000090: 092b b800 b82b b800 bc59 3a0a 5719 0a2b | |
0x00000a0: b803 2f8f 1909 2bb8 032f 8fb8 03a0 5c37 | |
0x00000b0: 1409 9499 03c1 1907 2bb8 0036 1293 1007 | |
0x00000c0: 2bba 009a 0000 1301 e114 00a7 2bb8 00b4 | |
0x00000d0: 190a 2bb8 032f 8f2b b801 623a 1d19 1d59 | |
0x00000e0: c700 0557 0113 0120 2bb8 0139 3a1d 191d | |
0x00000f0: 59c7 0005 5701 593a 0b57 1907 2bb8 0036 | |
0x0000100: 1293 1007 2bba 009a 0000 1301 e114 00a7 | |
0x0000110: 2bb8 00b4 190a 2bb8 032f 8f2b b801 623a | |
0x0000120: 1d19 1d59 c700 0557 0113 0200 2bb8 0139 | |
0x0000130: 3a1d 191d 59c7 0005 5701 593a 0c57 1907 | |
0x0000140: 2bb8 0036 1293 1007 2bba 009a 0000 1301 | |
0x0000150: dd14 00a3 2bb8 00b4 190b 2bb8 0135 2bb8 | |
0x0000160: 0139 3a1d 191d 59c7 0005 5701 593a 0d57 | |
0x0000170: 190d 2bb8 013c 0994 9900 af01 5719 0d13 | |
0x0000180: 03ea 2bb8 0124 5c37 1609 9499 0024 190d | |
0x0000190: 3a1d 1303 ea03 2b19 1dba 0127 0000 a700 | |
0x00001a0: 0703 a702 f519 25b8 011f 3a1e a700 0f16 | |
0x00001b0: 162b b800 b82b b800 bc3a 1e19 1e2b b801 | |
0x00001c0: 1009 9499 002c 0157 190d 190c 3a1d 3a1f | |
0x00001d0: 1303 ec05 2b19 1f19 1dba 011b 0000 a700 | |
0x00001e0: 0704 a702 b519 25b8 011f 3a20 a700 3501 | |
0x00001f0: 5713 03ee 190b 2bb8 0135 b801 7813 03f0 | |
0x0000200: b801 783a 1c19 1c2b b801 7ea7 0007 05a7 | |
0x0000210: 0288 1925 b801 822b b801 2e2b b801 323a | |
0x0000220: 2019 2057 a702 380a 2bb8 00b8 2bb8 00bc | |
0x0000230: 593a 0e57 092b b800 b82b b800 bc59 3a0f | |
0x0000240: 5719 0e2b b803 2f8f 1907 2bb8 0036 1293 | |
0x0000250: 1007 2bba 009a 0000 1303 4814 00f8 2bb8 | |
0x0000260: 00b4 2bb8 015a b803 a05c 3718 0994 9900 | |
0x0000270: 0b19 0f2b b803 f337 1816 1809 9499 0194 | |
0x0000280: 1907 2bb8 0036 1293 1007 2bba 009a 0000 | |
0x0000290: 1303 4814 00f8 2bb8 00b4 190e 2bb8 032f | |
0x00002a0: 8f2b b801 623a 1d19 1d59 c700 0557 0159 | |
0x00002b0: 3a10 5719 102b b801 1619 103a 1d3a 1f13 | |
0x00002c0: 0251 052b 191f 191d ba01 1b00 00a7 0007 | |
0x00002d0: 06a7 01c6 1925 b801 1f59 3a11 5719 1119 | |
0x00002e0: 0b2b b801 352b b801 393a 1d19 1d59 c700 | |
0x00002f0: 0557 0159 3a12 5719 122b b801 3c09 9499 | |
0x0000300: 00fa 0157 1912 1303 ea2b b801 245c 371a | |
0x0000310: 0994 9900 2419 123a 1d13 03ea 032b 191d | |
0x0000320: ba01 2700 00a7 0007 07a7 016e 1925 b801 | |
0x0000330: 1f3a 21a7 000f 161a 2bb8 00b8 2bb8 00bc | |
0x0000340: 3a21 1921 2bb8 0110 0994 9900 7919 123a | |
0x0000350: 1d13 03f5 032b 191d ba01 2700 00a7 0007 | |
0x0000360: 08a7 0136 1925 b801 1f59 3a13 5719 1319 | |
0x0000370: 0c3a 1d3a 1f13 03ec 052b 191f 191d ba01 | |
0x0000380: 1b00 00a7 0008 1006 a701 0f19 072b b800 | |
0x0000390: 3612 9310 072b ba00 9a00 0013 01dd 1400 | |
0x00003a0: a32b b800 b419 0b2b b801 3519 132b b801 | |
0x00003b0: 4457 0a2b b800 b82b b800 bc59 3a0f 3a22 | |
0x00003c0: a700 3601 5713 03f7 190b 2bb8 0135 b801 | |
0x00003d0: 7813 03f9 b801 783a 1c19 1c2b b801 7ea7 | |
0x00003e0: 0008 1007 a700 b319 25b8 0182 2bb8 012e | |
0x00003f0: 2bb8 0132 3a22 1922 5719 0e2b b803 2f8f | |
0x0000400: 0a61 2bb8 00b8 2bb8 00bc 593a 0e57 a7fe | |
0x0000410: 3319 0f59 3a23 2bb8 0110 0994 9a00 3901 | |
0x0000420: 5713 03f7 190b 2bb8 0135 b801 7813 03fb | |
0x0000430: b801 783a 1c19 1c2b b801 7ea7 0008 1008 | |
0x0000440: a700 5719 25b8 0182 2bb8 012e 2bb8 0132 | |
0x0000450: 3a24 a700 0719 233a 2419 2457 190a 2bb8 | |
0x0000460: 032f 8f0a 612b b800 b82b b800 bc59 3a0a | |
0x0000470: 57a7 fc2c 1614 1925 b802 55a7 0016 59c1 | |
0x0000480: 004f 9900 0919 25b6 0053 bf2b 5fb8 0059 | |
0x0000490: bf19 25b6 0053 b101 101e bd00 5b59 032c | |
0x00004a0: 5359 042d 5359 0519 0553 5906 1906 5359 | |
0x00004b0: 0719 0753 5908 1908 5359 1006 1909 5359 | |
0x00004c0: 1007 190a 5359 1008 190b 5359 1009 190c | |
0x00004d0: 5359 100a 190d 5359 100b 190e 5359 100c | |
0x00004e0: 190f 5359 100d 1910 5359 100e 1911 5359 | |
0x00004f0: 100f 1912 5359 1010 1913 5359 1011 1614 | |
0x0000500: b801 9153 5910 1216 16b8 0191 5359 1013 | |
0x0000510: 1618 b801 9153 5910 1416 1ab8 0191 5359 | |
0x0000520: 1015 191c 5359 1016 191d 5359 1017 191e | |
0x0000530: 5359 1018 191f 5359 1019 1920 5359 101a | |
0x0000540: 1921 5359 101b 1922 5359 101c 1923 5359 | |
0x0000550: 101d 1924 5319 25b6 005f bf19 04b4 0065 | |
0x0000560: 4c19 04b4 0069 3a25 1904 b400 6c59 0332 | |
0x0000570: c000 6e4d 5904 32c0 0070 4e59 0532 c000 | |
0x0000580: 733a 0559 0632 c000 733a 0659 0732 c000 | |
0x0000590: 733a 0759 0832 c000 733a 0859 1006 32c0 | |
0x00005a0: 0073 3a09 5910 0732 c000 733a 0a59 1008 | |
0x00005b0: 32c0 0073 3a0b 5910 0932 c000 733a 0c59 | |
0x00005c0: 100a 32c0 0073 3a0d 5910 0b32 c000 733a | |
0x00005d0: 0e59 100c 32c0 0073 3a0f 5910 0d32 c000 | |
0x00005e0: 733a 1059 100e 32c0 0073 3a11 5910 0f32 | |
0x00005f0: c000 733a 1259 1010 32c0 0073 3a13 5910 | |
0x0000600: 1132 c001 8db6 0195 3714 5910 1232 c001 | |
0x0000610: 8db6 0195 3716 5910 1332 c001 8db6 0195 | |
0x0000620: 3718 5910 1432 c001 8db6 0195 371a 5910 | |
0x0000630: 1532 c001 973a 1c59 1016 32c0 0073 3a1d | |
0x0000640: 5910 1732 c000 733a 1e59 1018 32c0 0073 | |
0x0000650: 3a1f 5910 1932 c000 733a 2059 101a 32c0 | |
0x0000660: 0073 3a21 5910 1b32 c000 733a 2259 101c | |
0x0000670: 32c0 0073 3a23 101d 32c0 0073 3a24 1904 | |
0x0000680: b600 7619 04b4 0079 aa00 0000 ffff fb16 | |
0x0000690: 0000 0000 0000 0008 ffff fb16 ffff fb56 | |
0x00006a0: ffff fb83 ffff fc45 ffff fc9d ffff fcd5 | |
0x00006b0: ffff fcfb ffff fd57 ffff fdb3 | |
Exception Handler Table: | |
bci [409, 417] => handler: 417 | |
bci [473, 481] => handler: 481 | |
bci [520, 526] => handler: 526 | |
bci [712, 720] => handler: 720 | |
bci [800, 808] => handler: 808 | |
bci [856, 864] => handler: 864 | |
bci [894, 902] => handler: 902 | |
bci [988, 994] => handler: 994 | |
bci [1080, 1086] => handler: 1086 | |
bci [94, 1150] => handler: 1150 | |
Stackmap Table: | |
full_frame(@157,{Object[#4],Object[#26],Object[#110],Object[#112],Object[#97],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Long,Long,Long,Long,Object[#407],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#14]},{}) | |
same_locals_1_stack_item_extended(@229,Object[#115]) | |
same_locals_1_stack_item_frame(@246,Object[#115]) | |
same_locals_1_stack_item_frame(@297,Object[#115]) | |
same_locals_1_stack_item_frame(@314,Object[#115]) | |
same_locals_1_stack_item_frame(@364,Object[#115]) | |
same_frame(@414) | |
same_locals_1_stack_item_frame(@417,Object[#71]) | |
same_frame(@421) | |
same_frame(@431) | |
same_frame(@443) | |
same_frame(@478) | |
same_locals_1_stack_item_frame(@481,Object[#71]) | |
same_frame(@485) | |
same_frame(@495) | |
same_frame(@523) | |
same_locals_1_stack_item_frame(@526,Object[#71]) | |
same_frame(@530) | |
same_frame(@545) | |
same_frame(@551) | |
same_frame(@577) | |
same_frame(@633) | |
same_locals_1_stack_item_frame(@687,Object[#115]) | |
same_frame(@717) | |
same_locals_1_stack_item_frame(@720,Object[#71]) | |
same_frame(@724) | |
same_locals_1_stack_item_frame(@755,Object[#115]) | |
same_frame(@805) | |
same_locals_1_stack_item_frame(@808,Object[#71]) | |
same_frame(@812) | |
same_frame(@822) | |
same_frame(@834) | |
same_frame(@861) | |
same_locals_1_stack_item_frame(@864,Object[#71]) | |
same_frame(@868) | |
same_frame(@899) | |
same_locals_1_stack_item_frame(@902,Object[#71]) | |
same_frame(@907) | |
same_frame(@963) | |
same_frame(@991) | |
same_locals_1_stack_item_frame(@994,Object[#71]) | |
same_frame(@999) | |
same_frame(@1014) | |
same_frame(@1017) | |
same_frame(@1041) | |
same_frame(@1083) | |
same_locals_1_stack_item_frame(@1086,Object[#71]) | |
same_frame(@1091) | |
same_frame(@1109) | |
same_frame(@1113) | |
same_frame(@1116) | |
same_frame(@1140) | |
same_locals_1_stack_item_frame(@1150,Object[#77]) | |
same_locals_1_stack_item_frame(@1163,Object[#77]) | |
same_frame(@1169) | |
full_frame(@1175,{Object[#4],Object[#26],Object[#110],Object[#112],Object[#97],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Long,Long,Long,Long,Object[#407],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#115],Object[#14]},{Object[#71],Integer}) | |
full_frame(@1371,{Object[#4],Object[#26],Object[#110],Object[#112],Object[#97],Object[#115],Object[#115],Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Long,Long,Long,Long,Null,Null,Null,Null,Null,Null,Null,Null,Null},{}) | |
in <anon> (src/vm/jvm/ModuleLoader.nqp:76) | |
in load_module (src/vm/jvm/ModuleLoader.nqp:58) | |
in load_module (gen/jvm/stage1/NQP.nqp:299) | |
in statement_control:sym<use> (gen/jvm/stage1/NQP.nqp:2436) | |
in !reduce (gen/jvm/stage1/QRegex.nqp:1659) | |
in !cursor_pass (gen/jvm/stage1/QRegex.nqp:1602) | |
in statement_control:sym<use> (gen/jvm/stage1/NQP.nqp) | |
in !protoregex (gen/jvm/stage1/QRegex.nqp:1699) | |
in statement_control (gen/jvm/stage1/NQP.nqp) | |
in statement (gen/jvm/stage1/NQP.nqp:967) | |
in statementlist (gen/jvm/stage1/NQP.nqp) | |
in comp_unit (gen/jvm/stage1/NQP.nqp:934) | |
in TOP (gen/jvm/stage1/NQP.nqp:832) | |
in parse (gen/jvm/stage1/QRegex.nqp:2306) | |
in parse (gen/jvm/stage1/NQPHLL.nqp:1546) | |
in execute_stage (gen/jvm/stage1/NQPHLL.nqp:1462) | |
in run (gen/jvm/stage1/NQPHLL.nqp:1495) | |
in <anon> (gen/jvm/stage1/NQPHLL.nqp:1498) | |
in compile (gen/jvm/stage1/NQPHLL.nqp:1484) | |
in eval (gen/jvm/stage1/NQPHLL.nqp:1178) | |
in evalfiles (gen/jvm/stage1/NQPHLL.nqp:1439) | |
in command_eval (gen/jvm/stage1/NQPHLL.nqp:1329) | |
in command_line (gen/jvm/stage1/NQPHLL.nqp:1288) | |
in MAIN (gen/jvm/stage1/NQP.nqp:4153) | |
in <mainline> (gen/jvm/stage1/NQP.nqp:4149) | |
in <anon> (gen/jvm/stage1/NQP.nqp) | |
make: *** [Makefile:676: gen/jvm/stage2/NQPCORE.setting.jar] Error 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/vm/jvm/NQP/Ops.nqp b/src/vm/jvm/NQP/Ops.nqp | |
index 225dcedac..6b6c47c5b 100644 | |
--- a/src/vm/jvm/NQP/Ops.nqp | |
+++ b/src/vm/jvm/NQP/Ops.nqp | |
@@ -93,6 +93,10 @@ $ops.add_hll_op('nqp', 'postdec', -> $qastcomp, $op { | |
$tmp)); | |
}); | |
+$ops.add_hll_op('nqp', 'intify', -> $qastcomp, $op { | |
+ $qastcomp.as_jast($op[0], :want($RT_INT)) | |
+}); | |
+ | |
$ops.add_hll_op('nqp', 'numify', -> $qastcomp, $op { | |
$qastcomp.as_jast($op[0], :want($RT_NUM)) | |
}); | |
@@ -146,7 +150,7 @@ QAST::OperationsJAST.add_hll_unbox('nqp', $RT_INT, -> $qastcomp { | |
my $il := JAST::InstructionList.new(); | |
$il.append(JAST::Instruction.new( :op('aload_1') )); | |
$il.append(JAST::Instruction.new( :op('invokestatic'), $TYPE_OPS, | |
- 'smart_numify', 'Double', $TYPE_SMO, $TYPE_TC )); | |
+ 'smart_intify', 'Long', $TYPE_SMO, $TYPE_TC )); | |
$il.append(JAST::Instruction.new( :op('d2l') )); | |
$il | |
}); | |
diff --git a/src/vm/jvm/QAST/Compiler.nqp b/src/vm/jvm/QAST/Compiler.nqp | |
index 56a6a732c..4ce5f4c83 100644 | |
--- a/src/vm/jvm/QAST/Compiler.nqp | |
+++ b/src/vm/jvm/QAST/Compiler.nqp | |
@@ -688,6 +688,9 @@ QAST::OperationsJAST.add_core_op('list_s', -> $qastcomp, $op { | |
$arr | |
} | |
}); | |
+QAST::OperationsJAST.add_core_op('intify', -> $qastcomp, $op { | |
+ $qastcomp.as_jast($op[0], :want($RT_INT)) | |
+}); | |
QAST::OperationsJAST.add_core_op('numify', -> $qastcomp, $op { | |
$qastcomp.as_jast($op[0], :want($RT_NUM)) | |
}); | |
diff --git a/src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java b/src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java | |
index a58dac11e..3c239fe03 100644 | |
--- a/src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java | |
+++ b/src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java | |
@@ -3928,6 +3928,40 @@ public final class Ops { | |
// If anything else, we can't do it. | |
throw ExceptionHandling.dieInternal(tc, "Cannot numify this"); | |
} | |
+ public static long smart_intify(SixModelObject obj, ThreadContext tc) { | |
+ obj = decont(obj, tc); | |
+ | |
+ // If it's null, it's 0 | |
+ if (obj == null) | |
+ return 0; | |
+ | |
+ // If it can unbox as an int or a num, that wins right off. | |
+ StorageSpec ss = obj.st.REPR.get_storage_spec(tc, obj.st); | |
+ if ((ss.can_box & StorageSpec.CAN_BOX_INT) != 0) | |
+ return obj.get_int(tc); | |
+ if ((ss.can_box & StorageSpec.CAN_BOX_NUM) != 0) | |
+ return (long)obj.get_num(tc); | |
+ | |
+ // Otherwise, look for an Int method. | |
+ SixModelObject intMeth = obj.st.MethodCache.get("Int"); | |
+ if (intMeth != null) { | |
+ invokeDirect(tc, intMeth, invocantCallSite, new Object[] { obj }); | |
+ return result_i(tc.curFrame); | |
+ } | |
+ | |
+ // If it's a type object, zero. | |
+ if (obj instanceof TypeObject) | |
+ return 0; | |
+ | |
+ // See if it can unbox to a primitive we can numify. | |
+ if ((ss.can_box & StorageSpec.CAN_BOX_STR) != 0) | |
+ return coerce_s2i(obj.get_str(tc)); | |
+ if (obj instanceof VMArrayInstance || obj instanceof VMHashInstance) | |
+ return obj.elems(tc); | |
+ | |
+ // If anything else, we can't do it. | |
+ throw ExceptionHandling.dieInternal(tc, "Cannot intify this"); | |
+ } | |
/* Math operations. */ | |
public static double sec_n(double val) { | |
@@ -6454,8 +6488,8 @@ public final class Ops { | |
int curEdge = 0; | |
nfa.states[i] = new NFAStateInfo[edges]; | |
for (int j = 0; j < elems; j += 3) { | |
- int act = (int)smart_numify(edgeInfo.at_pos_boxed(tc, j), tc); | |
- int to = (int)smart_numify(edgeInfo.at_pos_boxed(tc, j + 2), tc); | |
+ int act = (int)smart_intify(edgeInfo.at_pos_boxed(tc, j), tc); | |
+ int to = (int)smart_intify(edgeInfo.at_pos_boxed(tc, j + 2), tc); | |
nfa.states[i][curEdge] = new NFAStateInfo(); | |
nfa.states[i][curEdge].act = act; | |
@@ -6468,7 +6502,7 @@ public final class Ops { | |
case NFA.EDGE_CODEPOINT_NEG: | |
case NFA.EDGE_CHARCLASS: | |
case NFA.EDGE_CHARCLASS_NEG: | |
- nfa.states[i][curEdge].arg_i = (int)smart_numify(edgeInfo.at_pos_boxed(tc, j + 1), tc); | |
+ nfa.states[i][curEdge].arg_i = (int)smart_intify(edgeInfo.at_pos_boxed(tc, j + 1), tc); | |
break; | |
case NFA.EDGE_CHARLIST: | |
case NFA.EDGE_CHARLIST_NEG: | |
@@ -6480,8 +6514,8 @@ public final class Ops { | |
case NFA.EDGE_CHARRANGE: | |
case NFA.EDGE_CHARRANGE_NEG: { | |
SixModelObject arg = edgeInfo.at_pos_boxed(tc, j + 1); | |
- nfa.states[i][curEdge].arg_lc = (char)smart_numify(arg.at_pos_boxed(tc, 0), tc); | |
- nfa.states[i][curEdge].arg_uc = (char)smart_numify(arg.at_pos_boxed(tc, 1), tc); | |
+ nfa.states[i][curEdge].arg_lc = (char)smart_intify(arg.at_pos_boxed(tc, 0), tc); | |
+ nfa.states[i][curEdge].arg_uc = (char)smart_intify(arg.at_pos_boxed(tc, 1), tc); | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment