[go: up one dir, main page]

Skip to content

microbench.js/goabi0: date_parse failure

jnml@e5-1650:~/src/modernc.org/qbecc/lib$ go test -v -timeout 24h -short -run Quick -keep |& tee log
=== RUN   TestQuickJS
mkdir -p .obj .obj/examples .obj/tests
qbecc -g -Wall -MMD -MF .obj/qjs.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/qjs.o qjs.c
qbecc -g -Wall -MMD -MF .obj/qjsc.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -DCONFIG_CC=\"qbecc\" -DCONFIG_PREFIX=\"/usr/local\" -O2 -c -o .obj/qjsc.o qjsc.c
qbecc -g -Wall -MMD -MF .obj/quickjs.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/quickjs.o quickjs.c
qbecc -g -Wall -MMD -MF .obj/dtoa.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/dtoa.o dtoa.c
qbecc -g -Wall -MMD -MF .obj/libregexp.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/libregexp.o libregexp.c
qbecc -g -Wall -MMD -MF .obj/libunicode.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/libunicode.o libunicode.c
qbecc -g -Wall -MMD -MF .obj/cutils.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/cutils.o cutils.c
qbecc -g -Wall -MMD -MF .obj/quickjs-libc.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/quickjs-libc.o quickjs-libc.c
qbecc -g -o qjsc .obj/qjsc.o .obj/quickjs.o .obj/dtoa.o .obj/libregexp.o .obj/libunicode.o .obj/cutils.o .obj/quickjs-libc.o -lm -lpthread -ldl 
./qjsc -s -c -o repl.c -m repl.js
qbecc -g -Wall -MMD -MF .obj/repl.o.d -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion -fwrapv  -D_GNU_SOURCE -DCONFIG_VERSION=\"2025-09-13\" -O2 -c -o .obj/repl.o repl.c
qbecc -g -rdynamic -o qjs .obj/qjs.o .obj/repl.o .obj/quickjs.o .obj/dtoa.o .obj/libregexp.o .obj/libunicode.o .obj/cutils.o .obj/quickjs-libc.o -lm -lpthread -ldl 
                  TEST          N TIME (ns)  REF (ns) SCORE (1000)
            empty_loop      20000    120.58
       empty_down_loop      20000    128.99
      empty_down_loop2      20000    164.54
         empty_do_loop      20000    130.65
              date_now       2000   1074.87
            date_parse        100   3791.95
             prop_read       5000    141.62
            prop_write      10000     96.60
           prop_update       5000    168.25
           prop_create        500    306.73
            prop_clone        500    327.52
           prop_delete        200    594.49
            array_read       2000    123.56
           array_write       5000     93.76
     array_prop_create         20    187.56
           array_slice         20    126.20
     array_length_decr          5    456.17
array_hole_length_decr          5    555.45
            array_push         10    621.43
             array_pop          5    805.50
      typed_array_read       2000    129.70
     typed_array_write       5000     95.53
           global_read       5000    125.00
          global_write       5000    123.60
   global_write_strict       5000    123.64
        local_destruct        200   1031.97
       global_destruct        500    775.42
global_destruct_strict        500    775.25
      global_func_call       2000    371.02
             func_call       2000    323.20
     func_closure_call       2000    325.71
             int_arith         10    220.63
           float_arith         10    246.82
        map_set_string          1   2064.74
           map_set_int          2   1065.44
        map_set_bigint          2   1701.42
            map_delete          1   2142.96
          weak_map_set          1   2077.66
       weak_map_delete          1   2413.32
             array_for        100    214.70
          array_for_in         50    487.11
          array_for_of        100    251.47
              math_min          5    446.86
          regexp_ascii          1   3694.57
          regexp_utf16          1   3822.52
         string_build1         20    176.17
        string_build1x         20    176.15
        string_build2c         20    190.62
         string_build2         10    302.19
         string_build3         10    351.73
         string_build4         10    329.00
   string_build_large1          1    356.25
   string_build_large2          1    403.26
         int_to_string       5000    323.58
          int_toString       2000    541.19
       float_to_string       1000   1112.02
        float_toString        500   1576.85
         float_toFixed       1000   1167.27
     float_toPrecision       1000   1321.83
   float_toExponential       1000   1249.85
         string_to_int       5000    574.60
       string_to_float       5000    669.92
        bigint32_arith         10    373.08
        bigint64_arith          5    481.64
       bigint256_arith          5    726.15
            sort_bench          1     60.20
                 total             47530.23
                  TEST          N TIME (ns)  REF (ns) SCORE (1000)
            empty_loop      20000    193.20
       empty_down_loop      10000    239.26
      empty_down_loop2      10000    314.32
         empty_do_loop      10000    233.52
              date_now       2000   1727.19
