db61537afc
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}
39 lines
757 B
JavaScript
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));
|
|
}
|