| Index: src/compiler.cc | 
| diff --git a/src/compiler.cc b/src/compiler.cc | 
| index d44718bc0fc7faed24c8ee8cfb4f7bfcfaac1322..85c77adcc1966a89d389ccaa6b4f6399827725fa 100644 | 
| --- a/src/compiler.cc | 
| +++ b/src/compiler.cc | 
| @@ -118,7 +118,7 @@ bool CompilationInfo::ShouldSelfOptimize() { | 
| FLAG_crankshaft && | 
| !function()->flags()->Contains(kDontSelfOptimize) && | 
| !function()->flags()->Contains(kDontOptimize) && | 
| -      function()->scope()->AllowsLazyRecompilation() && | 
| +      function()->scope()->AllowsLazyCompilation() && | 
| (shared_info().is_null() || !shared_info()->optimization_disabled()); | 
| } | 
|  | 
| @@ -137,9 +137,8 @@ void CompilationInfo::AbortOptimization() { | 
| // all. However crankshaft support recompilation of functions, so in this case | 
| // the full compiler need not be be used if a debugger is attached, but only if | 
| // break points has actually been set. | 
| -static bool is_debugging_active() { | 
| +static bool IsDebuggerActive(Isolate* isolate) { | 
| #ifdef ENABLE_DEBUGGER_SUPPORT | 
| -  Isolate* isolate = Isolate::Current(); | 
| return V8::UseCrankshaft() ? | 
| isolate->debug()->has_break_points() : | 
| isolate->debugger()->IsDebuggerActive(); | 
| @@ -149,8 +148,8 @@ static bool is_debugging_active() { | 
| } | 
|  | 
|  | 
| -static bool AlwaysFullCompiler() { | 
| -  return FLAG_always_full_compiler || is_debugging_active(); | 
| +static bool AlwaysFullCompiler(Isolate* isolate) { | 
| +  return FLAG_always_full_compiler || IsDebuggerActive(isolate); | 
| } | 
|  | 
|  | 
| @@ -205,7 +204,7 @@ static bool MakeCrankshaftCode(CompilationInfo* info) { | 
| // Fall back to using the full code generator if it's not possible | 
| // to use the Hydrogen-based optimizing compiler. We already have | 
| // generated code for this from the shared function object. | 
| -  if (AlwaysFullCompiler()) { | 
| +  if (AlwaysFullCompiler(info->isolate())) { | 
| info->SetCode(code); | 
| return true; | 
| } | 
| @@ -719,8 +718,14 @@ Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo(FunctionLiteral* literal, | 
| // builtins cannot be handled lazily by the parser, since we have to know | 
| // if a function uses the special natives syntax, which is something the | 
| // parser records. | 
| +  // If the debugger requests compilation for break points, we cannot be | 
| +  // aggressive about lazy compilation, because it might trigger compilation | 
| +  // of functions without an outer context when setting a breakpoint through | 
| +  // Runtime::FindSharedFunctionInfoInScript. | 
| +  bool allow_lazy_without_ctx = literal->AllowsLazyCompilationWithoutContext(); | 
| bool allow_lazy = literal->AllowsLazyCompilation() && | 
| -      !LiveEditFunctionTracker::IsActive(info.isolate()); | 
| +      !LiveEditFunctionTracker::IsActive(info.isolate()) && | 
| +      (!info.isolate()->DebuggerHasBreakPoints() || allow_lazy_without_ctx); | 
|  | 
| Handle<ScopeInfo> scope_info(ScopeInfo::Empty()); | 
|  | 
| @@ -745,6 +750,7 @@ Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo(FunctionLiteral* literal, | 
| SetFunctionInfo(result, literal, false, script); | 
| RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, result); | 
| result->set_allows_lazy_compilation(allow_lazy); | 
| +  result->set_allows_lazy_compilation_without_context(allow_lazy_without_ctx); | 
|  | 
| // Set the expected number of properties for instances and return | 
| // the resulting function. | 
| @@ -777,6 +783,8 @@ void Compiler::SetFunctionInfo(Handle<SharedFunctionInfo> function_info, | 
| lit->has_only_simple_this_property_assignments(), | 
| *lit->this_property_assignments()); | 
| function_info->set_allows_lazy_compilation(lit->AllowsLazyCompilation()); | 
| +  function_info->set_allows_lazy_compilation_without_context( | 
| +      lit->AllowsLazyCompilationWithoutContext()); | 
| 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()); | 
|  |