Date.parse error for 1
             prop_read       5000    205.82
            prop_write       5000    146.61
           prop_update       2000    257.46
           prop_create        500    497.52
            prop_clone        200    663.10
           prop_delete        100   1158.57
            array_read       2000    198.11
           array_write       2000    139.18
     array_prop_create         10    281.54
           array_slice         10    343.12
     array_length_decr          5    844.78
array_hole_length_decr          2   1181.24
            array_push          5   1167.69
             array_pop          5   1421.70
      typed_array_read       1000    222.14
     typed_array_write       2000    138.38
           global_read       5000    219.04
          global_write       5000    201.14
   global_write_strict       5000    200.97
        local_destruct        100   2259.85
       global_destruct        200   1557.34
global_destruct_strict        200   1558.22
      global_func_call       1000    547.51
             func_call       2000    462.83
     func_closure_call       2000    470.90
             int_arith         10    296.96
           float_arith         10    280.96
        map_set_string          1   3743.18
           map_set_int          2   1758.69
        map_set_bigint          1   2923.03
            map_delete          1   3793.47
          weak_map_set          1   3976.31
       weak_map_delete          1   4324.06
             array_for        100    289.83
          array_for_in         50    891.83
          array_for_of         50    550.51
              math_min          5    674.42
          regexp_ascii          1   6995.44
          regexp_utf16          1   7045.38
         string_build1         10    311.50
        string_build1x         10    311.52
        string_build2c         10    315.22
         string_build2          5    663.21
         string_build3          5    736.85
         string_build4          5    704.24
   string_build_large1          1    755.26
   string_build_large2          1    836.04
         int_to_string       2000    633.98
          int_toString       1000    932.04
       float_to_string        500   1826.51
        float_toString        500   2426.59
         float_toFixed        500   1929.83
     float_toPrecision        500   2065.51
   float_toExponential        500   2028.07
         string_to_int       2000   1007.40
       string_to_float       2000   1033.28
        bigint32_arith          5    627.15
        bigint64_arith          5    950.09
       bigint256_arith          2   1509.70
            sort_bench          1    137.43
                 total             78337.74
    all_test.go:614: FAIL/GOABI0 error(s) detected
--- FAIL: TestQuickJS (128.44s)
FAIL
exit status 1
FAIL	modernc.org/qbecc/lib	128.442s
jnml@e5-1650:~/src/modernc.org/qbecc/lib$ 

Smaller repro:

function date_parse(n) {
    var x0 = 0, dx = 0;
    var j;
    for(j = 0; j < n; j++) {
        var x1 = x0 - x0 % 1000;
        var x2 = -x0;
        var d2 = new Date(x2);
        console.log(d2, d2.toISOString(), Date.parse(d2.toISOString()), x2);
        if (Date.parse(d2.toISOString()) != x2) {
            console.log("Date.parse error for " + x2);
        }
        dx = (dx * 1.1 + 1) >> 0;
        x0 = (x0 + dx) % 8.64e15;
    }
}

date_parse(2);
jnml@e5-1650:~/src/modernc.org/qbecc/lib/tmp/quickjs/gobi0$ qjs bug.js # gcc
Thu Jan 01 1970 01:00:00 GMT+0100 1970-01-01T00:00:00.000Z 0 0
Thu Jan 01 1970 00:59:59 GMT+0100 1969-12-31T23:59:59.999Z -1 -1
jnml@e5-1650:~/src/modernc.org/qbecc/lib/tmp/quickjs/gobi0$ ../qjs bug.js # qbecc
1970-01-01T00:00:00.000Z 1970-01-01T00:00:00.000Z 0 -0
1969-12-31T23:59:59.999Z 1969-12-31T23:59:59.999Z -1 -1
jnml@e5-1650:~/src/modernc.org/qbecc/lib/tmp/quickjs/gobi0$ 
jnml@e5-1650:~/src/modernc.org/qbecc/lib/tmp/quickjs/gobi0$ ./gobi0 bug.js # qbecc/GOABI0
1970-01-01T00:00:00.000Z 1970-01-01T00:00:00.000Z 0 -0
1970-02-19T17:02:47.295Z 1970-02-19T17:02:47.295Z 4294967295 -1
Date.parse error for -1