Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 1658d71f9112dde1da8b486b7f84a1c855531c15..5f03146d5d88852fd73498b07b8a43b5810b1088 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -1180,6 +1180,13 @@ void LCodeGen::PopulateDeoptimizationData(Handle<Code> code) { |
data->SetTranslationByteArray(*translations); |
data->SetInlinedFunctionCount(Smi::FromInt(inlined_function_count_)); |
data->SetOptimizationId(Smi::FromInt(info_->optimization_id())); |
+ if (info_->IsOptimizing()) { |
+ // Reference to shared function info does not change between phases. |
+ AllowDeferredHandleDereference allow_handle_dereference; |
+ data->SetSharedFunctionInfo(*info_->shared_info()); |
+ } else { |
+ data->SetSharedFunctionInfo(Smi::FromInt(0)); |
+ } |
Handle<FixedArray> literals = |
factory()->NewFixedArray(deoptimization_literals_.length(), TENURED); |