Index: src/compiler.h |
diff --git a/src/compiler.h b/src/compiler.h |
index cc1a9559bfb2d8c1241b35d40d3c6e2c5641829b..25e791caa234e10f5879028e87e6d475b242ab7e 100644 |
--- a/src/compiler.h |
+++ b/src/compiler.h |
@@ -404,12 +404,27 @@ class CompilationInfo { |
bool has_simple_parameters(); |
- typedef std::vector<Handle<SharedFunctionInfo>> InlinedFunctionList; |
+ struct InlinedFunctionHolder { |
+ Handle<SharedFunctionInfo> shared_info; |
+ |
+ // Root that holds the unoptimized code of the inlined function alive |
+ // (and out of reach of code flushing) until we finish compilation. |
+ // Do not remove. |
+ Handle<Code> inlined_code_object_root; |
+ |
+ explicit InlinedFunctionHolder( |
+ Handle<SharedFunctionInfo> inlined_shared_info) |
+ : shared_info(inlined_shared_info), |
+ inlined_code_object_root(inlined_shared_info->code()) {} |
+ }; |
+ |
+ typedef std::vector<InlinedFunctionHolder> InlinedFunctionList; |
InlinedFunctionList const& inlined_functions() const { |
return inlined_functions_; |
} |
+ |
void AddInlinedFunction(Handle<SharedFunctionInfo> inlined_function) { |
- inlined_functions_.push_back(inlined_function); |
+ inlined_functions_.push_back(InlinedFunctionHolder(inlined_function)); |
} |
base::SmartArrayPointer<char> GetDebugName() const; |