OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/compiler.h" | 5 #include "src/compiler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "src/asmjs/asm-js.h" | 10 #include "src/asmjs/asm-js.h" |
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1456 script->set_compilation_type(Script::COMPILATION_TYPE_EVAL); | 1456 script->set_compilation_type(Script::COMPILATION_TYPE_EVAL); |
1457 Script::SetEvalOrigin(script, outer_info, eval_position); | 1457 Script::SetEvalOrigin(script, outer_info, eval_position); |
1458 | 1458 |
1459 Zone zone(isolate->allocator()); | 1459 Zone zone(isolate->allocator()); |
1460 ParseInfo parse_info(&zone, script); | 1460 ParseInfo parse_info(&zone, script); |
1461 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); | 1461 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); |
1462 parse_info.set_eval(); | 1462 parse_info.set_eval(); |
1463 if (context->IsNativeContext()) parse_info.set_global(); | 1463 if (context->IsNativeContext()) parse_info.set_global(); |
1464 parse_info.set_language_mode(language_mode); | 1464 parse_info.set_language_mode(language_mode); |
1465 parse_info.set_parse_restriction(restriction); | 1465 parse_info.set_parse_restriction(restriction); |
1466 parse_info.set_context(context); | 1466 if (!context->IsNativeContext()) { |
| 1467 parse_info.set_outer_scope_info(handle(context->scope_info())); |
| 1468 } |
1467 | 1469 |
1468 shared_info = CompileToplevel(&info); | 1470 shared_info = CompileToplevel(&info); |
1469 | 1471 |
1470 if (shared_info.is_null()) { | 1472 if (shared_info.is_null()) { |
1471 return MaybeHandle<JSFunction>(); | 1473 return MaybeHandle<JSFunction>(); |
1472 } else { | 1474 } else { |
1473 // If caller is strict mode, the result must be in strict mode as well. | 1475 // If caller is strict mode, the result must be in strict mode as well. |
1474 DCHECK(is_sloppy(language_mode) || | 1476 DCHECK(is_sloppy(language_mode) || |
1475 is_strict(shared_info->language_mode())); | 1477 is_strict(shared_info->language_mode())); |
1476 compilation_cache->PutEval(source, outer_info, context, shared_info, | 1478 compilation_cache->PutEval(source, outer_info, context, shared_info, |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1629 if (is_module) { | 1631 if (is_module) { |
1630 parse_info.set_module(); | 1632 parse_info.set_module(); |
1631 } else { | 1633 } else { |
1632 parse_info.set_global(); | 1634 parse_info.set_global(); |
1633 } | 1635 } |
1634 if (compile_options != ScriptCompiler::kNoCompileOptions) { | 1636 if (compile_options != ScriptCompiler::kNoCompileOptions) { |
1635 parse_info.set_cached_data(cached_data); | 1637 parse_info.set_cached_data(cached_data); |
1636 } | 1638 } |
1637 parse_info.set_compile_options(compile_options); | 1639 parse_info.set_compile_options(compile_options); |
1638 parse_info.set_extension(extension); | 1640 parse_info.set_extension(extension); |
1639 parse_info.set_context(context); | 1641 if (!context->IsNativeContext()) { |
| 1642 parse_info.set_outer_scope_info(handle(context->scope_info())); |
| 1643 } |
1640 if (FLAG_serialize_toplevel && | 1644 if (FLAG_serialize_toplevel && |
1641 compile_options == ScriptCompiler::kProduceCodeCache) { | 1645 compile_options == ScriptCompiler::kProduceCodeCache) { |
1642 info.PrepareForSerializing(); | 1646 info.PrepareForSerializing(); |
1643 } | 1647 } |
1644 | 1648 |
1645 parse_info.set_language_mode( | 1649 parse_info.set_language_mode( |
1646 static_cast<LanguageMode>(parse_info.language_mode() | language_mode)); | 1650 static_cast<LanguageMode>(parse_info.language_mode() | language_mode)); |
1647 result = CompileToplevel(&info); | 1651 result = CompileToplevel(&info); |
1648 if (extension == NULL && !result.is_null()) { | 1652 if (extension == NULL && !result.is_null()) { |
1649 compilation_cache->PutScript(source, context, language_mode, result); | 1653 compilation_cache->PutScript(source, context, language_mode, result); |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1889 DCHECK(shared->is_compiled()); | 1893 DCHECK(shared->is_compiled()); |
1890 function->set_literals(cached.literals); | 1894 function->set_literals(cached.literals); |
1891 } else if (shared->is_compiled()) { | 1895 } else if (shared->is_compiled()) { |
1892 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. | 1896 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. |
1893 JSFunction::EnsureLiterals(function); | 1897 JSFunction::EnsureLiterals(function); |
1894 } | 1898 } |
1895 } | 1899 } |
1896 | 1900 |
1897 } // namespace internal | 1901 } // namespace internal |
1898 } // namespace v8 | 1902 } // namespace v8 |
OLD | NEW |