Commit Graph

33380 Commits

Author SHA1 Message Date
vogelheim
1212e693d2 Minor header cleanup.
Review-Url: https://codereview.chromium.org/2272013002
Cr-Commit-Position: refs/heads/master@{#38888}
2016-08-25 08:17:38 +00:00
mstarzinger
b34d352e4c [deoptimizer] Remove obsolete constructor argument.
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2272653002
Cr-Commit-Position: refs/heads/master@{#38887}
2016-08-25 08:14:44 +00:00
baptiste.afsa
65ba1cdeb6 [turbofan] Allow tests to enable/disable instruction scheduling.
Some instruction selection tests rely on the instructions to be emitted
in a specific order.

R=jarin@chromium.org, bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2276003002
Cr-Commit-Position: refs/heads/master@{#38886}
2016-08-25 08:05:15 +00:00
neis
4671660f10 Use NeedsContext() instead of comparing num_heap_slots().
R=verwaest@chromium.org, bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2269403003
Cr-Commit-Position: refs/heads/master@{#38885}
2016-08-25 06:29:54 +00:00
bmeurer
b471d4ab5c [turbofan] Disable LoadElimination completely for asm.js.
There's no point in running the LoadElimination on asm.js functions and
it would take serious amount of effort to actually make it correct for
the deprecated parts of the pipeline.

R=jarin@chromium.org
BUG=v8:5308

Review-Url: https://codereview.chromium.org/2276273002
Cr-Commit-Position: refs/heads/master@{#38884}
2016-08-25 06:14:59 +00:00
jarin
c83b21ab75 [turbofan] Insert dummy values when changing from None type.
Currently we choose the MachineRepresentation::kNone representation for
values of Type::None, and when converting values from the kNone representation
we use "impossible" conversions that will crash at runtime. This
assumes that the impossible conversions should never be hit (the only
way to produce the impossible values is to perform an always-failing
runtime check on a value, such as Smi-checking a string). Note that
this assumes that the runtime check is executed before the impossible
convesrion.

Introducing BitwiseOr type feedback broke this in two ways:

- we always pick Word32 representation for bitwise-or, so the
  impossible conversion does not trigger (it only triggers with
  None representation), and we could end up with unsupported
  conversions from Word32.

- even if we inserted impossible conversions, they are pure conversions.
  Since untagging, bitwise-or operations are also pure, we could hoist
  all these before the smi check of the inputs and we could hit the
  impossible conversions before we get to the smi check.

This CL addresses this by just providing dummy values for conversions
from the Type::None type. It also removes the impossible-to-* conversions.

BUG=chromium:638132

Review-Url: https://codereview.chromium.org/2266823002
Cr-Commit-Position: refs/heads/master@{#38883}
2016-08-25 06:06:58 +00:00
bmeurer
052ba98d14 [compiler] Properly canonicalize handles even with concurrent recompilation.
For concurrent recompilation we created the CompilationHandleScope after
the CanonicalHandleScope, which basically disabled the canonicalization
because the deferred handle creation doesn't pay attention to the
canonicalization mode then. This meant that we did not canonicalize
handles properly as soon as concurrent recompilation was enabled.

R=jarin@chromium.org
BUG=v8:5267

Review-Url: https://codereview.chromium.org/2276953004
Cr-Commit-Position: refs/heads/master@{#38882}
2016-08-25 05:43:25 +00:00
bmeurer
a124bf773f [turbofan] Add regression tests for LoadElement/Field in diamond.
This introduces appropriate unit tests to ensure that merging of
elements/fields information is correct for diamonds.

BUG=chromium:639210,v8:5266
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2278043002
Cr-Commit-Position: refs/heads/master@{#38881}
2016-08-25 05:09:21 +00:00
franzih
8ce60a195c [api] Disable new and delete using = delete.
According to our style guide on Copyable and Movable Types,
copy/move operators should be disabled using = delete in the public: section.
Use consistent style for disabling new and delete.

BUG=

Review-Url: https://codereview.chromium.org/2276063002
Cr-Commit-Position: refs/heads/master@{#38880}
2016-08-25 04:27:43 +00:00
franzih
6effe72f46 [api] Disable copy constructors using = delete.
According to our style guide on Copyable and Movable Types,
copy/move operators should be disabled using = delete in the public: section,
not in the private: section.

BUG=

Review-Url: https://codereview.chromium.org/2272063002
Cr-Commit-Position: refs/heads/master@{#38879}
2016-08-25 04:24:08 +00:00
franzih
b2fee84f87 Disable copy constructor in public: section or use macro.
According to our style guide on Copyable and Movable Types,
copy/move operators should be disabled in the public: section, not
in the private: section. If disabled with a macro such as
DISALLOW_COPY_AND_ASSIGN, it should be at the end of the private: section,
and should be the last thing in the class.

BUG=

Review-Url: https://codereview.chromium.org/2271043003
Cr-Commit-Position: refs/heads/master@{#38878}
2016-08-25 03:13:31 +00:00
mlippautz
a8d8620f9b [platform] MacOS supports on-demand paging
https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html#//apple_ref/doc/uid/20001880-SW3

R=jochen@chromium.org

Review-Url: https://codereview.chromium.org/2278473002
Cr-Commit-Position: refs/heads/master@{#38877}
2016-08-24 21:56:29 +00:00
littledan
aae17eb31b Do not trigger ExceptionEvents for another forwarding case
This patch fixes up one last case of redundant ExceptionEvents being
triggered in the debugger for Promises--it makes the default reject
handler for Promises (e.g., if the second argument for
Promise.prototype.then is missing) appear to the debugger as a
rethrow.

R=adamk@chromium.org,jgruber@chromium.org
BUG=v8:5167

Review-Url: https://codereview.chromium.org/2278643002
Cr-Commit-Position: refs/heads/master@{#38876}
2016-08-24 20:38:13 +00:00
rodolph.perfetta
e916dad343 [turbofan] fix deopt's input life span
Mark deopt's input alive till the end of the deopt instruction so
they cannot be reused as output.

BUG=v8:5158

Review-Url: https://codereview.chromium.org/2247303007
Cr-Commit-Position: refs/heads/master@{#38875}
2016-08-24 19:45:15 +00:00
jarin
dc330f2bd3 [turbofan] Fix merging of empty and non-empty state in load elimination.
Unfortunately, I was unable to produce a repro without asm.js. In normal
JavaScript, the bounds check renaming saves us.

I have not done anything about the index variable aliasing and handling
of differently sized elements yet!

BUG=chromium:639210, v8:5266

Review-Url: https://codereview.chromium.org/2270793004
Cr-Commit-Position: refs/heads/master@{#38874}
2016-08-24 17:14:24 +00:00
jyan
abd32fb1c7 Fix FastAccessorToSmi CCTest to use ptr type
The generated FastAccessorAssembler uses IntPtr Load Op to load
from &flags. Therefore, flags should be a pointer type. This fixes
big endian issue.

R=peterssen@google.com, vogelheim@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2266403004
Cr-Commit-Position: refs/heads/master@{#38873}
2016-08-24 17:05:00 +00:00
franzih
ceadddd15d [api] Disable copy constructors in the public section.
According to our style guide on Copyable and Movable Types,
copy/move operators should be disabled in the public: section, not
in the private: section.

BUG=

Review-Url: https://codereview.chromium.org/2278573002
Cr-Commit-Position: refs/heads/master@{#38872}
2016-08-24 16:28:11 +00:00
jbroman
78131aa1d5 Blink-compatible serialization of Map and Set objects.
BUG=chromium:148757

Review-Url: https://codereview.chromium.org/2269923004
Cr-Commit-Position: refs/heads/master@{#38871}
2016-08-24 15:58:55 +00:00
jgruber
eba4ae2357 Add flags to FrameArray
This makes some information passed implicitly (e.g. the ForceConstructor
flag used to be a special symbol passed as the receiver) explicit.

BUG=

Review-Url: https://codereview.chromium.org/2274823002
Cr-Commit-Position: refs/heads/master@{#38870}
2016-08-24 15:41:13 +00:00
ofrobots
fcc8399d39 v8.gyp: fix mkpeephole on Windows for Node.js
The mkpeephole step was failing on Windows (only) for Node.js [1].
It seems that gyp was not creating the dependency graph correctly for
Windows. Work-around the problem by exposing the dependency directly
(as opposed to exposing it in the action), similar to how `mksnapshot`
works.

[1]: https://ci.nodejs.org/job/node-compile-windows/3798/label=win-vcbt2015/console

R=oth@chromium.org, rmcilroy@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2276733002
Cr-Commit-Position: refs/heads/master@{#38869}
2016-08-24 15:29:19 +00:00
neis
615aea66e8 Remove the rest_parameter(int*) variant, use rest_parameter() instead.
The value returned via the int* argument was actually never used.

Also remove has_rest_parameter() in favor of returning nullptr from
rest_parameter().  This is in line with similar accessors and simplifies my
changes.

BUG=

Review-Url: https://codereview.chromium.org/2276923002
Cr-Commit-Position: refs/heads/master@{#38868}
2016-08-24 14:45:02 +00:00
jochen
442336409f Remove scopeinfo.h
It's an empty header.

R=verwaest@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2278513002
Cr-Commit-Position: refs/heads/master@{#38867}
2016-08-24 14:28:25 +00:00
mstarzinger
b52aecac7e [compiler] Make Compiler::EnsureBytecode not switch tiers.
This preserves the original shared code of the underlying function when
bytecode is provided. The method in question should only ensure bytecode
is present, but should avoid switching compilation tiers of the given
function. It might be that the function was fast-tracked to baseline by
inlining without going through the interpreted tier first.

R=rmcilroy@chromium.org
TEST=mjsunit/regress/regress-crbug-635923
BUG=chromium:635923

Review-Url: https://codereview.chromium.org/2278543002
Cr-Commit-Position: refs/heads/master@{#38866}
2016-08-24 14:09:59 +00:00
verwaest
8547b072c8 Inline fast-path of Scope::LookupLocal
BUG=v8:5209

Review-Url: https://codereview.chromium.org/2275773002
Cr-Commit-Position: refs/heads/master@{#38865}
2016-08-24 14:04:11 +00:00
bmeurer
6646d73b6f [turbofan] Use ObjectIsReceiver directly for inlining.
Don't bother using %_IsJSReceiver, which immediately gets lowered to
ObjectIsReceiver anyways (by the JSIntrinsicLowering), but requires
some complicated rewiring of effect/control chains.

R=mstarzinger@chromium.org
BUG=chromium:640369

Review-Url: https://codereview.chromium.org/2271973003
Cr-Commit-Position: refs/heads/master@{#38864}
2016-08-24 11:09:32 +00:00
zhengxing.li
ce1386697f [TurboFan] Avoid Gcc compilation fail by Initializing rest_index variable.
The CL #38858 (https://codereview.chromium.org/2269293004) removed the parameter assignment code
  in rest_parameter(int* index) function in Class DeclarationScope.

  This caused the Gcc compilation fail at the following code in src/compiler/ast-graph-builder.cc, line 576.
  int rest_index;
  Variable* rest_parameter = scope->rest_parameter(&rest_index);
  BuildRestArgumentsArray(rest_parameter, rest_index);

  The error message was:
  ../src/compiler/ast-graph-builder.cc: In member function ‘void v8::internal::compiler::AstGraphBuilder::CreateGraphBody(bool)’:
  ../src/compiler/ast-graph-builder.cc:578:54: error: ‘rest_index’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  BuildRestArgumentsArray(rest_parameter, rest_index);
                                                      ^

  This CL fixed this issue by intializing rest_index to 0.

BUG=

Review-Url: https://codereview.chromium.org/2270363003
Cr-Commit-Position: refs/heads/master@{#38863}
2016-08-24 11:06:37 +00:00
nikolaos
c374d4136c [parser] Clean up (pre)parser traits, part 3
This patch moves the following methods from the traits objects to
the (pre)parser implementation objects:

- BuildIteratorResult
- BuildUnaryExpression
- EmptyExpression
- EmptyFunctionLiteral
- EmptyIdentifier
- EmptyIdentifierString
- EmptyLiteral
- EmptyObjectLiteralProperty
- GetLiteralTheHole
- NewThrowReferenceError
- NewThrowSyntaxError
- NewThrowTypeError
- NullExpressionList
- ReportMessageAt

R=adamk@chromium.org, marja@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2268413002
Cr-Commit-Position: refs/heads/master@{#38862}
2016-08-24 10:22:43 +00:00
nikolaos
626309272e [parser] Clean up (pre)parser traits, part 2
This patch moves the following methods from the traits objects to
the (pre)parser implementation objects:

- AsIdentifier
- CheckAssigningFunctionLiteralToProperty
- GetPropertyValue
- InferFunctionName
- IsArguments
- IsArrayIndex
- IsBoilerplateProperty
- IsConstructor
- IsDirectEvalCall
- IsEval
- IsEvalOrArguments
- IsFutureStrictReserved
- IsIdentifier
- IsPrototype
- IsThisProperty
- IsUndefined
- MarkExpressionAsAssigned
- PushLiteralName
- PushPropertyName
- ShortcutNumericLiteralBinaryExpression

R=adamk@chromium.org, marja@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2273693002
Cr-Commit-Position: refs/heads/master@{#38861}
2016-08-24 10:08:47 +00:00
bmeurer
b5629a108c [turbofan] Improve fast case of JSInstanceOf lowering.
For O instanceof C, we only need to check the instance type while
iterating the prototypes of O instead of checking both the instance
type and the access check bit of the map. This is because we have
the explicit range of "special object types", which include both
JSProxy as well as the global object and proxy and all API objects
that might have access checks or interceptors. Also restructure the
loop exits somewhat to ensure that the branch cloning gets a chance
to actually eliminate the bit materialization for the results.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2263273003
Cr-Commit-Position: refs/heads/master@{#38860}
2016-08-24 09:38:48 +00:00
marja
7eaeb5aea5 Scopes: simplify scope creation.
With scopes: Don't call the ctor which wants a ScopeInfo if we
don't want to pass it, instead call a ctor which doesn't need it.

In addition, remove inner_scope from ctors and adjust it
explicitly afterwards. It's confusing that some ctors get passed
inner scopes and some outer scopes.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2270743002
Cr-Commit-Position: refs/heads/master@{#38859}
2016-08-24 09:27:10 +00:00
verwaest
6e4d678db9 Replace rest_index_ with has_rest_
rest_index_ is implicitly params_.length() - 1, since it can only be the last.
Add dchecks that no parameters are added after the rest parameter.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2269293004
Cr-Commit-Position: refs/heads/master@{#38858}
2016-08-24 09:15:23 +00:00
zhengxing.li
909641fd5e X87: [turbofan] Add Float32(Max|Min) machine operators.
port 2027b0bed1 (r38784)

  original commit message:
  The new operators are implemented similar to the Float64(Max|Min) which
  already exist. The purpose of the new operators is the implementation
  of the F32Max and F32Min instructions in WebAssembly.

BUG=

Review-Url: https://codereview.chromium.org/2270193003
Cr-Commit-Position: refs/heads/master@{#38857}
2016-08-24 08:54:19 +00:00
zhengxing.li
60908503ac X87: [interpreter] Fix self-healing with preserved bytecode.
port 4598d9139e (r38747)

  original commit message:
  This fixes the self-healing mechanism for closures in the interpreter
  entry trampoline not that bytecode can be preserved even when baseline
  code is already available.

BUG=

Review-Url: https://codereview.chromium.org/2273503003
Cr-Commit-Position: refs/heads/master@{#38856}
2016-08-24 08:53:11 +00:00
verwaest
3a9c7b55af Store NonLocals in variables_
Now that ordered_variables_ is used to find non-dynamic variables, and NonLocals are always stored in the scope that introduces them, we can rely on variables_ to also cache non-locals. This has 2 advantages:
1) we don't need DynamicScopePart anymore, reducing all scopes by a pointer
2) upon second lookup of a non-local we don't need to walk the entire chain anymore. The cached value will immediately be found.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2276483003
Cr-Commit-Position: refs/heads/master@{#38855}
2016-08-24 08:52:04 +00:00
jarin
a5c2902166 [turbofan] Change map to vector in loop variable analysis.
This recovers about 50% of the regression in compilation time.

BUG=chromium:638208

Review-Url: https://codereview.chromium.org/2274053002
Cr-Commit-Position: refs/heads/master@{#38854}
2016-08-24 08:51:05 +00:00
verwaest
920f5fcd1e Annotate ScopeType with uint8_t
BUG=v8:5209

Review-Url: https://codereview.chromium.org/2270213002
Cr-Commit-Position: refs/heads/master@{#38853}
2016-08-24 08:49:57 +00:00
jgruber
19e8380261 Add new FrameArray type
A FrameArray encodes information about a set of stack frames into a fixed
array.

This commit is a pure refactoring to make the structure of fixed array-encoded
frames explicit.

BUG=

Review-Url: https://codereview.chromium.org/2270783002
Cr-Commit-Position: refs/heads/master@{#38852}
2016-08-24 08:49:04 +00:00
hablich
2053d142e0 Revert of Update V8 DEPS. (patchset #1 id:1 of https://codereview.chromium.org/2276833002/ )
Reason for revert:
Breaks TSAN

Original issue's description:
> Update V8 DEPS.
>
> Rolling v8/build to b02fa16a7e5f43a2afb00b8cf56375a700f3ed0e
>
> Rolling v8/tools/clang to 82fffa46e8fedec2be06199c5f90410e7f2bffb8
>
> Rolling v8/tools/mb to 94f86dcf676fbf08448f662273aac62951365b2c
>
> TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
>
> Committed: https://crrev.com/a796d69a9a093ca7773acbe9377865b7df680fe6
> Cr-Commit-Position: refs/heads/master@{#38850}

TBR=machenbach@chromium.org,vogelheim@chromium.org,v8-autoroll@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2270293004
Cr-Commit-Position: refs/heads/master@{#38851}
2016-08-24 08:37:30 +00:00
v8-autoroll
a796d69a9a Update V8 DEPS.
Rolling v8/build to b02fa16a7e5f43a2afb00b8cf56375a700f3ed0e

Rolling v8/tools/clang to 82fffa46e8fedec2be06199c5f90410e7f2bffb8

Rolling v8/tools/mb to 94f86dcf676fbf08448f662273aac62951365b2c

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/2276833002
Cr-Commit-Position: refs/heads/master@{#38850}
2016-08-24 03:32:52 +00:00
zhengxing.li
32e7b9195b X87: TurboFan: Introduce TaggedSigned and TaggedPointer representations.
port d941b52d73 (r38657)

  original commit message:
  These new representations aren't used yet.

BUG=

Review-Url: https://codereview.chromium.org/2277473004
Cr-Commit-Position: refs/heads/master@{#38849}
2016-08-24 02:37:53 +00:00
mtrofin
5524cbf5b8 [wasm] Remember import indices
When compiling a wasm module, we initially generate placeholders for
imports, which store the index corresponding to that import. Later,
at instantiation time, we use that index to correctly link the
provided import.

In this scheme, supporting multiple instantiations requires we
preserve a template (set of unlinked compiled wasm functions) which
we clone for each instance. To avoid holding on to this template,
which may be large (wasm compiled code should be expected to be in
the order of tens of MB), we must enable cloning from an instance's
linked wasm functions.

This change is a step in that direction. Instead of assuming the wasm
functions reference placeholders, we store a table of the code objects
used for imports together with the compiled module, and use that
information to determine the index of the import. Initially, that
table contains placeholders. For instances, however, that table contains
their actual imports.

BUG=

Review-Url: https://codereview.chromium.org/2269323002
Cr-Commit-Position: refs/heads/master@{#38848}
2016-08-24 00:26:15 +00:00
littledan
013e49f73c Change which ExceptionEvents are triggered by Promises
To make async/await catch prediction work well, this patch regularizes
the exception events sent to DevTools from various places in the Promise
lifecycle. The core is that there should be an exception event when the
rejection first starts, rather than when it is propagated.

- Several cases within Promise code which propagate errors are
  modified to not trigger a new ExceptionEvent in that case, such
  as .then on a rejected Promise and returning a rejected Promise
  from .then, as well as Promise.race and Promise.all.
- Make Promise.reject() create an ExceptionEvent, subject to catch
  prediction based on the Promise stack. This is important
  so that, e.g., if "await Promise.reject()" will trigger a new
  throw (rather than a silent rethrow of something that never
  triggered an event in the first place).

BUG=v8:5167

Review-Url: https://codereview.chromium.org/2244003003
Cr-Commit-Position: refs/heads/master@{#38847}
2016-08-24 00:20:50 +00:00
adamk
9a558c5f4a Disallow 'yield' in async arrow parameter lists inside generators
R=littledan@chromium.org
BUG=v8:4483

Review-Url: https://codereview.chromium.org/2270223002
Cr-Commit-Position: refs/heads/master@{#38846}
2016-08-23 22:17:38 +00:00
jpp
cf5180c3ef [v8][wasm] Handles finally in try/finally blocks.
Introduces support for using

try {
} finally {
}

in wasm.

BUG=

Review-Url: https://codereview.chromium.org/2240743003
Cr-Commit-Position: refs/heads/master@{#38845}
2016-08-23 22:14:52 +00:00
verwaest
ff40125ed8 Let LookupRecursive bind to NonLocals properly.
This gets rid of the BindingsKind flag. It replaces the factory argument with a bool that indicates whether free variables should be resolved as well.

BUG=

Review-Url: https://codereview.chromium.org/2262393004
Cr-Commit-Position: refs/heads/master@{#38844}
2016-08-23 21:17:24 +00:00
gdeepti
6122465c88 [wasm] Add native x64 implementations for I32x4Splat, I32x4ExtractLane
- Instruction selection, code generation, test for Splat/Extract
 - Fixes for AstS128 Locals in wasm

R=bbudge@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2264533002
Cr-Commit-Position: refs/heads/master@{#38843}
2016-08-23 19:59:43 +00:00
adamk
55a6588dae Fix typo in ExpressionClassifier cleanup
"ExpressionProductions" was missing the plural. I don't think this
changed any behavior, but I'd rather be safe than sorry. Also
removed redundant mention of TailCall production.

A future patch will attempt to make calls to Accumulate make more sense,
in general.

R=littledan@chromium.org

Review-Url: https://codereview.chromium.org/2270153002
Cr-Commit-Position: refs/heads/master@{#38842}
2016-08-23 19:57:54 +00:00
adamk
ad07b49d7b Add a bit of test coverage for callers of destructuring assignment
In particular, this covers one caller of CheckDestructuringElement
that didn't have tests before.

R=caitp@igalia.com

Review-Url: https://codereview.chromium.org/2267153002
Cr-Commit-Position: refs/heads/master@{#38841}
2016-08-23 19:30:45 +00:00
bjaideep
cf6db3fce5 s390: [interpreter] Make the binary op with Smi bytecode handlers collect type feedback.
Port b305c7dfcb

Original commit message:

    Drive-by fix: the order of parameters in the BinaryOpWithFeedback TurboFan code stubs now reflects the convention of having the context at the end.

R=epertoso@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:5273
LOG=N

Review-Url: https://codereview.chromium.org/2264353003
Cr-Commit-Position: refs/heads/master@{#38840}
2016-08-23 18:40:29 +00:00
adamk
1bf952072f [cleanup] Eliminate Forgive* methods on ExpressionClassifier
The only two places where these Forgive methods were called
was in ParseAssignmentExpression just at the time we were
calling Accumulate(). So instead of Forgiving, we can simply
not accumulate the bits that would have been forgiven.

Also slightly restructures the nearby code in
ParseAssignmentExpression, and removes the use of non-const
references in ExpressionClassifier.

Review-Url: https://codereview.chromium.org/2267223002
Cr-Commit-Position: refs/heads/master@{#38839}
2016-08-23 18:27:26 +00:00