diff options
author | Myles Borins <mylesborins@google.com> | 2017-08-01 11:36:44 -0500 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2017-08-01 15:23:15 -0500 |
commit | 0a66b223e149a841669bfad5598e4254589730cb (patch) | |
tree | 5ec050f7f78aafbf5b1e0e50d639fb843141e162 /deps/v8/src/interpreter/bytecode-register-optimizer.cc | |
parent | 1782b3836ba58ef0da6b687f2bb970c0bd8199ad (diff) | |
download | node-new-0a66b223e149a841669bfad5598e4254589730cb.tar.gz |
deps: update V8 to 6.0.286.52
PR-URL: https://github.com/nodejs/node/pull/14004
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/src/interpreter/bytecode-register-optimizer.cc')
-rw-r--r-- | deps/v8/src/interpreter/bytecode-register-optimizer.cc | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/deps/v8/src/interpreter/bytecode-register-optimizer.cc b/deps/v8/src/interpreter/bytecode-register-optimizer.cc index 583d99c227..859f0e1828 100644 --- a/deps/v8/src/interpreter/bytecode-register-optimizer.cc +++ b/deps/v8/src/interpreter/bytecode-register-optimizer.cc @@ -207,14 +207,10 @@ BytecodeRegisterOptimizer::BytecodeRegisterOptimizer( // Calculate offset so register index values can be mapped into // a vector of register metadata. - if (parameter_count != 0) { - register_info_table_offset_ = - -Register::FromParameterIndex(0, parameter_count).index(); - } else { - // TODO(oth): This path shouldn't be necessary in bytecode generated - // from Javascript, but a set of tests do not include the JS receiver. - register_info_table_offset_ = -accumulator_.index(); - } + // There is at least one parameter, which is the JS receiver. + DCHECK(parameter_count != 0); + register_info_table_offset_ = + -Register::FromParameterIndex(0, parameter_count).index(); // Initialize register map for parameters, locals, and the // accumulator. @@ -322,6 +318,15 @@ void BytecodeRegisterOptimizer::AddToEquivalenceSet( void BytecodeRegisterOptimizer::RegisterTransfer(RegisterInfo* input_info, RegisterInfo* output_info) { + bool output_is_observable = + RegisterIsObservable(output_info->register_value()); + bool in_same_equivalence_set = + output_info->IsInSameEquivalenceSet(input_info); + if (in_same_equivalence_set && + (!output_is_observable || output_info->materialized())) { + return; // Nothing more to do. + } + // Materialize an alternate in the equivalence set that // |output_info| is leaving. if (output_info->materialized()) { @@ -329,12 +334,10 @@ void BytecodeRegisterOptimizer::RegisterTransfer(RegisterInfo* input_info, } // Add |output_info| to new equivalence set. - if (!output_info->IsInSameEquivalenceSet(input_info)) { + if (!in_same_equivalence_set) { AddToEquivalenceSet(input_info, output_info); } - bool output_is_observable = - RegisterIsObservable(output_info->register_value()); if (output_is_observable) { // Force store to be emitted when register is observable. output_info->set_materialized(false); |