Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(479)

Unified Diff: test/mjsunit/simd/deopt.js

Issue 90643003: Experimental implementation: Exposing SIMD instructions into JavaScript Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/simd/captured_object.js ('k') | test/mjsunit/simd/float32x4.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/simd/deopt.js
diff --git a/test/mjsunit/regress/regress-1118.js b/test/mjsunit/simd/deopt.js
similarity index 60%
copy from test/mjsunit/regress/regress-1118.js
copy to test/mjsunit/simd/deopt.js
index 4fd23456bea5aca9ce23a6d2fc06a2bf58bfc254..66465c2eb4020fe03fc90de39badfb2b357b9605 100644
--- a/test/mjsunit/regress/regress-1118.js
+++ b/test/mjsunit/simd/deopt.js
@@ -25,42 +25,54 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Flags: --allow-natives-syntax
+// Flags: --simd_object --allow-natives-syntax
-// An exception thrown in a function optimized by on-stack replacement (OSR)
-// should be able to construct a receiver from all optimized stack frames.
+function testdeopt(a, b) {
+ var a4 = float32x4(1.0, -2.0, 3.0, -4.0);
+ var b4 = SIMD.float32x4.abs(a4);
-function A() { }
-A.prototype.f = function() { }
+ if (a > 0) {
+ a = 0;
+ } else {
+ a += b; //deopt
+ }
-function B() { }
+ assertEquals(1.0, b4.x);
+ assertEquals(2.0, b4.y);
+ assertEquals(3.0, b4.z);
+ assertEquals(4.0, b4.w);
+}
-var o = new A();
+testdeopt(1, 1);
+testdeopt(1, 1);
+%OptimizeFunctionOnNextCall(testdeopt);
+testdeopt(0, 1);
-// This function throws if o does not have an f property, and should not be
-// inlined.
-function g() { try { return o.f(); } finally { }}
+function testdeopt2() {
+ var a4 = float32x4(1.0, -1.0, 1.0, -1.0);
+ var b4 = SIMD.float32x4.abs(a4);
-// Optimization status (see runtime.cc):
-// 1 - yes, 2 - no, 3 - always, 4 - never.
+ assertEquals(1.0, b4.x);
+ assertEquals(1.0, b4.y);
+ assertEquals(1.0, b4.z);
+ assertEquals(1.0, b4.w);
-// This function should be optimized via OSR.
-function h() {
- var optstatus = %GetOptimizationStatus(h);
- if (optstatus == 4) {
- // Optimizations are globally disabled; just run once.
- g();
- } else {
- // Run for a bit as long as h is unoptimized.
- if (%GetOptimizationStatus(h) != 4) {
- while (%GetOptimizationCount(h) == 0) {
- for (var j = 0; j < 100; j++) g();
- }
- }
- g();
- }
+ var new_a4 = new float32x4(1.0, -1.0, 1.0, -1.0);
+ var new_b4 = SIMD.float32x4.abs(new_a4);
+
+ assertEquals(1.0, new_b4.x);
+ assertEquals(1.0, new_b4.y);
+ assertEquals(1.0, new_b4.z);
+ assertEquals(1.0, new_b4.w);
+
+ // Verifying deoptimization
+ assertEquals(1.0, b4.x);
+ assertEquals(1.0, b4.y);
+ assertEquals(1.0, b4.z);
+ assertEquals(1.0, b4.w);
}
-h();
-o = new B();
-assertThrows("h()");
+testdeopt2();
+testdeopt2();
+%OptimizeFunctionOnNextCall(testdeopt2);
+testdeopt2();
« no previous file with comments | « test/mjsunit/simd/captured_object.js ('k') | test/mjsunit/simd/float32x4.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698