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 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1475 script->set_compilation_type(Script::COMPILATION_TYPE_EVAL); | 1475 script->set_compilation_type(Script::COMPILATION_TYPE_EVAL); |
1476 Script::SetEvalOrigin(script, outer_info, eval_position); | 1476 Script::SetEvalOrigin(script, outer_info, eval_position); |
1477 | 1477 |
1478 Zone zone(isolate->allocator()); | 1478 Zone zone(isolate->allocator()); |
1479 ParseInfo parse_info(&zone, script); | 1479 ParseInfo parse_info(&zone, script); |
1480 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); | 1480 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); |
1481 parse_info.set_eval(); | 1481 parse_info.set_eval(); |
1482 if (context->IsNativeContext()) parse_info.set_global(); | 1482 if (context->IsNativeContext()) parse_info.set_global(); |
1483 parse_info.set_language_mode(language_mode); | 1483 parse_info.set_language_mode(language_mode); |
1484 parse_info.set_parse_restriction(restriction); | 1484 parse_info.set_parse_restriction(restriction); |
1485 parse_info.set_context(context); | 1485 if (!context->IsNativeContext()) { |
| 1486 parse_info.set_outer_scope_info(handle(context->scope_info())); |
| 1487 } |
1486 | 1488 |
1487 shared_info = CompileToplevel(&info); | 1489 shared_info = CompileToplevel(&info); |
1488 | 1490 |
1489 if (shared_info.is_null()) { | 1491 if (shared_info.is_null()) { |
1490 return MaybeHandle<JSFunction>(); | 1492 return MaybeHandle<JSFunction>(); |
1491 } else { | 1493 } else { |
1492 // If caller is strict mode, the result must be in strict mode as well. | 1494 // If caller is strict mode, the result must be in strict mode as well. |
1493 DCHECK(is_sloppy(language_mode) || | 1495 DCHECK(is_sloppy(language_mode) || |
1494 is_strict(shared_info->language_mode())); | 1496 is_strict(shared_info->language_mode())); |
1495 compilation_cache->PutEval(source, outer_info, context, shared_info, | 1497 compilation_cache->PutEval(source, outer_info, context, shared_info, |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 if (is_module) { | 1650 if (is_module) { |
1649 parse_info.set_module(); | 1651 parse_info.set_module(); |
1650 } else { | 1652 } else { |
1651 parse_info.set_global(); | 1653 parse_info.set_global(); |
1652 } | 1654 } |
1653 if (compile_options != ScriptCompiler::kNoCompileOptions) { | 1655 if (compile_options != ScriptCompiler::kNoCompileOptions) { |
1654 parse_info.set_cached_data(cached_data); | 1656 parse_info.set_cached_data(cached_data); |
1655 } | 1657 } |
1656 parse_info.set_compile_options(compile_options); | 1658 parse_info.set_compile_options(compile_options); |
1657 parse_info.set_extension(extension); | 1659 parse_info.set_extension(extension); |
1658 parse_info.set_context(context); | 1660 if (!context->IsNativeContext()) { |
| 1661 parse_info.set_outer_scope_info(handle(context->scope_info())); |
| 1662 } |
1659 if (FLAG_serialize_toplevel && | 1663 if (FLAG_serialize_toplevel && |
1660 compile_options == ScriptCompiler::kProduceCodeCache) { | 1664 compile_options == ScriptCompiler::kProduceCodeCache) { |
1661 info.PrepareForSerializing(); | 1665 info.PrepareForSerializing(); |
1662 } | 1666 } |
1663 | 1667 |
1664 parse_info.set_language_mode( | 1668 parse_info.set_language_mode( |
1665 static_cast<LanguageMode>(parse_info.language_mode() | language_mode)); | 1669 static_cast<LanguageMode>(parse_info.language_mode() | language_mode)); |
1666 result = CompileToplevel(&info); | 1670 result = CompileToplevel(&info); |
1667 if (extension == NULL && !result.is_null()) { | 1671 if (extension == NULL && !result.is_null()) { |
1668 compilation_cache->PutScript(source, context, language_mode, result); | 1672 compilation_cache->PutScript(source, context, language_mode, result); |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1902 DCHECK(shared->is_compiled()); | 1906 DCHECK(shared->is_compiled()); |
1903 function->set_literals(cached.literals); | 1907 function->set_literals(cached.literals); |
1904 } else if (shared->is_compiled()) { | 1908 } else if (shared->is_compiled()) { |
1905 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. | 1909 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. |
1906 JSFunction::EnsureLiterals(function); | 1910 JSFunction::EnsureLiterals(function); |
1907 } | 1911 } |
1908 } | 1912 } |
1909 | 1913 |
1910 } // namespace internal | 1914 } // namespace internal |
1911 } // namespace v8 | 1915 } // namespace v8 |
OLD | NEW |