| Index: src/compiler.cc
|
| diff --git a/src/compiler.cc b/src/compiler.cc
|
| index de0d528d387c605b242afb7fb557902a21daf1e2..5ac6353b3f4faea7b8837ca5da1841ed920d6cf3 100644
|
| --- a/src/compiler.cc
|
| +++ b/src/compiler.cc
|
| @@ -190,8 +190,8 @@ void CompilationInfo::Initialize(Isolate* isolate,
|
| if (FLAG_turbo_types) MarkAsTypingEnabled();
|
|
|
| if (!shared_info_.is_null()) {
|
| - DCHECK(strict_mode() == SLOPPY);
|
| - SetStrictMode(shared_info_->strict_mode());
|
| + DCHECK(is_sloppy(language_mode()));
|
| + SetLanguageMode(shared_info_->language_mode());
|
| }
|
| bailout_reason_ = kNoReason;
|
|
|
| @@ -631,7 +631,7 @@ static void SetFunctionInfo(Handle<SharedFunctionInfo> function_info,
|
| function_info->set_allows_lazy_compilation(lit->AllowsLazyCompilation());
|
| function_info->set_allows_lazy_compilation_without_context(
|
| lit->AllowsLazyCompilationWithoutContext());
|
| - function_info->set_strict_mode(lit->strict_mode());
|
| + function_info->set_language_mode(lit->language_mode());
|
| function_info->set_uses_arguments(lit->scope()->arguments() != NULL);
|
| function_info->set_has_duplicate_parameters(lit->has_duplicate_parameters());
|
| function_info->set_ast_node_count(lit->ast_node_count());
|
| @@ -700,7 +700,7 @@ MUST_USE_RESULT static MaybeHandle<Code> GetUnoptimizedCodeCommon(
|
| if (!Parser::Parse(info)) return MaybeHandle<Code>();
|
| Handle<SharedFunctionInfo> shared = info->shared_info();
|
| FunctionLiteral* lit = info->function();
|
| - shared->set_strict_mode(lit->strict_mode());
|
| + shared->set_language_mode(lit->language_mode());
|
| SetExpectedNofPropertiesFromEstimate(shared, lit->expected_property_count());
|
| MaybeDisableOptimization(shared, lit->dont_optimize_reason());
|
|
|
| @@ -1223,7 +1223,7 @@ static Handle<SharedFunctionInfo> CompileToplevel(CompilationInfo* info) {
|
|
|
| MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
|
| Handle<String> source, Handle<SharedFunctionInfo> outer_info,
|
| - Handle<Context> context, StrictMode strict_mode,
|
| + Handle<Context> context, LanguageMode language_mode,
|
| ParseRestriction restriction, int scope_position) {
|
| Isolate* isolate = source->GetIsolate();
|
| int source_length = source->length();
|
| @@ -1232,7 +1232,7 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
|
|
|
| CompilationCache* compilation_cache = isolate->compilation_cache();
|
| MaybeHandle<SharedFunctionInfo> maybe_shared_info =
|
| - compilation_cache->LookupEval(source, outer_info, context, strict_mode,
|
| + compilation_cache->LookupEval(source, outer_info, context, language_mode,
|
| scope_position);
|
| Handle<SharedFunctionInfo> shared_info;
|
|
|
| @@ -1241,7 +1241,7 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
|
| CompilationInfoWithZone info(script);
|
| info.MarkAsEval();
|
| if (context->IsNativeContext()) info.MarkAsGlobal();
|
| - info.SetStrictMode(strict_mode);
|
| + info.SetLanguageMode(language_mode);
|
| info.SetParseRestriction(restriction);
|
| info.SetContext(context);
|
|
|
| @@ -1259,7 +1259,8 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
|
| }
|
|
|
| // If caller is strict mode, the result must be in strict mode as well.
|
| - DCHECK(strict_mode == SLOPPY || shared_info->strict_mode() == STRICT);
|
| + DCHECK(is_sloppy(language_mode) ||
|
| + is_strict(shared_info->language_mode()));
|
| if (!shared_info->dont_cache()) {
|
| compilation_cache->PutEval(source, outer_info, context, shared_info,
|
| scope_position);
|
| @@ -1352,7 +1353,10 @@ Handle<SharedFunctionInfo> Compiler::CompileScript(
|
| compile_options == ScriptCompiler::kProduceCodeCache) {
|
| info.PrepareForSerializing();
|
| }
|
| - if (FLAG_use_strict) info.SetStrictMode(STRICT);
|
| + if (FLAG_use_strict) {
|
| + info.SetLanguageMode(
|
| + static_cast<LanguageMode>(info.language_mode() | STRICT));
|
| + }
|
|
|
| result = CompileToplevel(&info);
|
| if (extension == NULL && !result.is_null() && !result->dont_cache()) {
|
| @@ -1383,7 +1387,10 @@ Handle<SharedFunctionInfo> Compiler::CompileStreamedScript(
|
| isolate->counters()->total_load_size()->Increment(source_length);
|
| isolate->counters()->total_compile_size()->Increment(source_length);
|
|
|
| - if (FLAG_use_strict) info->SetStrictMode(STRICT);
|
| + if (FLAG_use_strict) {
|
| + info->SetLanguageMode(
|
| + static_cast<LanguageMode>(info->language_mode() | STRICT));
|
| + }
|
| // TODO(marja): FLAG_serialize_toplevel is not honoured and won't be; when the
|
| // real code caching lands, streaming needs to be adapted to use it.
|
| return CompileToplevel(info);
|
| @@ -1397,7 +1404,7 @@ Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo(
|
| CompilationInfoWithZone info(script);
|
| info.SetFunction(literal);
|
| info.PrepareForCompilation(literal->scope());
|
| - info.SetStrictMode(literal->scope()->strict_mode());
|
| + info.SetLanguageMode(literal->scope()->language_mode());
|
| if (outer_info->will_serialize()) info.PrepareForSerializing();
|
|
|
| Isolate* isolate = info.isolate();
|
|
|