diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/dataview-deopt.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/dataview-deopt.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/dataview-deopt.js b/deps/v8/test/mjsunit/compiler/dataview-deopt.js new file mode 100644 index 0000000000..b19de30e5d --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/dataview-deopt.js @@ -0,0 +1,58 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --opt --no-always-opt + +// Check that there are no deopt loops for DataView methods. + +var buffer = new ArrayBuffer(64); +var dataview = new DataView(buffer, 8, 24); + +// Check DataView getters. + +function readUint8(offset) { + return dataview.getUint8(offset); +} + +function warmupRead(f) { + f(0); + f(1); + %OptimizeFunctionOnNextCall(f); + f(2); + f(3); +} + +warmupRead(readUint8); +assertOptimized(readUint8); +readUint8(0.5); // Deopts. +assertUnoptimized(readUint8); + +warmupRead(readUint8); +assertOptimized(readUint8); +readUint8(1.5); // Doesn't deopt because getUint8 didn't get inlined this time. +assertOptimized(readUint8); + +// Check DataView setters. + +function writeUint8(offset, value) { + dataview.setUint8(offset, value); +} + +function warmupWrite(f) { + f(0, 0); + f(0, 1); + %OptimizeFunctionOnNextCall(f); + f(0, 2); + f(0, 3); +} + +warmupWrite(writeUint8); +assertOptimized(writeUint8); +writeUint8(0.5, 0); // Deopts. +assertUnoptimized(writeUint8); + +warmupWrite(writeUint8); +assertOptimized(writeUint8); +writeUint8(1.5, 0); // Doesn't deopt. +assertOptimized(writeUint8); |