OLD | NEW |
1 // Copyright 2017 the V8 project authors. All rights reserved. | 1 // Copyright 2017 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/ast/ast.h" | 5 #include "src/ast/ast.h" |
6 #include "src/compiler.h" | 6 #include "src/compiler.h" |
7 #include "src/objects-inl.h" | 7 #include "src/objects-inl.h" |
8 #include "src/parsing/parse-info.h" | 8 #include "src/parsing/parse-info.h" |
9 #include "src/parsing/parsing.h" | 9 #include "src/parsing/parsing.h" |
10 | 10 |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 i::SNPrintF(lazy_program + prefix_len + inner_function_len + params_len + | 311 i::SNPrintF(lazy_program + prefix_len + inner_function_len + params_len + |
312 source_len, | 312 source_len, |
313 "%s", suffix); | 313 "%s", suffix); |
314 | 314 |
315 i::Handle<i::String> source = | 315 i::Handle<i::String> source = |
316 factory->InternalizeUtf8String(lazy_program.start()); | 316 factory->InternalizeUtf8String(lazy_program.start()); |
317 source->PrintOn(stdout); | 317 source->PrintOn(stdout); |
318 printf("\n"); | 318 printf("\n"); |
319 | 319 |
320 i::Handle<i::Script> script = factory->NewScript(source); | 320 i::Handle<i::Script> script = factory->NewScript(source); |
321 i::ParseInfo lazy_info(script); | 321 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 322 i::ParseInfo lazy_info(&zone, script); |
322 | 323 |
323 // No need to run scope analysis; preparser scope data is produced when | 324 // No need to run scope analysis; preparser scope data is produced when |
324 // parsing. | 325 // parsing. |
325 CHECK(i::parsing::ParseProgram(&lazy_info)); | 326 CHECK(i::parsing::ParseProgram(&lazy_info)); |
326 | 327 |
327 // Then parse eagerly and check against the scope data. | 328 // Then parse eagerly and check against the scope data. |
328 inner_function = eager_inner; | 329 inner_function = eager_inner; |
329 inner_function_len = Utf8LengthHelper(inner_function) - 4; | 330 inner_function_len = Utf8LengthHelper(inner_function) - 4; |
330 len = | 331 len = |
331 prefix_len + inner_function_len + params_len + source_len + suffix_len; | 332 prefix_len + inner_function_len + params_len + source_len + suffix_len; |
332 | 333 |
333 i::ScopedVector<char> eager_program(len + 1); | 334 i::ScopedVector<char> eager_program(len + 1); |
334 i::SNPrintF(eager_program, "%s", prefix); | 335 i::SNPrintF(eager_program, "%s", prefix); |
335 i::SNPrintF(eager_program + prefix_len, inner_function, inners[i].params, | 336 i::SNPrintF(eager_program + prefix_len, inner_function, inners[i].params, |
336 inners[i].source); | 337 inners[i].source); |
337 i::SNPrintF(eager_program + prefix_len + inner_function_len + params_len + | 338 i::SNPrintF(eager_program + prefix_len + inner_function_len + params_len + |
338 source_len, | 339 source_len, |
339 "%s", suffix); | 340 "%s", suffix); |
340 | 341 |
341 source = factory->InternalizeUtf8String(eager_program.start()); | 342 source = factory->InternalizeUtf8String(eager_program.start()); |
342 source->PrintOn(stdout); | 343 source->PrintOn(stdout); |
343 printf("\n"); | 344 printf("\n"); |
344 | 345 |
345 script = factory->NewScript(source); | 346 script = factory->NewScript(source); |
346 i::ParseInfo eager_info(script); | 347 i::ParseInfo eager_info(&zone, script); |
347 eager_info.set_allow_lazy_parsing(false); | 348 eager_info.set_allow_lazy_parsing(false); |
348 | 349 |
349 CHECK(i::parsing::ParseProgram(&eager_info)); | 350 CHECK(i::parsing::ParseProgram(&eager_info)); |
350 CHECK(i::Compiler::Analyze(&eager_info)); | 351 CHECK(i::Compiler::Analyze(&eager_info)); |
351 | 352 |
352 i::Scope* scope = | 353 i::Scope* scope = |
353 eager_info.literal()->scope()->inner_scope()->inner_scope(); | 354 eager_info.literal()->scope()->inner_scope()->inner_scope(); |
354 DCHECK_NOT_NULL(scope); | 355 DCHECK_NOT_NULL(scope); |
355 DCHECK_NULL(scope->sibling()); | 356 DCHECK_NULL(scope->sibling()); |
356 DCHECK(scope->is_function_scope()); | 357 DCHECK(scope->is_function_scope()); |
357 | 358 |
358 size_t index = 0; | 359 size_t index = 0; |
359 i::ScopeTestHelper::CompareScopeToData( | 360 i::ScopeTestHelper::CompareScopeToData( |
360 scope, lazy_info.preparsed_scope_data(), index); | 361 scope, lazy_info.preparsed_scope_data(), index); |
361 } | 362 } |
362 } | 363 } |
OLD | NEW |