View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0000028 | mercury | Bug | public | 2007-11-15 12:28 | 2007-11-19 17:37 | ||||
Reporter | obo | ||||||||
Assigned To | zs | ||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0000028: Unexpected: adjust_livevals | ||||||||
Description | Hi, I've come across a bug in tail recursion optimization (my guess) if foreign code is involved. Typing 'make' in the testcase provided, mmc dies with this message: Uncaught Mercury exception: Software Error: jumpopt.m: Unexpected: adjust_livevals: BetweenLivevals and PrevLivevals differ Stack dump not available in this grade. If you explicitly prevent tail recursion by uncommenting the line: % io.write_string("", !IO), % prevent tail recursion at the end of testxmlreader.m, the code compiles, runs (and wastes quite some time, performance is 10x worse than same xmlreader demo implemented in C). I'm not sure if I can attribute all the performance loss to stack management and the extra boxing and unboxing. If I fake all the calls to xmlreader, as in: testxmlreader.m-no-C-code (to replace testxmlreader.m) the jumpopt exception goes away. Thanks, Ondrej. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files |
|
Issue History | |||
Date Modified | Username | Field | Change |
---|---|---|---|
2007-11-15 12:28 | obo | New Issue | |
2007-11-15 12:28 | obo | File Added: bug.tgz | |
2007-11-15 14:20 | zs | Status | new => assigned |
2007-11-15 14:20 | zs | Assigned To | => zs |
2007-11-19 17:37 | zs | Status | assigned => resolved |
2007-11-19 17:37 | zs | Resolution | open => fixed |
2007-11-19 17:37 | zs | Note Added: 0000059 |