// Copyright 2017 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 --expose-gc --turbo-inline-array-builtins | |
(function() { | |
var result = 0; | |
var proto_set_func = function(p, s) { | |
%NeverOptimizeFunction(proto_set_func); | |
if (s) { | |
p[0] = 1; | |
} | |
}; | |
var f = function(s) { | |
var b = [ | |
, | |
, | |
]; | |
b[1] = 0; | |
b[2] = 2; | |
var sum = function(v, i, o) { | |
if (i == 1) proto_set_func(b.__proto__, s); | |
result += v; | |
}; | |
b.forEach(sum); | |
}; | |
; | |
%PrepareFunctionForOptimization(f); | |
f(); | |
f(); | |
%OptimizeFunctionOnNextCall(f); | |
f(); | |
f(true); | |
f(); | |
assertEquals(11, result); | |
})(); |