mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 09:23:44 +00:00
On some 32-bit architectures, we were violating memory alignment requirements for double-precision floats, in cell fields and on det and nondet stacks. Bug #299. We now only take the address of a double field when it occurs on an aligned memory address, i.e. when it starts at an even word offset from the start of a cell (this assumption is incompatible with term-size profiling which adds a hidden word before the start of the cell). For the det stack, we can round up allocations to keep the stack pointer double-aligned, then allocate slots for doubles at even word offsets from the stack pointer. It would be trickier for the nondet stack. Multiple frame types exist on the nondet stack, and the different frame types are identified by their sizes: 3-word and 4-word temporary frames, and 5/6+ word ordinary frames. Rather than rounding up frame sizes to even numbers of words, we would probably want to dynamically pad ordinary frame allocations, such that any doubles in the frame will be at aligned addresses. However, in this change, we simply store box floats on the nondet stack. compiler/globals.m: Add predicate which returns whether double-width floats should be stored on the det stack. compiler/handle_options.m: Disable double-word fields in term-size profiling grades. compiler/code_info.m: Add a predicate to round up det stack frame sizes. Remember the width of floats stored on the det stack in exprn_opts. compiler/hlds_llds.m: compiler/llds.m: compiler/stack_layout.m: Delete the possibility of double-width slots on the nondet stack. Remember det_stack_float_width in exprn_opts. compiler/llds_out_data.m: Add wrapper macro `MR_dword_ptr' when taking the address of a double. Only take the address of doubles on the det stack. compiler/llds_out_instr.m: compiler/llds_out_util.m: Only assign a double field in a single C statement when it is aligned. Assert that the stack pointer is incremented by an even number, if necessary. compiler/mlds_to_c.m: Only take the address of doubles when aligned. compiler/middle_rec.m: compiler/proc_gen.m: Round up det stack frame allocations to even numbers of words when necessary. compiler/stack_alloc.m: Add padding as required so that double-word variables will be allocated at even-word offsets from the stack pointer. compiler/opt_debug.m: compiler/par_conj_gen.m: Conform to changes. runtime/mercury_conf_param.h: runtime/mercury_float.h: Add macro `MR_dword_ptr' to be wrapped around instances where the address of a double is taken. When `MR_DEBUG_DWORD_ALIGNMENT' is defined (and using gcc or clang) the address is checked to be properly aligned. Almost all our development is done on x86 or x86-64 architecture which do not have strict memory alignment requirements, making violations hard to check otherwise. runtime/mercury_deconstruct.c: runtime/mercury_layout_util.c: Use `MR_float_from_dword' over `MR_float_from_dword_ptr' as the former does not require dword alignment. Related fix: looking up `double' variables on the nondet stack used the stack pointer for the det stack instead. Fix it, though the code now won't be executed after this change. tests/debugger/nondet_stack.exp5: Add new expected output. This is the same as nondet_stack.exp except that det stack frames have been rounded up.
862 lines
20 KiB
Plaintext
862 lines
20 KiB
Plaintext
E1: C1 CALL pred nondet_stack.main/2-0 (cc_multi) nondet_stack.m:NNNN
|
|
mdb> echo on
|
|
Command echo enabled.
|
|
mdb> context none
|
|
Contexts will not be printed.
|
|
mdb> register --quiet
|
|
mdb> goto 22
|
|
E2: C2 SWTC pred nondet_stack.qperm/2-0 (nondet) s2-2;
|
|
mdb> nondet_stack -f 3
|
|
non 135: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 135
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
non 122: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 116
|
|
non 119: temp
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
<more stack frames snipped>
|
|
mdb> nondet_stack
|
|
non 135: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 135
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
non 122: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 116
|
|
non 119: temp
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
non 116: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
non 103: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 103
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 90: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 87: temp
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
non 84: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 71: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 39: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
non 26: ordinary, 12 words
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> stack_regs
|
|
sp = det 14
|
|
curfr = non 135
|
|
maxfr = non 135
|
|
mdb> nondet_stack -d
|
|
non 135: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;>
|
|
redoip: unnamed label
|
|
redofr: non 135
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
on main nondet branch non 135
|
|
HeadVar__1 [4, 5]
|
|
TypeInfo_for_T int
|
|
non 122: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 116
|
|
non 119: temp
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
non 116: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
top frame of a nondet side branch non 116
|
|
HeadVar__2 [3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 103: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 103
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
on main nondet branch non 135
|
|
HeadVar__1 [3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 3
|
|
Z [4, 5]
|
|
non 90: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 87: temp
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
non 84: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
top frame of a nondet side branch non 84
|
|
HeadVar__2 [2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
on main nondet branch non 135
|
|
HeadVar__1 [2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 2
|
|
Z [3, 4, 5]
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
top frame of a nondet side branch non 52
|
|
HeadVar__2 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
on main nondet branch non 135
|
|
HeadVar__1 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 1
|
|
Z [2, 3, 4, 5]
|
|
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c2;>
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
on main nondet branch non 135
|
|
Data (arg 1) [1, 2, 3, 4, 5]
|
|
TypeCtorInfo_5 int
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> goto 39
|
|
E3: C3 CALL pred nondet_stack.safe/1-0 (semidet)
|
|
mdb> nondet_stack
|
|
non 217: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 39
|
|
non 214: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 71
|
|
non 211: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 103
|
|
non 208: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 135
|
|
non 205: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 167
|
|
non 202: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 199
|
|
non 199: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 199
|
|
succip: unnamed label
|
|
succfr: non 167
|
|
non 186: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 180
|
|
non 183: temp
|
|
redoip: unnamed label
|
|
redofr: non 180
|
|
non 180: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 180
|
|
succip: unnamed label
|
|
succfr: non 167
|
|
non 167: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 167
|
|
succip: unnamed label
|
|
succfr: non 135
|
|
non 154: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 148
|
|
non 151: temp
|
|
redoip: unnamed label
|
|
redofr: non 148
|
|
non 148: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 148
|
|
succip: unnamed label
|
|
succfr: non 135
|
|
non 135: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 135
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
non 122: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 116
|
|
non 119: temp
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
non 116: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
non 103: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 103
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 90: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 87: temp
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
non 84: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 71: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 39: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
non 26: ordinary, 12 words
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> stack_regs
|
|
sp = det 22
|
|
curfr = non 26
|
|
maxfr = non 217
|
|
mdb> nondet_stack -d
|
|
non 217: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 39
|
|
non 214: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 71
|
|
non 211: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 103
|
|
non 208: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 135
|
|
non 205: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 167
|
|
non 202: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 199
|
|
non 199: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 199
|
|
succip: unnamed label
|
|
succfr: non 167
|
|
top frame of a nondet side branch non 199
|
|
HeadVar__1 []
|
|
TypeInfo_for_T int
|
|
non 186: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 180
|
|
non 183: temp
|
|
redoip: unnamed label
|
|
redofr: non 180
|
|
non 180: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 180
|
|
succip: unnamed label
|
|
succfr: non 167
|
|
top frame of a nondet side branch non 180
|
|
HeadVar__2 [5]
|
|
TypeInfo_for_T int
|
|
non 167: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 167
|
|
succip: unnamed label
|
|
succfr: non 135
|
|
internal frame on nondet side branch non 199
|
|
HeadVar__1 [5]
|
|
TypeInfo_for_T int
|
|
U 5
|
|
Z []
|
|
non 154: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 148
|
|
non 151: temp
|
|
redoip: unnamed label
|
|
redofr: non 148
|
|
non 148: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 148
|
|
succip: unnamed label
|
|
succfr: non 135
|
|
top frame of a nondet side branch non 148
|
|
HeadVar__2 [4, 5]
|
|
TypeInfo_for_T int
|
|
non 135: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 135
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
internal frame on nondet side branch non 199
|
|
HeadVar__1 [4, 5]
|
|
TypeInfo_for_T int
|
|
U 4
|
|
Z [5]
|
|
non 122: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 116
|
|
non 119: temp
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
non 116: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 116
|
|
succip: unnamed label
|
|
succfr: non 103
|
|
top frame of a nondet side branch non 116
|
|
HeadVar__2 [3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 103: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 103
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
internal frame on nondet side branch non 199
|
|
HeadVar__1 [3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 3
|
|
Z [4, 5]
|
|
non 90: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 87: temp
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
non 84: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
top frame of a nondet side branch non 84
|
|
HeadVar__2 [2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
internal frame on nondet side branch non 199
|
|
HeadVar__1 [2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 2
|
|
Z [3, 4, 5]
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
top frame of a nondet side branch non 52
|
|
HeadVar__2 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
internal frame on nondet side branch non 199
|
|
HeadVar__1 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 1
|
|
Z [2, 3, 4, 5]
|
|
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c3;>
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
on main nondet branch non 26
|
|
Data (arg 1) [1, 2, 3, 4, 5]
|
|
Out (arg 2) [1, 2, 3, 4, 5]
|
|
TypeCtorInfo_5 int
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> break nondet_stack__test
|
|
0: + stop interface pred nondet_stack.test/2-0 (nondet)
|
|
mdb> continue
|
|
E4: C4 CALL pred nondet_stack.test/2-0 (nondet)
|
|
mdb> nondet_stack
|
|
non 284: ordinary, 12 words
|
|
redoip: unnamed label
|
|
redofr: non 284
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
non 272: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 268: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 26
|
|
non 265: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 39
|
|
non 262: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 71
|
|
non 259: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 119
|
|
non 256: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 183
|
|
non 253: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 215
|
|
non 250: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 247
|
|
non 247: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 247
|
|
succip: unnamed label
|
|
succfr: non 215
|
|
non 234: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 228
|
|
non 231: temp
|
|
redoip: unnamed label
|
|
redofr: non 228
|
|
non 228: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 228
|
|
succip: unnamed label
|
|
succfr: non 215
|
|
non 215: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 215
|
|
succip: unnamed label
|
|
succfr: non 183
|
|
non 202: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 196
|
|
non 199: temp
|
|
redoip: unnamed label
|
|
redofr: non 196
|
|
non 196: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 196
|
|
succip: unnamed label
|
|
succfr: non 183
|
|
non 183: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 183
|
|
succip: unnamed label
|
|
succfr: non 119
|
|
non 170: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 132
|
|
non 167: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 145
|
|
non 164: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 158
|
|
non 161: temp
|
|
redoip: unnamed label
|
|
redofr: non 158
|
|
non 158: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 158
|
|
succip: unnamed label
|
|
succfr: non 145
|
|
non 145: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 145
|
|
succip: unnamed label
|
|
succfr: non 132
|
|
non 132: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 132
|
|
succip: unnamed label
|
|
succfr: non 119
|
|
non 119: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 119
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 106: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 103: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 97
|
|
non 100: temp
|
|
redoip: unnamed label
|
|
redofr: non 97
|
|
non 97: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 97
|
|
succip: unnamed label
|
|
succfr: non 84
|
|
non 84: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
non 71: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
non 39: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
non 26: ordinary, 12 words
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> stack_regs
|
|
sp = det 14
|
|
curfr = non 284
|
|
maxfr = non 284
|
|
mdb> nondet_stack -d
|
|
non 284: ordinary, 12 words, pred nondet_stack.test/2-0 (nondet) <>
|
|
redoip: unnamed label
|
|
redofr: non 284
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
on main nondet branch non 284
|
|
HeadVar__1 [1, 3, 5, 2, 4]
|
|
non 272: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 268: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 26
|
|
non 265: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 39
|
|
non 262: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 71
|
|
non 259: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 119
|
|
non 256: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 183
|
|
non 253: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 215
|
|
non 250: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 247
|
|
non 247: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 247
|
|
succip: unnamed label
|
|
succfr: non 215
|
|
top frame of a nondet side branch non 247
|
|
HeadVar__1 []
|
|
TypeInfo_for_T int
|
|
non 234: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 228
|
|
non 231: temp
|
|
redoip: unnamed label
|
|
redofr: non 228
|
|
non 228: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 228
|
|
succip: unnamed label
|
|
succfr: non 215
|
|
top frame of a nondet side branch non 228
|
|
HeadVar__2 [4]
|
|
TypeInfo_for_T int
|
|
non 215: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 215
|
|
succip: unnamed label
|
|
succfr: non 183
|
|
internal frame on nondet side branch non 247
|
|
HeadVar__1 [4]
|
|
TypeInfo_for_T int
|
|
U 4
|
|
Z []
|
|
non 202: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 196
|
|
non 199: temp
|
|
redoip: unnamed label
|
|
redofr: non 196
|
|
non 196: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 196
|
|
succip: unnamed label
|
|
succfr: non 183
|
|
top frame of a nondet side branch non 196
|
|
HeadVar__2 [2, 4]
|
|
TypeInfo_for_T int
|
|
non 183: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 183
|
|
succip: unnamed label
|
|
succfr: non 119
|
|
internal frame on nondet side branch non 247
|
|
HeadVar__1 [2, 4]
|
|
TypeInfo_for_T int
|
|
U 2
|
|
Z [4]
|
|
non 170: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 132
|
|
non 167: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 145
|
|
non 164: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 158
|
|
non 161: temp
|
|
redoip: unnamed label
|
|
redofr: non 158
|
|
non 158: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 158
|
|
succip: unnamed label
|
|
succfr: non 145
|
|
top frame of a nondet side branch non 158
|
|
HeadVar__2 [5]
|
|
TypeInfo_for_T int
|
|
non 145: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
|
|
redoip: unnamed label
|
|
redofr: non 145
|
|
succip: unnamed label
|
|
succfr: non 132
|
|
internal frame on nondet side branch non 158
|
|
HeadVar__2 [4, 5]
|
|
A 4
|
|
TypeInfo_for_T int
|
|
Z [5]
|
|
non 132: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
|
|
redoip: unnamed label
|
|
redofr: non 132
|
|
succip: unnamed label
|
|
succfr: non 119
|
|
internal frame on nondet side branch non 158
|
|
HeadVar__2 [2, 4, 5]
|
|
A 2
|
|
TypeInfo_for_T int
|
|
Z [4, 5]
|
|
non 119: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 119
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
internal frame on nondet side branch non 247
|
|
HeadVar__1 [2, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 5
|
|
Z [2, 4]
|
|
non 106: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 84
|
|
non 103: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 97
|
|
non 100: temp
|
|
redoip: unnamed label
|
|
redofr: non 97
|
|
non 97: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 97
|
|
succip: unnamed label
|
|
succfr: non 84
|
|
top frame of a nondet side branch non 97
|
|
HeadVar__2 [3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 84: ordinary, 13 words, pred nondet_stack.qdelete/3-0 (nondet) <c2;d2;c3;>
|
|
redoip: unnamed label
|
|
redofr: non 84
|
|
succip: unnamed label
|
|
succfr: non 71
|
|
internal frame on nondet side branch non 97
|
|
HeadVar__2 [2, 3, 4, 5]
|
|
A 2
|
|
TypeInfo_for_T int
|
|
Z [3, 4, 5]
|
|
non 71: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 71
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
internal frame on nondet side branch non 247
|
|
HeadVar__1 [2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 3
|
|
Z [2, 4, 5]
|
|
non 58: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 52
|
|
non 55: temp
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
non 52: ordinary, 13 words
|
|
redoip: unnamed label
|
|
redofr: non 52
|
|
succip: unnamed label
|
|
succfr: non 39
|
|
top frame of a nondet side branch non 52
|
|
HeadVar__2 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
non 39: ordinary, 13 words, pred nondet_stack.qperm/2-0 (nondet) <s2-2;c2;>
|
|
redoip: unnamed label
|
|
redofr: non 39
|
|
succip: unnamed label
|
|
succfr: non 26
|
|
internal frame on nondet side branch non 247
|
|
HeadVar__1 [1, 2, 3, 4, 5]
|
|
TypeInfo_for_T int
|
|
U 1
|
|
Z [2, 3, 4, 5]
|
|
non 26: ordinary, 12 words, pred nondet_stack.queen/2-0 (nondet) <c2;>
|
|
redoip: unnamed label
|
|
redofr: non 26
|
|
succip: unnamed label
|
|
succfr: non 10
|
|
internal frame on nondet side branch non 247
|
|
Data (arg 1) [1, 2, 3, 4, 5]
|
|
TypeCtorInfo_5 int
|
|
non 14: temp
|
|
redoip: label UNKNOWN
|
|
redofr: non 10
|
|
detfr: det 14
|
|
non 10: ordinary, 6 words
|
|
redoip: label global_fail
|
|
redofr: non 10
|
|
succip: label wrapper_not_reached
|
|
succfr: non 4
|
|
mdb> continue -S
|
|
[2, 5, 3, 1, 4]
|