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

Unified Diff: tests/standalone/int_array_deopt.dart

Issue 12086045: On Ia32 optimistically assume that results from int32 and uint32 array loads fit into Smi. Only if … (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 months 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
Index: tests/standalone/int_array_deopt.dart
===================================================================
--- tests/standalone/int_array_deopt.dart (revision 0)
+++ tests/standalone/int_array_deopt.dart (revision 0)
@@ -0,0 +1,32 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// Dart deoptimization of Uint32Array and Int32Array loads.
+
+import 'dart:scalarlist';
+
+loadI32(a) => a[0] + 1;
+loadUi32(a) => a[0] + 1;
+
+main() {
+ var i32 = new Int32List(10);
+ var ui32 = new Uint32List(10);
+ i32[0] = ui32[0] = 8;
+ // Optimize loadI32 and LoadUi32 for Smi result of indexed load.
+ for (int i = 0; i < 2000; i++) {
+ Expect.equals(9, loadI32(i32));
+ Expect.equals(9, loadUi32(ui32));
+ }
+ // On ia32, deoptimize when attempting to load a value that exceeds
+ // Smi range.
+ i32[0] = ui32[0] = 2147483647;
+ Expect.equals(2147483648, loadI32(i32));
+ Expect.equals(2147483648, loadUi32(ui32));
+ // Reoptimize again, but this time assume mixed Smi/Mint results
+ i32[0] = ui32[0] = 10;
+ for (int i = 0; i < 2000; i++) {
+ Expect.equals(11, loadI32(i32));
+ Expect.equals(11, loadUi32(ui32));
+ }
+}
« runtime/vm/flow_graph_optimizer.cc ('K') | « runtime/vm/intermediate_language_ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698