From c24e375ba8db055dc0872523fd856e1d154ace13 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sat, 28 Apr 2018 01:45:21 +0200 Subject: [PATCH 1/5] test: fix buffer writes on mips Mips has a different way of handling NaN. This makes sure the tests pass on MIPS as well. --- test/parallel/test-buffer-writedouble.js | 4 ++++ test/parallel/test-buffer-writefloat.js | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-buffer-writedouble.js b/test/parallel/test-buffer-writedouble.js index 0dc26dbd3b23f1..1110656565f5b8 100644 --- a/test/parallel/test-buffer-writedouble.js +++ b/test/parallel/test-buffer-writedouble.js @@ -70,6 +70,10 @@ buffer.writeDoubleLE(NaN, 8); assert.ok(buffer.equals(new Uint8Array([ 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F +// Mips processors use a different NaN. +])) || buffer.equals(new Uint8Array([ + 0x7F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F ]))); assert.ok(Number.isNaN(buffer.readDoubleBE(0))); diff --git a/test/parallel/test-buffer-writefloat.js b/test/parallel/test-buffer-writefloat.js index 77dd4793e5e749..bd00738bcbe991 100644 --- a/test/parallel/test-buffer-writefloat.js +++ b/test/parallel/test-buffer-writefloat.js @@ -50,8 +50,12 @@ assert.strictEqual(buffer.readFloatLE(4), -Infinity); buffer.writeFloatBE(NaN, 0); buffer.writeFloatLE(NaN, 4); -assert.ok(buffer.equals( - new Uint8Array([ 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F ]))); +assert.ok( + buffer.equals(new Uint8Array( + [ 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F ])) || + // Mips processors use a different NaN. + buffer.equals(new Uint8Array( + [ 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F ]))); assert.ok(Number.isNaN(buffer.readFloatBE(0))); assert.ok(Number.isNaN(buffer.readFloatLE(4))); From 1afaff2dd44b54af974920580a3b11162e55fbbc Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sat, 28 Apr 2018 02:27:45 +0200 Subject: [PATCH 2/5] fixup: address comment --- test/parallel/test-buffer-writedouble.js | 18 +++++++++++------- test/parallel/test-buffer-writefloat.js | 17 +++++++++++------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/test/parallel/test-buffer-writedouble.js b/test/parallel/test-buffer-writedouble.js index 1110656565f5b8..1e36d5bf5bb492 100644 --- a/test/parallel/test-buffer-writedouble.js +++ b/test/parallel/test-buffer-writedouble.js @@ -67,14 +67,18 @@ assert.strictEqual(buffer.readDoubleLE(8), -Infinity); buffer.writeDoubleBE(NaN, 0); buffer.writeDoubleLE(NaN, 8); -assert.ok(buffer.equals(new Uint8Array([ - 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F // Mips processors use a different NaN. -])) || buffer.equals(new Uint8Array([ - 0x7F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F -]))); +if (process.arch === 'mips') { + assert.ok(buffer.equals(new Uint8Array([ + 0x7F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F + ]))); +} else { + assert.ok(buffer.equals(new Uint8Array([ + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F + ]))); +} assert.ok(Number.isNaN(buffer.readDoubleBE(0))); assert.ok(Number.isNaN(buffer.readDoubleLE(8))); diff --git a/test/parallel/test-buffer-writefloat.js b/test/parallel/test-buffer-writefloat.js index bd00738bcbe991..0b2083b444b6a5 100644 --- a/test/parallel/test-buffer-writefloat.js +++ b/test/parallel/test-buffer-writefloat.js @@ -50,12 +50,17 @@ assert.strictEqual(buffer.readFloatLE(4), -Infinity); buffer.writeFloatBE(NaN, 0); buffer.writeFloatLE(NaN, 4); -assert.ok( - buffer.equals(new Uint8Array( - [ 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F ])) || - // Mips processors use a different NaN. - buffer.equals(new Uint8Array( - [ 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F ]))); + +// Mips processors use a different NaN. +if (process.arch === 'mips') { + assert.ok( + buffer.equals(new Uint8Array( + [ 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F ]))); +} else { + assert.ok( + buffer.equals(new Uint8Array( + [ 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F ]))); +} assert.ok(Number.isNaN(buffer.readFloatBE(0))); assert.ok(Number.isNaN(buffer.readFloatLE(4))); From 5f2d257e3dbdb9dd6a5ff2552409ff5043c8dbdc Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sat, 28 Apr 2018 02:27:53 +0200 Subject: [PATCH 3/5] test: fix test-cli-node-options.js on mips The performance jit logger is not implemented on mips. --- test/parallel/test-cli-node-options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-cli-node-options.js b/test/parallel/test-cli-node-options.js index 8eae27b1a2a3a2..2383935f4bb7a3 100644 --- a/test/parallel/test-cli-node-options.js +++ b/test/parallel/test-cli-node-options.js @@ -32,7 +32,7 @@ if (!common.isWindows) { expect('--perf-basic-prof', 'B\n'); } -if (common.isLinux && ['arm', 'x64', 'mips'].includes(process.arch)) { +if (common.isLinux && ['arm', 'x64'].includes(process.arch)) { // PerfJitLogger is only implemented in Linux. expect('--perf-prof', 'B\n'); } From 0fc9785e2f58f3de57cb56a6779d1580481bb654 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sat, 28 Apr 2018 03:23:03 +0200 Subject: [PATCH 4/5] fixup --- test/parallel/test-buffer-writedouble.js | 5 +++-- test/parallel/test-buffer-writefloat.js | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-buffer-writedouble.js b/test/parallel/test-buffer-writedouble.js index 1e36d5bf5bb492..8a17d536909dce 100644 --- a/test/parallel/test-buffer-writedouble.js +++ b/test/parallel/test-buffer-writedouble.js @@ -67,8 +67,9 @@ assert.strictEqual(buffer.readDoubleLE(8), -Infinity); buffer.writeDoubleBE(NaN, 0); buffer.writeDoubleLE(NaN, 8); -// Mips processors use a different NaN. -if (process.arch === 'mips') { +// JS only knows a single NaN but there exist two platform specific +// implementations. Therefore, allow both quiet and signalling NaNs. +if (buffer[1] === 0xF7) { assert.ok(buffer.equals(new Uint8Array([ 0x7F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F diff --git a/test/parallel/test-buffer-writefloat.js b/test/parallel/test-buffer-writefloat.js index 0b2083b444b6a5..8bc7df2661ad4f 100644 --- a/test/parallel/test-buffer-writefloat.js +++ b/test/parallel/test-buffer-writefloat.js @@ -51,8 +51,9 @@ assert.strictEqual(buffer.readFloatLE(4), -Infinity); buffer.writeFloatBE(NaN, 0); buffer.writeFloatLE(NaN, 4); -// Mips processors use a different NaN. -if (process.arch === 'mips') { +// JS only knows a single NaN but there exist two platform specific +// implementations. Therefore, allow both quiet and signalling NaNs. +if (buffer[1] === 0xF7) { assert.ok( buffer.equals(new Uint8Array( [ 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F ]))); From 3cd989785fb2ece5b6d967321b69929db772827d Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sat, 28 Apr 2018 15:32:26 +0200 Subject: [PATCH 5/5] fixup --- test/parallel/test-buffer-writefloat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-buffer-writefloat.js b/test/parallel/test-buffer-writefloat.js index 8bc7df2661ad4f..4c2c7539eaafcb 100644 --- a/test/parallel/test-buffer-writefloat.js +++ b/test/parallel/test-buffer-writefloat.js @@ -53,7 +53,7 @@ buffer.writeFloatLE(NaN, 4); // JS only knows a single NaN but there exist two platform specific // implementations. Therefore, allow both quiet and signalling NaNs. -if (buffer[1] === 0xF7) { +if (buffer[1] === 0xBF) { assert.ok( buffer.equals(new Uint8Array( [ 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F ])));