summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/truthiness
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/truthiness')
-rw-r--r--js/src/jit-test/tests/truthiness/equal-null.js37
-rw-r--r--js/src/jit-test/tests/truthiness/equal-undefined.js37
-rw-r--r--js/src/jit-test/tests/truthiness/if-equal-null.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-equal-undefined.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-not-equal-null.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-not-equal-undefined.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-strict-equal-null.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-strict-equal-undefined.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-strict-not-equal-null.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if-strict-not-equal-undefined.js46
-rw-r--r--js/src/jit-test/tests/truthiness/if.js24
-rw-r--r--js/src/jit-test/tests/truthiness/not-equal-null.js37
-rw-r--r--js/src/jit-test/tests/truthiness/not-equal-undefined.js37
-rw-r--r--js/src/jit-test/tests/truthiness/not.js24
-rw-r--r--js/src/jit-test/tests/truthiness/obj-obj-equal.js23
-rw-r--r--js/src/jit-test/tests/truthiness/obj-obj-not-equal.js23
-rw-r--r--js/src/jit-test/tests/truthiness/strict-equal-null.js37
-rw-r--r--js/src/jit-test/tests/truthiness/strict-equal-undefined.js37
-rw-r--r--js/src/jit-test/tests/truthiness/strict-not-equal-null.js37
-rw-r--r--js/src/jit-test/tests/truthiness/strict-not-equal-undefined.js37
-rw-r--r--js/src/jit-test/tests/truthiness/typeof.js23
21 files changed, 781 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/truthiness/equal-null.js b/js/src/jit-test/tests/truthiness/equal-null.js
new file mode 100644
index 0000000000..bba6617db4
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/equal-null.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v == null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, false);
+f({}, false);
+f(null, true);
+f(null, true);
+f(undefined, true);
+f(undefined, true);
+f(createIsHTMLDDA(), true);
+f(createIsHTMLDDA(), true);
+f(Object.prototype, false);
+f(Object.prototype, false);
+
+function g(v, value)
+{
+ var b = v == null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, false);
+g({}, false);
+
+function h(v, value)
+{
+ var b = v == null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), true);
+h(createIsHTMLDDA(), true);
diff --git a/js/src/jit-test/tests/truthiness/equal-undefined.js b/js/src/jit-test/tests/truthiness/equal-undefined.js
new file mode 100644
index 0000000000..b807098cb3
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/equal-undefined.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v == undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, false);
+f({}, false);
+f(null, true);
+f(null, true);
+f(undefined, true);
+f(undefined, true);
+f(createIsHTMLDDA(), true);
+f(createIsHTMLDDA(), true);
+f(Object.prototype, false);
+f(Object.prototype, false);
+
+function g(v, value)
+{
+ var b = v == undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, false);
+g({}, false);
+
+function h(v, value)
+{
+ var b = v == undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), true);
+h(createIsHTMLDDA(), true);
diff --git a/js/src/jit-test/tests/truthiness/if-equal-null.js b/js/src/jit-test/tests/truthiness/if-equal-null.js
new file mode 100644
index 0000000000..79fc6f37dd
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-equal-null.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v == null)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 0);
+f({}, 0);
+f(null, 1);
+f(null, 2);
+f(undefined, 3);
+f(undefined, 4);
+f(createIsHTMLDDA(), 5);
+f(createIsHTMLDDA(), 6);
+f(Object.prototype, 6);
+f(Object.prototype, 6);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v == null)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 0);
+g({}, 0);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v == null)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 1);
+h(createIsHTMLDDA(), 2);
diff --git a/js/src/jit-test/tests/truthiness/if-equal-undefined.js b/js/src/jit-test/tests/truthiness/if-equal-undefined.js
new file mode 100644
index 0000000000..9a2284b94c
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-equal-undefined.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v == undefined)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 0);
+f({}, 0);
+f(null, 1);
+f(null, 2);
+f(undefined, 3);
+f(undefined, 4);
+f(createIsHTMLDDA(), 5);
+f(createIsHTMLDDA(), 6);
+f(Object.prototype, 6);
+f(Object.prototype, 6);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v == undefined)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 0);
+g({}, 0);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v == undefined)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 1);
+h(createIsHTMLDDA(), 2);
diff --git a/js/src/jit-test/tests/truthiness/if-not-equal-null.js b/js/src/jit-test/tests/truthiness/if-not-equal-null.js
new file mode 100644
index 0000000000..d0d266042b
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-not-equal-null.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v != null)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 1);
+f({}, 2);
+f(null, 2);
+f(null, 2);
+f(undefined, 2);
+f(undefined, 2);
+f(createIsHTMLDDA(), 2);
+f(createIsHTMLDDA(), 2);
+f(Object.prototype, 3);
+f(Object.prototype, 4);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v != null)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 1);
+g({}, 2);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v != null)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 0);
+h(createIsHTMLDDA(), 0);
diff --git a/js/src/jit-test/tests/truthiness/if-not-equal-undefined.js b/js/src/jit-test/tests/truthiness/if-not-equal-undefined.js
new file mode 100644
index 0000000000..204b8d293e
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-not-equal-undefined.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v != undefined)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 1);
+f({}, 2);
+f(null, 2);
+f(null, 2);
+f(undefined, 2);
+f(undefined, 2);
+f(createIsHTMLDDA(), 2);
+f(createIsHTMLDDA(), 2);
+f(Object.prototype, 3);
+f(Object.prototype, 4);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v != undefined)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 1);
+g({}, 2);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v != undefined)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 0);
+h(createIsHTMLDDA(), 0);
diff --git a/js/src/jit-test/tests/truthiness/if-strict-equal-null.js b/js/src/jit-test/tests/truthiness/if-strict-equal-null.js
new file mode 100644
index 0000000000..f571930ef9
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-strict-equal-null.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v === null)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 0);
+f({}, 0);
+f(null, 1);
+f(null, 2);
+f(undefined, 2);
+f(undefined, 2);
+f(createIsHTMLDDA(), 2);
+f(createIsHTMLDDA(), 2);
+f(Object.prototype, 2);
+f(Object.prototype, 2);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v === null)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 0);
+g({}, 0);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v === null)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 0);
+h(createIsHTMLDDA(), 0);
diff --git a/js/src/jit-test/tests/truthiness/if-strict-equal-undefined.js b/js/src/jit-test/tests/truthiness/if-strict-equal-undefined.js
new file mode 100644
index 0000000000..670adc4784
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-strict-equal-undefined.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v === undefined)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 0);
+f({}, 0);
+f(null, 0);
+f(null, 0);
+f(undefined, 1);
+f(undefined, 2);
+f(createIsHTMLDDA(), 2);
+f(createIsHTMLDDA(), 2);
+f(Object.prototype, 2);
+f(Object.prototype, 2);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v === undefined)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 0);
+g({}, 0);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v === undefined)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 0);
+h(createIsHTMLDDA(), 0);
diff --git a/js/src/jit-test/tests/truthiness/if-strict-not-equal-null.js b/js/src/jit-test/tests/truthiness/if-strict-not-equal-null.js
new file mode 100644
index 0000000000..cae48fb213
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-strict-not-equal-null.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v !== null)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 1);
+f({}, 2);
+f(null, 2);
+f(null, 2);
+f(undefined, 3);
+f(undefined, 4);
+f(createIsHTMLDDA(), 5);
+f(createIsHTMLDDA(), 6);
+f(Object.prototype, 7);
+f(Object.prototype, 8);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v !== null)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 1);
+g({}, 2);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v !== null)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 1);
+h(createIsHTMLDDA(), 2);
diff --git a/js/src/jit-test/tests/truthiness/if-strict-not-equal-undefined.js b/js/src/jit-test/tests/truthiness/if-strict-not-equal-undefined.js
new file mode 100644
index 0000000000..433446fe11
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if-strict-not-equal-undefined.js
@@ -0,0 +1,46 @@
+var counterF = 0;
+
+function f(v, value)
+{
+ if (v !== undefined)
+ counterF++;
+ assertEq(counterF, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, 1);
+f({}, 2);
+f(null, 3);
+f(null, 4);
+f(undefined, 4);
+f(undefined, 4);
+f(createIsHTMLDDA(), 5);
+f(createIsHTMLDDA(), 6);
+f(Object.prototype, 7);
+f(Object.prototype, 8);
+
+var counterG = 0;
+
+function g(v, value)
+{
+ if (v !== undefined)
+ counterG++;
+ assertEq(counterG, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, 1);
+g({}, 2);
+
+var counterH = 0;
+
+function h(v, value)
+{
+ if (v !== undefined)
+ counterH++;
+ assertEq(counterH, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), 1);
+h(createIsHTMLDDA(), 2);
diff --git a/js/src/jit-test/tests/truthiness/if.js b/js/src/jit-test/tests/truthiness/if.js
new file mode 100644
index 0000000000..129df405f9
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/if.js
@@ -0,0 +1,24 @@
+function t1(v)
+{
+ if (v)
+ return 1;
+ return 0;
+}
+
+assertEq(t1(createIsHTMLDDA()), 0);
+assertEq(t1(createIsHTMLDDA()), 0);
+assertEq(t1(createIsHTMLDDA()), 0);
+
+function t2(v)
+{
+ if (v)
+ return 1;
+ return 0;
+}
+
+assertEq(t2(17), 1);
+assertEq(t2(0), 0);
+assertEq(t2(-0), 0);
+assertEq(t2(createIsHTMLDDA()), 0);
+assertEq(t2(createIsHTMLDDA()), 0);
+assertEq(t2(createIsHTMLDDA()), 0);
diff --git a/js/src/jit-test/tests/truthiness/not-equal-null.js b/js/src/jit-test/tests/truthiness/not-equal-null.js
new file mode 100644
index 0000000000..ab6c144bce
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/not-equal-null.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v != null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, true);
+f({}, true);
+f(null, false);
+f(null, false);
+f(undefined, false);
+f(undefined, false);
+f(createIsHTMLDDA(), false);
+f(createIsHTMLDDA(), false);
+f(Object.prototype, true);
+f(Object.prototype, true);
+
+function g(v, value)
+{
+ var b = v != null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, true);
+g({}, true);
+
+function h(v, value)
+{
+ var b = v != null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), false);
+h(createIsHTMLDDA(), false);
diff --git a/js/src/jit-test/tests/truthiness/not-equal-undefined.js b/js/src/jit-test/tests/truthiness/not-equal-undefined.js
new file mode 100644
index 0000000000..533cf1f018
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/not-equal-undefined.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v != undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, true);
+f({}, true);
+f(null, false);
+f(null, false);
+f(undefined, false);
+f(undefined, false);
+f(createIsHTMLDDA(), false);
+f(createIsHTMLDDA(), false);
+f(Object.prototype, true);
+f(Object.prototype, true);
+
+function g(v, value)
+{
+ var b = v != undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, true);
+g({}, true);
+
+function h(v, value)
+{
+ var b = v != undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), false);
+h(createIsHTMLDDA(), false);
diff --git a/js/src/jit-test/tests/truthiness/not.js b/js/src/jit-test/tests/truthiness/not.js
new file mode 100644
index 0000000000..58945734a1
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/not.js
@@ -0,0 +1,24 @@
+function t1(v)
+{
+ if (!v)
+ return 1;
+ return 0;
+}
+
+assertEq(t1(createIsHTMLDDA()), 1);
+assertEq(t1(createIsHTMLDDA()), 1);
+assertEq(t1(createIsHTMLDDA()), 1);
+
+function t2(v)
+{
+ if (!v)
+ return 1;
+ return 0;
+}
+
+assertEq(t2(17), 0);
+assertEq(t2(0), 1);
+assertEq(t2(-0), 1);
+assertEq(t2(createIsHTMLDDA()), 1);
+assertEq(t2(createIsHTMLDDA()), 1);
+assertEq(t2(createIsHTMLDDA()), 1);
diff --git a/js/src/jit-test/tests/truthiness/obj-obj-equal.js b/js/src/jit-test/tests/truthiness/obj-obj-equal.js
new file mode 100644
index 0000000000..0800c05432
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/obj-obj-equal.js
@@ -0,0 +1,23 @@
+function f(v1, v2, value)
+{
+ var b = v1 == v2;
+ assertEq(b, value,
+ "failed: " + v1 + ", " + v2 + ": " + value);
+}
+
+var obj = {};
+var emul = createIsHTMLDDA();
+
+f(obj, obj, true);
+f(obj, obj, true);
+f(emul, obj, false);
+f(emul, obj, false);
+f(obj, emul, false);
+f(obj, emul, false);
+f(Object.prototype, obj, false);
+f(Object.prototype, obj, false);
+f(emul, emul, true);
+f(createIsHTMLDDA(), emul, false);
+f(createIsHTMLDDA(), emul, false);
+f(emul, createIsHTMLDDA(), false);
+f(emul, createIsHTMLDDA(), false);
diff --git a/js/src/jit-test/tests/truthiness/obj-obj-not-equal.js b/js/src/jit-test/tests/truthiness/obj-obj-not-equal.js
new file mode 100644
index 0000000000..5fb905aaf5
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/obj-obj-not-equal.js
@@ -0,0 +1,23 @@
+function f(v1, v2, value)
+{
+ var b = v1 != v2;
+ assertEq(b, value,
+ "failed: " + v1 + ", " + v2 + ": " + value);
+}
+
+var obj = {};
+var emul = createIsHTMLDDA();
+
+f(obj, obj, false);
+f(obj, obj, false);
+f(emul, obj, true);
+f(emul, obj, true);
+f(obj, emul, true);
+f(obj, emul, true);
+f(Object.prototype, obj, true);
+f(Object.prototype, obj, true);
+f(emul, emul, false);
+f(createIsHTMLDDA(), emul, true);
+f(createIsHTMLDDA(), emul, true);
+f(emul, createIsHTMLDDA(), true);
+f(emul, createIsHTMLDDA(), true);
diff --git a/js/src/jit-test/tests/truthiness/strict-equal-null.js b/js/src/jit-test/tests/truthiness/strict-equal-null.js
new file mode 100644
index 0000000000..a20d893332
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/strict-equal-null.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v === null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, false);
+f({}, false);
+f(null, true);
+f(null, true);
+f(undefined, false);
+f(undefined, false);
+f(createIsHTMLDDA(), false);
+f(createIsHTMLDDA(), false);
+f(Object.prototype, false);
+f(Object.prototype, false);
+
+function g(v, value)
+{
+ var b = v === null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, false);
+g({}, false);
+
+function h(v, value)
+{
+ var b = v === null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), false);
+h(createIsHTMLDDA(), false);
diff --git a/js/src/jit-test/tests/truthiness/strict-equal-undefined.js b/js/src/jit-test/tests/truthiness/strict-equal-undefined.js
new file mode 100644
index 0000000000..f58e13698d
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/strict-equal-undefined.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v === undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, false);
+f({}, false);
+f(null, false);
+f(null, false);
+f(undefined, true);
+f(undefined, true);
+f(createIsHTMLDDA(), false);
+f(createIsHTMLDDA(), false);
+f(Object.prototype, false);
+f(Object.prototype, false);
+
+function g(v, value)
+{
+ var b = v === undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, false);
+g({}, false);
+
+function h(v, value)
+{
+ var b = v === undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), false);
+h(createIsHTMLDDA(), false);
diff --git a/js/src/jit-test/tests/truthiness/strict-not-equal-null.js b/js/src/jit-test/tests/truthiness/strict-not-equal-null.js
new file mode 100644
index 0000000000..7cab3e7b1c
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/strict-not-equal-null.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v !== null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, true);
+f({}, true);
+f(null, false);
+f(null, false);
+f(undefined, true);
+f(undefined, true);
+f(createIsHTMLDDA(), true);
+f(createIsHTMLDDA(), true);
+f(Object.prototype, true);
+f(Object.prototype, true);
+
+function g(v, value)
+{
+ var b = v !== null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, true);
+g({}, true);
+
+function h(v, value)
+{
+ var b = v !== null;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), true);
+h(createIsHTMLDDA(), true);
diff --git a/js/src/jit-test/tests/truthiness/strict-not-equal-undefined.js b/js/src/jit-test/tests/truthiness/strict-not-equal-undefined.js
new file mode 100644
index 0000000000..04c8f7702b
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/strict-not-equal-undefined.js
@@ -0,0 +1,37 @@
+function f(v, value)
+{
+ var b = v !== undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+f({}, true);
+f({}, true);
+f(null, true);
+f(null, true);
+f(undefined, false);
+f(undefined, false);
+f(createIsHTMLDDA(), true);
+f(createIsHTMLDDA(), true);
+f(Object.prototype, true);
+f(Object.prototype, true);
+
+function g(v, value)
+{
+ var b = v !== undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+g({}, true);
+g({}, true);
+
+function h(v, value)
+{
+ var b = v !== undefined;
+ assertEq(b, value,
+ "failed: " + v + " " + value);
+}
+
+h(createIsHTMLDDA(), true);
+h(createIsHTMLDDA(), true);
diff --git a/js/src/jit-test/tests/truthiness/typeof.js b/js/src/jit-test/tests/truthiness/typeof.js
new file mode 100644
index 0000000000..91e281ada3
--- /dev/null
+++ b/js/src/jit-test/tests/truthiness/typeof.js
@@ -0,0 +1,23 @@
+function t1(v)
+{
+ return typeof v;
+}
+
+assertEq(t1(createIsHTMLDDA()), "undefined");
+assertEq(t1(createIsHTMLDDA()), "undefined");
+assertEq(t1(createIsHTMLDDA()), "undefined");
+
+function t2(v)
+{
+ return typeof v;
+}
+
+assertEq(t2(17), "number");
+assertEq(t2(0), "number");
+assertEq(t2(-0), "number");
+assertEq(t2(function(){}), "function");
+assertEq(t2({}), "object");
+assertEq(t2(null), "object");
+assertEq(t2(createIsHTMLDDA()), "undefined");
+assertEq(t2(createIsHTMLDDA()), "undefined");
+assertEq(t2(createIsHTMLDDA()), "undefined");