Force SharedFunctionInfo::name() to be a flat string
This fact is depended upon by, at least, Parser::ParseLazy, and quite likely by other code. There was already code in %FunctionSetName enforcing this invariant. This patch adds similar code to Factory::NewSharedFunctionInfo(). BUG=v8:4659 LOG=n Review URL: https://codereview.chromium.org/1686193003 Cr-Commit-Position: refs/heads/master@{#33914}
This commit is contained in:
parent
8eaf90b82c
commit
58a9bc5b53
@ -2116,6 +2116,7 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
|
||||
Handle<SharedFunctionInfo> share = New<SharedFunctionInfo>(map, OLD_SPACE);
|
||||
|
||||
// Set pointer fields.
|
||||
name = String::Flatten(name, TENURED);
|
||||
share->set_name(*name);
|
||||
Handle<Code> code;
|
||||
if (!maybe_code.ToHandle(&code)) {
|
||||
|
12
test/mjsunit/regress/regress-4659.js
Normal file
12
test/mjsunit/regress/regress-4659.js
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2016 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: --harmony-function-name
|
||||
|
||||
var obj = {
|
||||
get longerName(){
|
||||
return 42;
|
||||
}
|
||||
};
|
||||
assertEquals(42, obj.longerName);
|
Loading…
Reference in New Issue
Block a user