LGTM with comments.

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc
File src/arm/deoptimizer-arm.cc (right):

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode129
src/arm/deoptimizer-arm.cc:129: //  2a ?? ?? ??       bcs ok
?? ?? ?? -> 00 00 01, the restoring puts in 1 here.

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode132
src/arm/deoptimizer-arm.cc:132: ASSERT(Memory::uint32_at(pc_after - 4)
== 0xe12fff3c);
0xe12fff3c -> al | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | BLX | ip.code()

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode132
src/arm/deoptimizer-arm.cc:132: ASSERT(Memory::uint32_at(pc_after - 4)
== 0xe12fff3c);
4 -> kInstrSize

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode133
src/arm/deoptimizer-arm.cc:133: ASSERT(Memory::uint8_at(pc_after - 5) ==
0xe5);
Use Assembler::IsLdrPcImmediateOffset() to check this. Maybe add
Assembler::IsLdrPcImmediateOffset() which also takes a register and
checks that it is ldr ip, [...

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode145
src/arm/deoptimizer-arm.cc:145: Memory::uint32_at(pc_after - 12) =
0xe1a00000;
I think you should be able to use the code patcher here:

CodePatcher patcher(pc_after - 3 * kInstrSize, 1)
patcher.masm()->nop();

if not

0xe1a00000 -> al | MOV

http://codereview.chromium.org/6410029/diff/2003/src/arm/deoptimizer-arm.cc#newcode167
src/arm/deoptimizer-arm.cc:167: Memory::uint32_at(pc_after - 12) =
0x2a000001;
Use CodePatcher if possible, or at least:

0x2a000001 -> cs | B27 | B25 | 1

http://codereview.chromium.org/6410029/diff/2003/src/deoptimizer.cc
File src/deoptimizer.cc (right):

http://codereview.chromium.org/6410029/diff/2003/src/deoptimizer.cc#newcode837
src/deoptimizer.cc:837: uint32_t length = last_site - first_site +
patch_size();
If you use the CodePatcher the i-cache flushing is automatic.

http://codereview.chromium.org/6410029/diff/2003/src/deoptimizer.cc#newcode867
src/deoptimizer.cc:867: uint32_t length = last_site - first_site +
patch_size();
Ditto.

http://codereview.chromium.org/6410029/

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to