Lazy preparsing vs. lazy parsing fix.
authormarja@chromium.org <marja@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 24 Feb 2014 17:48:09 +0000 (17:48 +0000)
committermarja@chromium.org <marja@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 24 Feb 2014 17:48:09 +0000 (17:48 +0000)
commit3d85b86e238d1aaabc241a175b50324bb3c82fd8
treeb4cdcd3c38ed7fb108231ab44386fd4d3dda8e01
parent37b6fd07c1ba2236bf097b5a5a68daf71c0cd244
Lazy preparsing vs. lazy parsing fix.

Preparsing is always maximally lazy (every function that can be lazy is preparsed
lazily), but Parser has more complicated laziness logic.

If we're going to parse eagerly, and we have preparse data from lazy preparsing,
we're gonna have a bad time. The symbol stream won't contain symbols inside lazy
functions, and when the Parser parses them eagerly, it will consume symbols from
the symbol stream, and everything will go wrong.

This bug was hidden because the symbol cache was not used for real (see
https://codereview.chromium.org/172753002/ ).

R=ulan@chromium.org
BUG=346207
LOG=Y

Review URL: https://codereview.chromium.org/177973002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/compiler.cc
test/cctest/test-debug.cc