Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 66bc4ede96c85bce4ba491cc10f5ee88b71b3aef..7ac9faf71640b280dcb326785e1e8af4146a39a6 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -1,4 +1,4 @@ |
-// Copyright 2010 the V8 project authors. All rights reserved. |
+// Copyright 2011 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -210,10 +210,17 @@ void FullCodeGenerator::EmitStackCheck(IterationStatement* stmt) { |
__ j(above_equal, &ok); |
StackCheckStub stub; |
__ CallStub(&stub); |
+ // Record a mapping of this PC offset to the OSR id. This is used to find |
+ // the AST id from the unoptimized code in order to use it as a key into |
+ // the deoptimization input data found in the optimized code. |
+ RecordStackCheck(stmt->OsrEntryId()); |
+ |
__ bind(&ok); |
PrepareForBailoutForId(stmt->EntryId(), NO_REGISTERS); |
+ // Record a mapping of the OSR id to this PC. This is used if the OSR |
+ // entry becomes the target of a bailout. We don't expect it to be, but |
+ // we want it to work if it is. |
PrepareForBailoutForId(stmt->OsrEntryId(), NO_REGISTERS); |
- RecordStackCheck(stmt->OsrEntryId()); |
} |