Is J's reference counting implementation contained within in m.h and m.c? I've followed some of the discussion regarding refcounting and its tradeoffs in the Kona language [1], and would like to grasp how it's done in J.
Thanks, Alex [1]: https://github.com/kevinlawler/kona/issues/43 On Wed, Jul 27, 2016 at 1:38 PM, Roger Hui <rogerhui.can...@gmail.com> wrote: > Reference counts are not done very well in what you call JE. That is the > simple and actual reason. If you know a better way and it pass rigorous > tests then I urge you to proceed. > > > On Wed, Jul 27, 2016 at 10:33 AM, Henry Rich <henryhr...@gmail.com> wrote: > > > The JE spends a lot of time twiddling usecounts and I am trying to > > understand why. > > > > One especially perplexing case is in jtbox(), which handles (<y). This > > short program does not do PROLOG/EPILOG. In the case of boxing with > > infinite rank, the code GA()s the result, Performs rat(w) on the input, > > stores w into the result, and returns. > > > > rat(w)??? Why? > > > > rat(w) is {ra(w); tpush(w)} > > > > But there's no EPILOG. Adding one to the usecount followed by later > > taking the 1 away at tpop() time isn't going to change when w is freed. > > Why the rat()? > > > > That's my question. > > > > My guess is that AC(w)>1 is used as a flag into the partitioning adverbs. > > Those adverbs seem to check to see whether AC(w) has become > 1, and if > so, > > they avoid reusing the same buffer area. The rat() here means 'the > result > > contains a reference to the input & the input must therefore not be > reused.' > > > > Acting on that guess, I changed jtbox to use rat1() instead of rat(), > with > > rat1() defined to twiddle the top-level usecount only. All testcases > > passed with this change. > > > > But you don't test programs to correctness, you analyze them to > > correctness. That's tough with something as large as the JE. Does anyone > > know of a DIFFERENT reason for the use of rat() in these and similar > verbs? > > > > Henry > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm