Reviewers: mvstanton,
Description:
Propagate serialization flag to inner functions.
[email protected]
Please review this at https://codereview.chromium.org/407383003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+18, -14 lines):
M src/arm/full-codegen-arm.cc
M src/arm64/full-codegen-arm64.cc
M src/compiler.h
M src/compiler.cc
M src/full-codegen.cc
M src/hydrogen.cc
M src/ia32/full-codegen-ia32.cc
M src/mips/full-codegen-mips.cc
M src/mips64/full-codegen-mips64.cc
M src/x64/full-codegen-x64.cc
M src/x87/full-codegen-x87.cc
Index: src/arm/full-codegen-arm.cc
diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
index
d8bd27fbd4b275b9d02e3d9a35412d8108b6d7a3..303f830a7e27e569cefddd2252e1c528ffbdbacb
100644
--- a/src/arm/full-codegen-arm.cc
+++ b/src/arm/full-codegen-arm.cc
@@ -870,7 +870,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/arm64/full-codegen-arm64.cc
diff --git a/src/arm64/full-codegen-arm64.cc
b/src/arm64/full-codegen-arm64.cc
index
49ccd9580512d701ffd48bc1c1657cba986f3c07..5e2b129c5a832e6c2efb2ecca63aa4bb1d3e816a
100644
--- a/src/arm64/full-codegen-arm64.cc
+++ b/src/arm64/full-codegen-arm64.cc
@@ -874,7 +874,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/compiler.cc
diff --git a/src/compiler.cc b/src/compiler.cc
index
8d59dbca2dc90c185eb9eede87562f6bdf69387e..522f6ce5dc71fc4b812fa7e319ec46819b6afee7
100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -1024,13 +1024,15 @@ Handle<SharedFunctionInfo> Compiler::CompileScript(
}
-Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo(FunctionLiteral*
literal,
- Handle<Script>
script) {
+Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo(
+ FunctionLiteral* literal, Handle<Script> script,
+ CompilationInfo* outer_info) {
// Precondition: code has been parsed and scopes have been analyzed.
CompilationInfoWithZone info(script);
info.SetFunction(literal);
info.PrepareForCompilation(literal->scope());
info.SetStrictMode(literal->scope()->strict_mode());
+ if (outer_info->will_serialize()) info.PrepareForSerializing();
Isolate* isolate = info.isolate();
Factory* factory = isolate->factory();
Index: src/compiler.h
diff --git a/src/compiler.h b/src/compiler.h
index
e3357d12cfd1120e1e55e3920bf892b7287b1037..57c8baa710cce26504cbe3c3b0b6b6fab195f899
100644
--- a/src/compiler.h
+++ b/src/compiler.h
@@ -693,8 +693,9 @@ class Compiler : public AllStatic {
NativesFlag is_natives_code);
// Create a shared function info object (the code may be lazily
compiled).
- static Handle<SharedFunctionInfo> BuildFunctionInfo(FunctionLiteral*
node,
- Handle<Script>
script);
+ static Handle<SharedFunctionInfo> BuildFunctionInfo(
+ FunctionLiteral* node, Handle<Script> script,
+ CompilationInfo* outer = NULL);
enum ConcurrencyMode { NOT_CONCURRENT, CONCURRENT };
Index: src/full-codegen.cc
diff --git a/src/full-codegen.cc b/src/full-codegen.cc
index
4ef640bbb85438661e9ba50ec294f7ab67aba220..a6a16759e2a5280f9b96f7ebbc7fd223332f4125
100644
--- a/src/full-codegen.cc
+++ b/src/full-codegen.cc
@@ -1512,7 +1512,7 @@ void
FullCodeGenerator::VisitFunctionLiteral(FunctionLiteral* expr) {
// Build the function boilerplate and instantiate it.
Handle<SharedFunctionInfo> function_info =
- Compiler::BuildFunctionInfo(expr, script());
+ Compiler::BuildFunctionInfo(expr, script(), info_);
if (function_info.is_null()) {
SetStackOverflow();
return;
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
b65b222991b468e2fb5658f53d6b270cf481eee3..d653ff501747467330d325f6630a9416fafe5e75
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -5226,7 +5226,8 @@ void
HOptimizedGraphBuilder::VisitFunctionLiteral(FunctionLiteral* expr) {
ASSERT(current_block()->HasPredecessor());
Handle<SharedFunctionInfo> shared_info = expr->shared_info();
if (shared_info.is_null()) {
- shared_info = Compiler::BuildFunctionInfo(expr,
current_info()->script());
+ shared_info =
+ Compiler::BuildFunctionInfo(expr, current_info()->script(),
top_info());
}
// We also have a stack overflow if the recursive compilation did.
if (HasStackOverflow()) return;
@@ -11239,7 +11240,7 @@ void
HOptimizedGraphBuilder::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_.Add(variable->name(), zone());
Handle<SharedFunctionInfo> function = Compiler::BuildFunctionInfo(
- declaration->fun(), current_info()->script());
+ declaration->fun(), current_info()->script(), top_info());
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_.Add(function, zone());
Index: src/ia32/full-codegen-ia32.cc
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
index
a4b4c6dd6f3894c2cc4cc1ebe960e2b00903fceb..03ceab9a875c96ad374c1ce5fd39165bfd36f7c5
100644
--- a/src/ia32/full-codegen-ia32.cc
+++ b/src/ia32/full-codegen-ia32.cc
@@ -817,7 +817,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/mips/full-codegen-mips.cc
diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
index
b7fb4f365d475130c0dd422edd0801146a2eb471..7174a22b3094f281afa0913ce97af92cedf5a9a0
100644
--- a/src/mips/full-codegen-mips.cc
+++ b/src/mips/full-codegen-mips.cc
@@ -871,7 +871,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/mips64/full-codegen-mips64.cc
diff --git a/src/mips64/full-codegen-mips64.cc
b/src/mips64/full-codegen-mips64.cc
index
494cf1a15635c5ba6573a24bf874053abdd76b4b..6ac77e268439cca56644733eba2821ceb30d485c
100644
--- a/src/mips64/full-codegen-mips64.cc
+++ b/src/mips64/full-codegen-mips64.cc
@@ -867,7 +867,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/x64/full-codegen-x64.cc
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
index
ae277b3feef9583f9a0ba6631d046faef73da9f9..f79e23017e33cc5d1d774f1d4d98836b79cb0ac1
100644
--- a/src/x64/full-codegen-x64.cc
+++ b/src/x64/full-codegen-x64.cc
@@ -839,7 +839,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
Index: src/x87/full-codegen-x87.cc
diff --git a/src/x87/full-codegen-x87.cc b/src/x87/full-codegen-x87.cc
index
fe67a996167924239179e78013be3e7507b60c3e..8194db658f049af39787230f522791e9681fcdbd
100644
--- a/src/x87/full-codegen-x87.cc
+++ b/src/x87/full-codegen-x87.cc
@@ -816,7 +816,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
case Variable::UNALLOCATED: {
globals_->Add(variable->name(), zone());
Handle<SharedFunctionInfo> function =
- Compiler::BuildFunctionInfo(declaration->fun(), script());
+ Compiler::BuildFunctionInfo(declaration->fun(), script(), info_);
// Check for stack-overflow exception.
if (function.is_null()) return SetStackOverflow();
globals_->Add(function, zone());
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.