v8/test/mjsunit/regress/regress-709029.js
jgruber db61537afc [regexp] Avoid side effects between map load and fast path check
Loading the map, performing a side-effect, and then using the stored
pointer for the fast-path check is another antipattern that can lead to
unintended shapes on the fast path.

BUG=chromium:709029

Review-Url: https://codereview.chromium.org/2807153002
Cr-Commit-Position: refs/heads/master@{#44528}
2017-04-10 14:57:55 +00:00

39 lines
757 B
JavaScript

// 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.
// Changes the map of obj.
function mutateObjectOnStringConversion(obj) {
return { toString: () => { obj.x = 42;return "";}};
}
{
const re = /./;
re.exec(mutateObjectOnStringConversion(re));
}
{
const re = /./;
re.test(mutateObjectOnStringConversion(re));
}
{
const re = /./;
re[Symbol.match](mutateObjectOnStringConversion(re));
}
{
const re = /./;
re[Symbol.search](mutateObjectOnStringConversion(re));
}
{
const re = /./;
re[Symbol.split](mutateObjectOnStringConversion(re));
}
{
const re = /./;
re[Symbol.replace](mutateObjectOnStringConversion(re));
}