Jan. 14th, 2013

tim: Tim with short hair, smiling, wearing a black jacket over a white T-shirt (Default)
This was one of those "do work, realize own work is misguided, undo work, collect paycheck" days. When I was working on #3979, I made the mistake of trying to clean up some bad copies as part of the same change. I made the mistake of thinking this would make it "simpler" to finish my change. Instead, I got the code to compile and got a completely mysterious type error when building libcore with stage 1.

So now I'm pulling out all my bad-copy fixes so I can just finish the fix for #3979, commit it, and then get to the bad copies. You'd think I'd have learned in third grade to only work on one thing at a time, but I didn't go to third grade.

I also finished my fix for #3860, and tested it, but have to do some cleanup before I submit a pull request. #3860 was a bug having to do with borrowck and trans (codegen) being inconsistent with each other, so fixing either one could address the problem. trans looked easier to change, so I changed it, but my change resulted in inserting lots more LLVM basic blocks, which turned out to be a performance regression. Changing borrowck really makes more sense since it's just refactoring a static analysis pass and shouldn't have any runtime effect, but I was afraid to touch the borrowck code before. I put aside my fear and implemented a mildly ugly hack (keeping a separate table for trans to use that gives borrowed pointers less-precise lifetimes, meaning trans doesn't have to assume a given statement has a scope attached to it), which worked. The part I have to clean up is making borrowck compute the table of which node IDs refer to statements -- rather than having region inference do it and pass it to borrowck -- which is totally straightforward.


tim: Tim with short hair, smiling, wearing a black jacket over a white T-shirt (Default)
Tim Chevalier

September 2014

 1234 56
78 910 111213
1415 16 17 18 1920
21 22 23242526 27

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags