| Index: src/compiler.cc
|
| ===================================================================
|
| --- src/compiler.cc (revision 1344)
|
| +++ src/compiler.cc (working copy)
|
| @@ -40,6 +40,7 @@
|
|
|
| static Handle<Code> MakeCode(FunctionLiteral* literal,
|
| Handle<Script> script,
|
| + Handle<Context> context,
|
| bool is_eval) {
|
| ASSERT(literal != NULL);
|
|
|
| @@ -55,7 +56,7 @@
|
| // so this doesn't re-allocate variables repeatedly.
|
| Scope* top = literal->scope();
|
| while (top->outer_scope() != NULL) top = top->outer_scope();
|
| - top->AllocateVariables();
|
| + top->AllocateVariables(context);
|
|
|
| #ifdef DEBUG
|
| if (Bootstrapper::IsActive() ?
|
| @@ -81,6 +82,7 @@
|
| static Handle<JSFunction> MakeFunction(bool is_global,
|
| bool is_eval,
|
| Handle<Script> script,
|
| + Handle<Context> context,
|
| v8::Extension* extension,
|
| ScriptDataImpl* pre_data) {
|
| ZoneScope zone_scope(DELETE_ON_EXIT);
|
| @@ -113,7 +115,7 @@
|
| StatsRateScope timer(rate);
|
|
|
| // Compile the code.
|
| - Handle<Code> code = MakeCode(lit, script, is_eval);
|
| + Handle<Code> code = MakeCode(lit, script, context, is_eval);
|
|
|
| // Check for stack-overflow exceptions.
|
| if (code.is_null()) {
|
| @@ -201,7 +203,12 @@
|
| }
|
|
|
| // Compile the function and add it to the cache.
|
| - result = MakeFunction(true, false, script, extension, pre_data);
|
| + result = MakeFunction(true,
|
| + false,
|
| + script,
|
| + Handle<Context>::null(),
|
| + extension,
|
| + pre_data);
|
| if (extension == NULL && !result.is_null()) {
|
| CompilationCache::PutFunction(source, CompilationCache::SCRIPT, result);
|
| }
|
| @@ -219,6 +226,7 @@
|
|
|
|
|
| Handle<JSFunction> Compiler::CompileEval(Handle<String> source,
|
| + Handle<Context> context,
|
| int line_offset,
|
| bool is_global) {
|
| int source_length = source->length();
|
| @@ -233,14 +241,15 @@
|
|
|
| // Do a lookup in the compilation cache; if the entry is not there,
|
| // invoke the compiler and add the result to the cache.
|
| - Handle<JSFunction> result = CompilationCache::LookupEval(source, entry);
|
| + Handle<JSFunction> result =
|
| + CompilationCache::LookupEval(source, context, entry);
|
| if (result.is_null()) {
|
| // Create a script object describing the script to be compiled.
|
| Handle<Script> script = Factory::NewScript(source);
|
| script->set_line_offset(Smi::FromInt(line_offset));
|
| - result = MakeFunction(is_global, true, script, NULL, NULL);
|
| + result = MakeFunction(is_global, true, script, context, NULL, NULL);
|
| if (!result.is_null()) {
|
| - CompilationCache::PutFunction(source, entry, result);
|
| + CompilationCache::PutEvalFunction(source, context, entry, result);
|
| }
|
| }
|
|
|
| @@ -290,7 +299,7 @@
|
| StatsRateScope timer(&Counters::compile_lazy);
|
|
|
| // Compile the code.
|
| - Handle<Code> code = MakeCode(lit, script, false);
|
| + Handle<Code> code = MakeCode(lit, script, Handle<Context>::null(), false);
|
|
|
| // Check for stack-overflow exception.
|
| if (code.is_null()) {
|
|
|