diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52-then-exit-not-int52.js b/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52-then-exit-not-int52.js
new file mode 100644
index 0000000..b422c1b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52-then-exit-not-int52.js
@@ -0,0 +1,15 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    fiatInt52(array[0]);
+    fiatInt52(array[0]);
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
+
+array[0] = 5.5;
+foo();
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52.js b/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52.js
new file mode 100644
index 0000000..fc5e605
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-double-to-int52.js
@@ -0,0 +1,12 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    fiatInt52(array[0]);
+    fiatInt52(array[0]);
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-int32-to-int52.js b/Source/JavaScriptCore/tests/stress/dead-fiat-int32-to-int52.js
new file mode 100644
index 0000000..5c154f4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-int32-to-int52.js
@@ -0,0 +1,11 @@
+function foo(o) {
+    fiatInt52(o.f);
+    fiatInt52(o.f);
+}
+
+noInline(foo);
+
+var o = {f:42};
+
+for (var i = 0; i < 1000000; ++i)
+    foo(o);
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-double-path.js b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-double-path.js
new file mode 100644
index 0000000..083a5f6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-double-path.js
@@ -0,0 +1,19 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    var value = bar();
+    fiatInt52(value);
+    fiatInt52(value);
+}
+
+function bar() {
+    return array[0];
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
+
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-double.js b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-double.js
new file mode 100644
index 0000000..3355123
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-double.js
@@ -0,0 +1,21 @@
+function foo() {
+    var value = bar(DFGTrue());
+    fiatInt52(value);
+    fiatInt52(value);
+}
+
+var thingy = false;
+function bar(p) {
+    if (thingy)
+        return "hello";
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
+
+thingy = true;
+foo();
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-int52.js b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-int52.js
new file mode 100644
index 0000000..5ecc404
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52-then-exit-not-int52.js
@@ -0,0 +1,21 @@
+function foo() {
+    var value = bar(DFGTrue());
+    fiatInt52(value);
+    fiatInt52(value);
+}
+
+var thingy = false;
+function bar(p) {
+    if (thingy)
+        return 5.5;
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
+
+thingy = true;
+foo();
diff --git a/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52.js b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52.js
new file mode 100644
index 0000000..0e54daa
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/dead-fiat-value-to-int52.js
@@ -0,0 +1,16 @@
+function foo() {
+    var value = bar(DFGTrue());
+    fiatInt52(value);
+    fiatInt52(value);
+}
+
+function bar(p) {
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i)
+    foo();
+
diff --git a/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-exit-not-int52.js b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-exit-not-int52.js
new file mode 100644
index 0000000..cc25bbf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-exit-not-int52.js
@@ -0,0 +1,19 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    return fiatInt52(array[0]) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43)
+        throw "Error: bad result: " + result;
+}
+
+array[0] = 5.5;
+var result = foo();
+if (result != 6.5)
+    throw "Error: bad result at end: " + result;
diff --git a/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fail-to-fold.js b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fail-to-fold.js
new file mode 100644
index 0000000..b6e5277
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fail-to-fold.js
@@ -0,0 +1,11 @@
+function foo() {
+    return fiatInt52(Math.sqrt(2)) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != Math.sqrt(2) + 1)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fold.js b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fold.js
new file mode 100644
index 0000000..d2259a1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52-then-fold.js
@@ -0,0 +1,11 @@
+function foo() {
+    return fiatInt52(Math.fround(42)) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 42 + 1)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-double-to-int52.js b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52.js
new file mode 100644
index 0000000..0697b60
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-double-to-int52.js
@@ -0,0 +1,14 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    return fiatInt52(array[0]) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-int32-to-int52.js b/Source/JavaScriptCore/tests/stress/fiat-int32-to-int52.js
new file mode 100644
index 0000000..3e3ef8a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-int32-to-int52.js
@@ -0,0 +1,13 @@
+function foo(o) {
+    return fiatInt52(o.f) + 1;
+}
+
+noInline(foo);
+
+var o = {f:42};
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo(o);
+    if (result != 43)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-double-path.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-double-path.js
new file mode 100644
index 0000000..235c567
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-double-path.js
@@ -0,0 +1,19 @@
+var array = new Float64Array(1);
+array[0] = 42;
+
+function foo() {
+    return fiatInt52(bar()) + 1;
+}
+
+function bar() {
+    return array[0];
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-double.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-double.js
new file mode 100644
index 0000000..9cb35b8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-double.js
@@ -0,0 +1,24 @@
+function foo() {
+    return fiatInt52(bar(DFGTrue())) + 1;
+}
+
+var thingy = false;
+function bar(p) {
+    if (thingy)
+        return "hello";
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43 && result != 6.5)
+        throw "Error: bad result: " + result;
+}
+
+thingy = true;
+var result = foo();
+if (result != "hello1")
+    throw "Error: bad result at end: " + result;
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-int52.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-int52.js
new file mode 100644
index 0000000..0b1129e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-exit-not-int52.js
@@ -0,0 +1,24 @@
+function foo() {
+    return fiatInt52(bar(DFGTrue())) + 1;
+}
+
+var thingy = false;
+function bar(p) {
+    if (thingy)
+        return 5.5;
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43 && result != 6.5)
+        throw "Error: bad result: " + result;
+}
+
+thingy = true;
+var result = foo();
+if (result != 6.5)
+    throw "Error: bad result at end: " + result;
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fail-to-fold.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fail-to-fold.js
new file mode 100644
index 0000000..4413bd7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fail-to-fold.js
@@ -0,0 +1,11 @@
+function foo() {
+    return fiatInt52(DFGTrue() ? 5.5 : 42) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43 && result != 6.5)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fold.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fold.js
new file mode 100644
index 0000000..86f26c6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52-then-fold.js
@@ -0,0 +1,11 @@
+function foo() {
+    return fiatInt52(DFGTrue() ? 42 : 5.5) + 1;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43 && result != 6.5)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/fiat-value-to-int52.js b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52.js
new file mode 100644
index 0000000..c37c21f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/fiat-value-to-int52.js
@@ -0,0 +1,16 @@
+function foo() {
+    return fiatInt52(bar(DFGTrue())) + 1;
+}
+
+function bar(p) {
+    return p ? 42 : 5.5;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 1000000; ++i) {
+    var result = foo();
+    if (result != 43 && result != 6.5)
+        throw "Error: bad result: " + result;
+}
diff --git a/Source/JavaScriptCore/tests/stress/int52-force-osr-exit-path.js b/Source/JavaScriptCore/tests/stress/int52-force-osr-exit-path.js
new file mode 100644
index 0000000..a7bf3b9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/stress/int52-force-osr-exit-path.js
@@ -0,0 +1,15 @@
+function foo(a, b, p, o) {
+    var c = a + b;
+    if (p)
+        c -= o.f;
+    return c + 1;
+}
+
+noInline(foo);
+
+var o = {f: 42};
+for (var i = 0; i < 100000; ++i) {
+    var result = foo(2000000000, 2000000000, false, o);
+    if (result != 4000000001)
+        throw "Error: bad result: " + result;
+}
