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.