]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/float64-array-nan-inlined.js
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / tests / stress / float64-array-nan-inlined.js
diff --git a/tests/stress/float64-array-nan-inlined.js b/tests/stress/float64-array-nan-inlined.js
new file mode 100644 (file)
index 0000000..21b480a
--- /dev/null
@@ -0,0 +1,34 @@
+function foo(o) {
+    return o[0];
+}
+
+function isBigEndian() {
+    var word = new Int16Array(1);
+    word[0] = 1;
+    var bytes = new Int8Array(word.buffer);
+    return !bytes[0];
+}
+
+function test(a, b, x) {
+    var intArray = new Int32Array(2);
+    intArray[0] = a;
+    intArray[1] = b;
+    var floatArray = new Float64Array(intArray.buffer);
+    var element = foo(floatArray);
+    var result = element + 1;
+    if (("" + result) != ("" + x))
+        throw "Error: bad result for " + a + ", " + b + ": " + result + ", but expected: " + x + "; loaded " + element + " from the array";
+}
+
+noInline(test);
+
+for (var i = 0; i < 100000; ++i)
+    test(0, 0, 1);
+
+if (isBigEndian()) {
+    test(0xFFFF0000, 0, 0/0);
+    test(0, 0xFFFF0000, 1);
+} else {
+    test(0xFFFF0000, 0, 1);
+    test(0, 0xFFFF0000, 0/0);
+}