| Index: src/arm/full-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/full-codegen-arm.cc (revision 11662)
|
| +++ src/arm/full-codegen-arm.cc (working copy)
|
| @@ -73,9 +73,6 @@
|
| Assembler::BlockConstPoolScope block_const_pool(masm_);
|
| __ bind(&patch_site_);
|
| __ cmp(reg, Operand(reg));
|
| - // Don't use b(al, ...) as that might emit the constant pool right after the
|
| - // branch. After patching when the branch is no longer unconditional
|
| - // execution can continue into the constant pool.
|
| __ b(eq, target); // Always taken before patched.
|
| }
|
|
|
| @@ -90,6 +87,8 @@
|
| }
|
|
|
| void EmitPatchInfo() {
|
| + // Block literal pool emission whilst recording patch site information.
|
| + Assembler::BlockConstPoolScope block_const_pool(masm_);
|
| if (patch_site_.is_bound()) {
|
| int delta_to_patch_site = masm_->InstructionsGeneratedSince(&patch_site_);
|
| Register reg;
|
| @@ -344,6 +343,8 @@
|
| void FullCodeGenerator::EmitStackCheck(IterationStatement* stmt,
|
| Label* back_edge_target) {
|
| Comment cmnt(masm_, "[ Stack check");
|
| + // Block literal pools whilst emitting stack check code.
|
| + Assembler::BlockConstPoolScope block_const_pool(masm_);
|
| Label ok;
|
|
|
| if (FLAG_count_based_interrupts) {
|
|
|