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

Reply via email to