mirror of https://github.com/lukechilds/node.git
Browse Source
Pick up the latest set of patch level updates from the V8 5.0 branch. https://github.com/v8/v8/compare/5.0.71.35...5.0.71.47 PR-URL: https://github.com/nodejs/node/pull/6572 Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: JungMinu - Minwoo Jung <jmwsoft@gmail.com>v6.x
Ali Ijaz Sheikh
9 years ago
committed by
Evan Lucas
39 changed files with 736 additions and 784 deletions
@ -0,0 +1,25 @@ |
|||
// 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: --allow-natives-syntax
|
|||
|
|||
var f = (function() { |
|||
"use asm"; |
|||
function foo(x) { |
|||
return x == 0; |
|||
} |
|||
return foo; |
|||
})(); |
|||
|
|||
function deopt(f) { |
|||
return { |
|||
toString : function() { |
|||
%DeoptimizeFunction(f); |
|||
return "2"; |
|||
} |
|||
}; |
|||
} |
|||
|
|||
%OptimizeFunctionOnNextCall(f); |
|||
assertFalse(f(deopt(f))); |
@ -0,0 +1,25 @@ |
|||
// 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: --allow-natives-syntax
|
|||
|
|||
var f = (function() { |
|||
"use asm"; |
|||
function foo(x) { |
|||
return x < x; |
|||
} |
|||
return foo; |
|||
})(); |
|||
|
|||
function deopt(f) { |
|||
return { |
|||
toString : function() { |
|||
%DeoptimizeFunction(f); |
|||
return "2"; |
|||
} |
|||
}; |
|||
} |
|||
|
|||
%OptimizeFunctionOnNextCall(f); |
|||
assertFalse(f(deopt(f))); |
@ -0,0 +1,82 @@ |
|||
// 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: --allow-natives-syntax
|
|||
|
|||
var global = {} |
|||
|
|||
var fish = [ |
|||
{'name': 'foo'}, |
|||
{'name': 'bar'}, |
|||
]; |
|||
|
|||
for (var i = 0; i < fish.length; i++) { |
|||
global[fish[i].name] = 1; |
|||
} |
|||
|
|||
function load() { |
|||
var sum = 0; |
|||
for (var i = 0; i < fish.length; i++) { |
|||
var name = fish[i].name; |
|||
sum += global[name]; |
|||
} |
|||
return sum; |
|||
} |
|||
|
|||
load(); |
|||
load(); |
|||
%OptimizeFunctionOnNextCall(load); |
|||
load(); |
|||
assertOptimized(load); |
|||
|
|||
function store() { |
|||
for (var i = 0; i < fish.length; i++) { |
|||
var name = fish[i].name; |
|||
global[name] = 1; |
|||
} |
|||
} |
|||
|
|||
store(); |
|||
store(); |
|||
%OptimizeFunctionOnNextCall(store); |
|||
store(); |
|||
assertOptimized(store); |
|||
|
|||
// Regression test for KeyedStoreIC bug: would use PROPERTY mode erroneously.
|
|||
|
|||
function store_element(obj, key) { |
|||
obj[key] = 0; |
|||
} |
|||
|
|||
var o1 = new Array(3); |
|||
var o2 = new Array(3); |
|||
o2.o2 = "o2"; |
|||
var o3 = new Array(3); |
|||
o3.o3 = "o3"; |
|||
var o4 = new Array(3); |
|||
o4.o4 = "o4"; |
|||
var o5 = new Array(3); |
|||
o5.o5 = "o5"; |
|||
// Make the KeyedStoreIC megamorphic.
|
|||
store_element(o1, 0); // Premonomorphic
|
|||
store_element(o1, 0); // Monomorphic
|
|||
store_element(o2, 0); // 2-way polymorphic.
|
|||
store_element(o3, 0); // 3-way polymorphic.
|
|||
store_element(o4, 0); // 4-way polymorphic.
|
|||
store_element(o5, 0); // Megamorphic.
|
|||
|
|||
function inferrable_store(key) { |
|||
store_element(o5, key); |
|||
} |
|||
|
|||
inferrable_store(0); |
|||
inferrable_store(0); |
|||
%OptimizeFunctionOnNextCall(inferrable_store); |
|||
inferrable_store(0); |
|||
assertOptimized(inferrable_store); |
|||
// If |inferrable_store| emitted a generic keyed store, it won't deopt upon
|
|||
// seeing a property name key. It should have inferred a receiver map and
|
|||
// emitted an elements store, however.
|
|||
inferrable_store("deopt"); |
|||
assertUnoptimized(inferrable_store); |
@ -0,0 +1,28 @@ |
|||
// 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: --expose-debug-as debug
|
|||
|
|||
var Debug = debug.Debug; |
|||
var exception = null; |
|||
|
|||
function listener(event, exec_state, event_data, data) { |
|||
if (event != Debug.DebugEvent.Break) return; |
|||
try { |
|||
assertThrows(() => exec_state.frame(0).evaluate("bar.baz"), ReferenceError); |
|||
} catch (e) { |
|||
exception = e; |
|||
} |
|||
} |
|||
|
|||
Debug.setListener(listener); |
|||
|
|||
(function() { |
|||
debugger; // bar is still in TDZ at this point.
|
|||
let bar = 1; |
|||
(x => bar); // force bar to be context-allocated.
|
|||
})(); |
|||
|
|||
Debug.setListener(null); |
|||
assertNull(exception); |
@ -0,0 +1,5 @@ |
|||
// 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.
|
|||
|
|||
new class extends new Proxy(class {},{}) {} |
Loading…
Reference in new issue