Reviewers: ulan,

Message:
Part of the out-of-line constant pool change - PTAL.

Description:
Update constant pool correctly when resuming a generator

This CL depends on the following CLs landing first:
  https://codereview.chromium.org/188063002/
  https://codereview.chromium.org/190793002/

Please review this at https://codereview.chromium.org/190823002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+12, -0 lines):
  M src/arm/full-codegen-arm.cc
  M src/runtime.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 c221a4835136ba89054a80207a49f07d223636c2..cc45e6da9f9eb73683510219c0d99350e9c0ba7b 100644
--- a/src/arm/full-codegen-arm.cc
+++ b/src/arm/full-codegen-arm.cc
@@ -2194,12 +2194,20 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
     __ cmp(r3, Operand(0));
     __ b(ne, &slow_resume);
     __ ldr(r3, FieldMemOperand(r4, JSFunction::kCodeEntryOffset));
+
+    ConstantPoolUnavailableScope constant_pool_unavailable(masm_);
+    if (FLAG_enable_ool_constant_pool) {
+      // Load the new code object's constant pool pointer.
+ __ ldr(pp, MemOperand(r3, Code::kConstantPoolOffset - Code::kHeaderSize));
+    }
+
__ ldr(r2, FieldMemOperand(r1, JSGeneratorObject::kContinuationOffset));
     __ SmiUntag(r2);
     __ add(r3, r3, r2);
__ mov(r2, Operand(Smi::FromInt(JSGeneratorObject::kGeneratorExecuting))); __ str(r2, FieldMemOperand(r1, JSGeneratorObject::kContinuationOffset));
     __ Jump(r3);
+
     __ bind(&slow_resume);
   }

Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index fefe1e46844afb06f030832e58452b60eddbfda1..bba1874f3c5afedb4b6ede55e4206cd3e5685973 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -3107,6 +3107,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ResumeJSGeneratorObject) {
   int offset = generator_object->continuation();
   ASSERT(offset > 0);
   frame->set_pc(pc + offset);
+  if (FLAG_enable_ool_constant_pool) {
+    frame->set_constant_pool(
+        generator_object->function()->code()->constant_pool());
+  }
generator_object->set_continuation(JSGeneratorObject::kGeneratorExecuting);

   FixedArray* operand_stack = generator_object->operand_stack();


--
--
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.

Reply via email to