Index: src/compiler.cc |
diff --git a/src/compiler.cc b/src/compiler.cc |
index 7482ae1a618025408c62bd4bde07b1889f98e04f..637ca0366d4b91a46a9cece99a8eeb52f448bd95 100644 |
--- a/src/compiler.cc |
+++ b/src/compiler.cc |
@@ -47,7 +47,8 @@ static Handle<Code> MakeCode(FunctionLiteral* literal, |
Handle<Script> script, |
Handle<Context> context, |
bool is_eval, |
- Handle<SharedFunctionInfo> shared) { |
+ Handle<SharedFunctionInfo> shared, |
+ Handle<Object> receiver) { |
ASSERT(literal != NULL); |
// Rewrite the AST by introducing .result assignments where needed. |
@@ -108,7 +109,7 @@ static Handle<Code> MakeCode(FunctionLiteral* literal, |
} |
} else if (FLAG_always_fast_compiler || |
(FLAG_fast_compiler && !is_run_once)) { |
- FastCodeGenSyntaxChecker checker; |
+ FastCodeGenSyntaxChecker checker(receiver); |
checker.Check(literal); |
// Does not yet generate code. |
} |
@@ -198,8 +199,12 @@ static Handle<JSFunction> MakeFunction(bool is_global, |
HistogramTimerScope timer(rate); |
// Compile the code. |
- Handle<Code> code = MakeCode(lit, script, context, is_eval, |
- Handle<SharedFunctionInfo>::null()); |
+ Handle<Code> code = MakeCode(lit, |
+ script, |
+ context, |
+ is_eval, |
+ Handle<SharedFunctionInfo>::null(), |
+ Handle<Object>::null()); // No receiver. |
// Check for stack-overflow exceptions. |
if (code.is_null()) { |
@@ -361,6 +366,7 @@ Handle<JSFunction> Compiler::CompileEval(Handle<String> source, |
bool Compiler::CompileLazy(Handle<SharedFunctionInfo> shared, |
+ Handle<Object> receiver, |
int loop_nesting) { |
CompilationZoneScope zone_scope(DELETE_ON_EXIT); |
@@ -400,8 +406,12 @@ bool Compiler::CompileLazy(Handle<SharedFunctionInfo> shared, |
HistogramTimerScope timer(&Counters::compile_lazy); |
// Compile the code. |
- Handle<Code> code = MakeCode(lit, script, Handle<Context>::null(), false, |
- shared); |
+ Handle<Code> code = MakeCode(lit, |
+ script, |
+ Handle<Context>::null(), |
+ false, |
+ shared, |
+ receiver); |
// Check for stack-overflow exception. |
if (code.is_null()) { |
@@ -496,7 +506,9 @@ Handle<JSFunction> Compiler::BuildBoilerplate(FunctionLiteral* literal, |
} |
} else if (FLAG_always_fast_compiler || |
(FLAG_fast_compiler && !is_run_once)) { |
- FastCodeGenSyntaxChecker checker; |
+ // Since we are not lazily compiling we do not have a receiver to |
+ // specialize for. |
+ FastCodeGenSyntaxChecker checker(Handle<Object>::null()); |
checker.Check(literal); |
// Generate no code. |
} |