The weekly report for week 26.
After spending way too much time (including a lot of time last week) on trying to make debugging work in Eclipse, went back to debugging in XCode.
Took a look at different stack situations in the debugger in XCode. Saw stuff that I didn’t see by reading the code.
I have a bad feeling that I have misunderstood something about the way tree updates work.
Wrote about CDT.
Wrote more about CDT. Published.
My objective today is to make nsExpatDriver
interruptible so that control returns to the event loop in
mid-parse.
With XML, the content model isn’t built by calling
BuildModel()
. Instead, the model is built as a side
effect tokenization. The way expat is kludged into an architecture
that assumes the peculiarities of Mozilla’s HTML parser isn’t
pretty.
Spent time in debugger in XCode to figure out stuff that I hadn’t figured out by reading the code. LXR and CDT are so clumsy compared to JDT’s code comprehension tools that it is easier to see what happens at run time than to try to analyze static code.
Figured out how to interrupt the parser. Need to figure out
how to make sure a re-entry is scheduled. Looks like I have to hoist
DummyParserRequest
up into nsContentSink
.
I get things done in XCode much faster than in CDT. Looks like I used the wrong tool and lost time doing so.
Got Hixie’s test case to render incrementally!
My ISP sold its Helsinki business and they decided to cut my access today (unannounced) while they move the subscriber lines over. Lost access to test cases, LXR, etc. for a couple of hours.
Had a sudden flash of understanding about timers. Better late than never.
After switching to XCode and after installing more RAM, which allow me to debug often and without the SBBoD, my understanding of the code has improved so rapidly compared to the previous week that last week with CDT feels like a total embarrassment.
All in all, I should have bought more RAM long ago. Right now gdb takes roughly 540 MB of real memory.
Found fallout outside my previous class diagram. Updated the diagram.
Made nsParser
notify the content sink before
starting “tokenization” (see Tuesday above). Tampering with
nsIContentSink
affected a lot of classes I wasn’t
even aware of previously. Fixed the fallout.
Published the updated diagram.
Investigated issues (or non-issues, as it turned out) related
to onload firing and interrupting the parser. Weird behavior with
DummyParserRequest
. Posted to the newsgroup about this.
Even Boris Zbarsky says it’s odd. :-)
Wrote test cases.
Testing, testing, testing.
Fixed a MathML crasher that prevented testing.
Found out that MathML layout breaks if flushed in the middle of a formula. :-(
Simple incremental XHTML works!
Simple incremental SVG works!
Built on x86_64 Ubuntu after many failures. (configure.in
lacks -lXft
)
Made Yellow Screen of Death work again.
Tried to disable scripts upon YSoD. Unsuccessfully.
Incremental rendering works on app launch but breaks subsequently. Need to figure out why that happens.