On 5/28/13 1:05 PM, Lee Spector wrote:
On May 28, 2013, at 2:40 PM, Ben Mabey wrote:
The flag is a system property: 
"-Dclojure.compiler.disable-locals-clearing=true".  So you can add that string 
to your project.clj's :jvm-opts if you are using lein. This will, of course, slow down 
your program but when I've used it in the past it hasn't made it unusable for development.
Thanks for the project.clj specifics Ben.

It still isn't clear to me if/how I could then look at the locals after hitting 
an unexpected exception. Perhaps Cedric's strategy described a couple of 
messages back (which I didn't fully understand) would work here? But from the 
lack of followup to this post 
http://comments.gmane.org/gmane.comp.java.clojure.swank-clojure.devel/106 -- I 
wonder if it still won't work when hitting unexpected exceptions.

To do this I have been using nrepl-ritz's |'M-x nrepl-ritz-break-on-exception'. If you are using emacs and haven't looked into ritz I would highly encourage taking the time to do so. It is painless to install these days and you can watch a nice presentation on it (https://github.com/pallet/ritz/tree/develop/nrepl#additional-resources). If you aren't using emacs then I don't have any suggestions for you. :(
|

Also, I guess I don't understand what locals clearing is in this context, but why would 
this slow things down? If it's just preventing the clearing of locals when handling an 
exception then I'd expect it to have no effect except during an exception... Do you mean 
that it'll slow down code that does a lot of "exception" handling in 
circumstances that aren't really exceptional? Or will this flag do something very 
different than what I'm thinking, like causing all locals everywhere to be retained 
forever? That'd cause problems worse than just slowdowns, I would think.
It would slow things down in that more things wouldn't be allowed to be GCed as soon as they would be with locals clearing (the usual culprit being lazy seqs). Unfortunately, I don't know enough of the details of how and when locals clearing works to give you more details. So I'd love to hear a better explanation from someone who knows.

-Ben

--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to