Thanks for the patch.
What does this add to what is already there with the stop instruction? I
have
been doing lots of debugging of the generated arm code on the simulator
using
the stop instruction. Here is a session after adding a stop("inlined load")
call
just before an inlined load:
Simulator hit inlined load
0xf53880f4 e3110001 tst r1, #1
sim> disasm
0xf53880f4 e3110001 tst r1, #1
0xf53880f8 0a000089 beq +556 -> 0xf5388324
0xf53880fc e5117001 ldr r7, [r1, #-1]
0xf5388100 e59f92a8 ldr r9, [pc, #+680]
0xf5388104 e1570009 cmp r7, r9
0xf5388108 1a000085 bne +540 -> 0xf5388324
0xf538810c e5911000 ldr r1, [r1, #+0]
0xf5388110 e1807001 orr r7, r0, r1
0xf5388114 e3170001 tst r7, #1
0xf5388118 0a000003 beq +20 -> 0xf538812c
sim> p r1
r1: 0xf600e229 -167714263
sim> po r1
r1:
0xf600e229: [JSObject]
- map = 0xf535cb81
- prototype = 0xf600dbd1
{
#length: 0xf539ed51 <Proxy> (callback)
0: 0xf539fdf1 <String[5]: isNaN>
1: 0xf53c0a01 <JS Function GlobalIsNaN>
2: 0xf539fe05 <String[8]: isFinite>
3: 0xf53c0a21 <JS Function GlobalIsFinite>
4: 0xf539fe19 <String[8]: parseInt>
5: 0xf53c0a41 <JS Function GlobalParseInt>
6: 0xf539fe2d <String[10]: parseFloat>
7: 0xf53c0a61 <JS Function GlobalParseFloat>
8: 0xf539c2cd <String[4]: eval>
9: 0xf53c0a81 <JS Function GlobalEval>
10: 0xf539fe45 <String[10]: execScript>
11: 0xf53c0aa1 <JS Function GlobalExecScript>
}
sim> stepi
0xf53880f8 0a000089 beq +556 -> 0xf5388324
sim> stepi
0xf53880fc e5117001 ldr r7, [r1, #-1]
sim> c
Simulator hit inlined load
0xf53880f4 e3110001 tst r1, #1
sim>
http://codereview.chromium.org/3440028/show
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev