Index: src/interpreter/bytecode-generator.cc |
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc |
index 6c51499740581ec24bd49806ee881bdf76d08d6b..367a50983e129084403d6c03d32bfe6df568afb6 100644 |
--- a/src/interpreter/bytecode-generator.cc |
+++ b/src/interpreter/bytecode-generator.cc |
@@ -664,6 +664,16 @@ void BytecodeGenerator::VisitIterationHeader(IterationStatement* stmt, |
stmt->yield_count(), generator_resume_points_); |
builder()->Bind(¬_resuming); |
} |
+ |
+ // Insert an explicit {OsrPoll} right after the loop header, to trigger |
+ // on-stack replacement when armed for the given loop nesting depth. |
rmcilroy
2016/07/25 12:40:23
Should this be before the generator resume logic (
Michael Starzinger
2016/07/25 13:40:48
Done. Yes, I am not 100% sure about interaction wi
rmcilroy
2016/07/26 09:26:44
Acknowledged.
|
+ if (FLAG_ignition_osr) { |
+ // TODO(4764): Merge this with another bytecode (e.g. {Jump} back edge). |
+ // TODO(4764): Investigate interaction with generators. |
+ // TODO(4764): Track and pass correct loop depth. |
+ DCHECK_EQ(0, stmt->yield_count()); |
+ builder()->OsrPoll(0); |
+ } |
} |
void BytecodeGenerator::VisitGeneratorPrologue() { |