tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

const.js (10962B)


      1 function testConst(type, str, expected) {
      2    if (type === 'i64')
      3        wasmFullPassI64(`(module (func $run (result i64) (i64.const ${str})))`, expected);
      4    else
      5        wasmFullPass(`(module (func (result ${type}) (${type}.const ${str})) (export "run" (func 0)))`, expected);
      6 }
      7 
      8 function testConstError(type, str) {
      9  assertErrorMessage(() => wasmEvalText(`(module (func (result ${type}) (${type}.const ${str})) (export "" (func 0)))`).exports[""](), Error, /wasm text error/);
     10 }
     11 
     12 testConst('i32', '0', 0);
     13 testConst('i32', '-0', 0);
     14 testConst('i32', '23', 23);
     15 testConst('i32', '-23', -23);
     16 testConst('i32', '0x23', 35);
     17 testConst('i32', '-0x23', -35);
     18 testConst('i32', '2147483647', 2147483647);
     19 testConst('i32', '4294967295', -1);
     20 testConst('i32', '-2147483648', -2147483648);
     21 testConst('i32', '0x7fffffff', 2147483647);
     22 testConst('i32', '0x80000000', -2147483648);
     23 testConst('i32', '-0x80000000', -2147483648);
     24 testConst('i32', '0xffffffff', -1);
     25 
     26 testConst('i64', '0', 0);
     27 testConst('i64', '-0', 0);
     28 
     29 testConst('i64', '23', 23);
     30 testConst('i64', '-23', -23);
     31 
     32 testConst('i64', '0x23', 35);
     33 testConst('i64', '-0x23', -35);
     34 
     35 testConst('i64', '-0x1', -1);
     36 testConst('i64', '-1', -1);
     37 testConst('i64', '0xffffffffffffffff', -1);
     38 
     39 testConst('i64', '0xdeadc0de', 0xdeadc0de);
     40 testConst('i64', '0x1337c0de00000000', '0x1337c0de00000000');
     41 
     42 testConst('i64', '0x0102030405060708', '0x0102030405060708');
     43 testConst('i64', '-0x0102030405060708', '-0x0102030405060708');
     44 
     45 // INT64_MAX
     46 testConst('i64', '9223372036854775807', '0x7fffffffffffffff');
     47 testConst('i64', '0x7fffffffffffffff',  '0x7fffffffffffffff');
     48 
     49 // INT64_MAX + 1
     50 testConst('i64', '9223372036854775808', '0x8000000000000000');
     51 testConst('i64', '0x8000000000000000', '0x8000000000000000');
     52 
     53 // UINT64_MAX
     54 testConst('i64', '18446744073709551615', '0xffffffffffffffff');
     55 
     56 // INT64_MIN
     57 testConst('i64', '-9223372036854775808', '0x8000000000000000');
     58 testConst('i64', '-0x8000000000000000',  '0x8000000000000000');
     59 
     60 // INT64_MIN - 1
     61 testConstError('i64', '-9223372036854775809');
     62 
     63 testConstError('i64', '');
     64 testConstError('i64', '0.0');
     65 testConstError('i64', 'not an i64');
     66 
     67 testConst('f32', '0.0', 0.0);
     68 testConst('f32', '-0', -0.0);
     69 testConst('f32', '-0.0', -0.0);
     70 testConst('f32', '0x0.0', 0.0);
     71 testConst('f32', '-0x0.0', -0.0);
     72 testConst('f32', '-0x0', -0.0);
     73 testConst('f32', '0x0.0p0', 0.0);
     74 testConst('f32', '-0x0.0p0', -0.0);
     75 testConst('f32', 'inf', Infinity);
     76 testConst('f32', '-inf', -Infinity);
     77 testConst('f32', '+inf', Infinity);
     78 testConst('f32', 'nan', NaN);
     79 //testConst('f32', '-nan', NaN); // TODO: NYI
     80 testConst('f32', '+nan', NaN);
     81 //testConst('f32', 'nan:0x789', NaN); // TODO: NYI
     82 //testConst('f32', '-nan:0x789', NaN); // TODO: NYI
     83 //testConst('f32', '+nan:0x789', NaN); // TODO: NYI
     84 testConst('f32', '0x01p-149', 1.401298464324817e-45);
     85 testConst('f32', '0x1p-149', 1.401298464324817e-45);
     86 testConst('f32', '0x1p-150', 0);
     87 testConst('f32', '0x2p-150', 1.401298464324817e-45);
     88 testConst('f32', '0x1.2p-149', 1.401298464324817e-45);
     89 testConst('f32', '0x2.0p-149', 2.802596928649634e-45);
     90 testConst('f32', '0x2.2p-149', 2.802596928649634e-45);
     91 testConst('f32', '0x01p-148', 2.802596928649634e-45);
     92 testConst('f32', '0x0.1p-148', 0);
     93 testConst('f32', '0x0.1p-145', 1.401298464324817e-45);
     94 testConst('f32', '0x1p-148', 2.802596928649634e-45);
     95 testConst('f32', '0x1.111p-148', 2.802596928649634e-45);
     96 testConst('f32', '0x1.2p-148', 2.802596928649634e-45);
     97 testConst('f32', '0x2.0p-148', 5.605193857299268e-45);
     98 testConst('f32', '0x2.2p-148', 5.605193857299268e-45);
     99 testConst('f32', '0x1p-147', 5.605193857299268e-45);
    100 testConst('f32', '0x1p-126', 1.1754943508222875e-38);
    101 testConst('f32', '0x0.1fffffep+131', 3.4028234663852886e+38);
    102 testConst('f32', '0x1.fffffep+127', 3.4028234663852886e+38);
    103 testConstError('f32', '0x2.0p+127');
    104 testConstError('f32', '0x1.fffffep+128');
    105 testConst('f32', '0x0.1fffffep+128', 4.2535293329816107e+37);
    106 testConst('f32', '0x1p2', 4);
    107 testConst('f32', '0x10p2', 64);
    108 testConst('f32', '0x100p2', 1024);
    109 testConst('f32', '0x2p2', 8);
    110 testConst('f32', '0x4p2', 16);
    111 testConst('f32', '0x1p3', 8);
    112 testConst('f32', '0x1p4', 16);
    113 testConst('f32', '-0x1p+3', -8);
    114 testConst('f32', '0x3p-2', .75);
    115 testConst('f32', '-0x76.54p-32', -2.7550413506105542e-8);
    116 testConst('f32', '0xf.ffffffffffffffffp+123', 170141183460469231731687303715884105728);
    117 testConstError('f32', '0xf.ffffffffffffffffp+124');
    118 testConst('f32', '1.1754943508222875e-38', 1.1754943508222875e-38);
    119 testConst('f32', '3.4028234663852886e+38', 3.4028234663852886e+38);
    120 testConst('f32', '1.1754943508222875e-35', 1.1754943508222875e-35);
    121 testConst('f32', '3.4028234663852886e+35', 3.4028234346940236e+35);
    122 testConst('f32', '1.1754943508222875e-30', 1.1754943508222875e-30);
    123 testConst('f32', '3.4028234663852886e+30', 3.4028233462973677e+30);
    124 testConst('f32', '4.0', 4);
    125 testConst('f32', '-8.', -8);
    126 testConst('f32', '-2.7550413506105542e-8', -2.7550413506105542e-8);
    127 testConst('f32', '2.138260e+05', 2.138260e+05);
    128 testConst('f32', '3.891074380317903e-33', 3.891074380317903e-33);
    129 testConst('f32', '-9465807272673280.0', -9465807272673280);
    130 testConst('f32', '1076.1376953125', 1076.1376953125);
    131 testConst('f32', '-13364.1376953125', -13364.1376953125);
    132 testConst('f32', '4.133607864379883', 4.133607864379883);
    133 testConst('f32', '2.0791168212890625', 2.0791168212890625);
    134 testConst('f32', '0.000002414453774690628', 0.000002414453774690628);
    135 testConst('f32', '0.5312881469726562', 0.5312881469726562);
    136 testConst('f32', '5.570960e+05', 5.570960e+05);
    137 testConst('f32', '5.066758603788912e-7', 5.066758603788912e-7);
    138 testConst('f32', '-5.066758603788912e-7', -5.066758603788912e-7);
    139 testConst('f32', '1.875000e-01', 1.875000e-01);
    140 testConst('f32', '-0x1.b021fb98e9a17p-104', -8.322574059965897e-32);
    141 testConst('f32', '0x1.08de5bf3f784cp-129', 1.5202715065429227e-39);
    142 testConstError('f32', '0x1.d50b969fbbfb3p+388');
    143 testConst('f32', '0x3434.2p4', 2.138260e+05);
    144 testConst('f32', '0x1434.2p-120', 3.891074380317903e-33);
    145 testConst('f32', '-0x0434.234p43', -9465807272673280);
    146 testConst('f32', '0x0434.234p0', 1076.1376953125);
    147 testConst('f32', '-0x3434.234p0', -13364.1376953125);
    148 testConst('f32', '0x4.22342p0', 4.133607864379883);
    149 testConst('f32', '0x30000p-20', 1.875000e-01);
    150 testConst('f32', '0x0.533fcccp-125', 7.645233588931088e-39);
    151 testConst('f32', '0', 0);
    152 
    153 testConst('f64', '0.0', 0.0);
    154 testConst('f64', '-0.0', -0.0);
    155 testConst('f64', '-0', -0.0);
    156 testConst('f64', '0x0.0', 0.0);
    157 testConst('f64', '-0x0.0', -0.0);
    158 testConst('f64', '-0x0', -0.0);
    159 testConst('f64', '0x0.0p0', 0.0);
    160 testConst('f64', '-0x0.0p0', -0.0);
    161 testConst('f64', 'inf', Infinity);
    162 testConst('f64', '-inf', -Infinity);
    163 testConst('f64', '+inf', Infinity);
    164 testConst('f64', 'nan', NaN);
    165 //testConst('f64', '-nan', NaN); // TODO: NYI
    166 testConst('f64', '+nan', NaN);
    167 //testConst('f64', 'nan:0x789', NaN); // TODO: NYI
    168 //testConst('f64', '-nan:0x789', NaN); // TODO: NYI
    169 //testConst('f64', '+nan:0x789', NaN); // TODO: NYI
    170 testConst('f64', '0x01p-149', 1.401298464324817e-45);
    171 testConst('f64', '0x1p-149', 1.401298464324817e-45);
    172 testConst('f64', '0x1p-150', 7.006492321624085e-46);
    173 testConst('f64', '0x2p-150', 1.401298464324817e-45);
    174 testConst('f64', '0x1.2p-149', 1.5764607723654192e-45);
    175 testConst('f64', '0x2.0p-149', 2.802596928649634e-45);
    176 testConst('f64', '0x2.2p-149', 2.977759236690236e-45);
    177 testConst('f64', '0x01p-148', 2.802596928649634e-45);
    178 testConst('f64', '0x0.1p-148', 1.7516230804060213e-46);
    179 testConst('f64', '0x0.1p-145', 1.401298464324817e-45);
    180 testConst('f64', '0x1p-148', 2.802596928649634e-45);
    181 testConst('f64', '0x1.111p-148', 2.9893911087085575e-45);
    182 testConst('f64', '0x1.2p-148', 3.1529215447308384e-45);
    183 testConst('f64', '0x2.0p-148', 5.605193857299268e-45);
    184 testConst('f64', '0x2.2p-148', 5.955518473380473e-45);
    185 testConst('f64', '0x1p-147', 5.605193857299268e-45);
    186 testConst('f64', '0x1p-126', 1.1754943508222875e-38);
    187 testConst('f64', '0x0.1fffffep+131', 3.4028234663852886e+38);
    188 testConst('f64', '0x1.fffffep+127', 3.4028234663852886e+38);
    189 testConst('f64', '0x2.0p+127', 3.402823669209385e+38);
    190 testConst('f64', '0x1.fffffep+128', 6.805646932770577e+38);
    191 testConst('f64', '0x0.1fffffep+128', 4.2535293329816107e+37);
    192 testConst('f64', '0x1p2', 4);
    193 testConst('f64', '0x10p2', 64);
    194 testConst('f64', '0x100p2', 1024);
    195 testConst('f64', '0x2p2', 8);
    196 testConst('f64', '0x4p2', 16);
    197 testConst('f64', '0x1p3', 8);
    198 testConst('f64', '0x1p4', 16);
    199 testConst('f64', '-0x1p+3', -8);
    200 testConst('f64', '0x3p-2', .75);
    201 testConst('f64', '-0x76.54p-32', -2.7550413506105542e-8);
    202 testConst('f64', '1.1754943508222875e-38', 1.1754943508222875e-38);
    203 testConst('f64', '3.4028234663852886e+38', 3.4028234663852886e+38);
    204 testConst('f64', '1.1754943508222875e-35', 1.1754943508222875e-35);
    205 testConst('f64', '3.4028234663852886e+35', 3.4028234663852886e+35);
    206 testConst('f64', '1.1754943508222875e-30', 1.1754943508222875e-30);
    207 testConst('f64', '3.4028234663852886e+30', 3.402823466385289e+30);
    208 testConst('f64', '4.0', 4);
    209 testConst('f64', '-8.', -8);
    210 testConst('f64', '-2.7550413506105542e-8', -2.7550413506105542e-8);
    211 testConst('f64', '2.138260e+05', 2.138260e+05);
    212 testConst('f64', '3.891074380317903e-33', 3.891074380317903e-33);
    213 testConst('f64', '-9465807272673280.0', -9465807272673280);
    214 testConst('f64', '1076.1376953125', 1076.1376953125);
    215 testConst('f64', '-13364.1376953125', -13364.1376953125);
    216 testConst('f64', '4.133607864379883', 4.133607864379883);
    217 testConst('f64', '2.0791168212890625', 2.0791168212890625);
    218 testConst('f64', '0.000002414453774690628', 0.000002414453774690628);
    219 testConst('f64', '0.5312881469726562', 0.5312881469726562);
    220 testConst('f64', '5.570960e+05', 5.570960e+05);
    221 testConst('f64', '5.066758603788912e-7', 5.066758603788912e-7);
    222 testConst('f64', '-5.066758603788912e-7', -5.066758603788912e-7);
    223 testConst('f64', '1.875000e-01', 1.875000e-01);
    224 testConst('f64', '0x3434.2p4', 2.138260e+05);
    225 testConst('f64', '0x1434.2p-120', 3.891074380317903e-33);
    226 testConst('f64', '-0x0434.234p43', -9465807272673280);
    227 testConst('f64', '0x0434.234p0', 1076.1376953125);
    228 testConst('f64', '-0x3434.234p0', -13364.1376953125);
    229 testConst('f64', '0x4.22342p0', 4.133607864379883);
    230 testConst('f64', '0x4.2882000p-1', 2.0791168212890625);
    231 testConst('f64', '0x30000p-20', 1.875000e-01);
    232 testConst('f64', '0x2f05.000bef2113p-1036', 1.634717678224908e-308);
    233 testConst('f64', '0x24c6.004d0deaa3p-1036', 1.2784941357502007e-308);
    234 testConst('f64', '0', 0);
    235 
    236 testConstError('i32', '');
    237 testConstError('i32', '0.0');
    238 testConstError('i32', 'not an i32');
    239 testConstError('i32', '4294967296');
    240 testConstError('i32', '-2147483649');
    241 
    242 testConstError('f32', '');
    243 testConstError('f32', 'not an f32');
    244 testConstError('f32', 'nan:');
    245 testConstError('f32', 'nan:0');
    246 testConstError('f32', 'nan:0x');
    247 testConstError('f32', 'nan:0x0');
    248 
    249 testConstError('f64', '');
    250 testConstError('f64', 'not an f64');
    251 testConstError('f64', 'nan:');
    252 testConstError('f64', 'nan:0');
    253 testConstError('f64', 'nan:0x');
    254 testConstError('f64', 'nan:0x0');