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.