The getInstance MT issue could be filed as a separate follow-on bug if you want, in which case webrev.1 is good to go...

                ...jim

On 6/10/2016 2:54 PM, Jim Graham wrote:
Thanks Laurent,

Eeek, I hate the type[] syntax for declaring arrays, but I guess I have
to grow with the times.

One last thing I just noticed, RendererState.getInstance doesn't protect
against MT access if multiple threads encounter the null instance case
and all decide to make their own...

            ...jim

On 6/10/2016 4:59 AM, Laurent Bourgès wrote:
Jim,

I fixed the issues you mentioned, see below.

Here is the new webrev:
http://cr.openjdk.java.net/~lbourges/marlin/marlin-8159093.1/

I also fixed the bracket position (int val[] => int[] val) in Helpers,
MarlinRenderingEngine, MarlinTileGenerator classes.

My comments:

2016-06-10 1:48 GMT+02:00 Jim Graham <james.gra...@oracle.com
<mailto:james.gra...@oracle.com>>:


    In RendererStats, lines 276,277 - is it better to convert to an
    array (which is an inherently risky situation for a concurrent
    collection due to the potential for the size changing between the
    array allocation and the toArray), or to iterate the concurrent
    collection directly?  I realize that the toArray() method protects
    against a short array, but is it any better than just directly
    iterating which would deal with the concurrency automatically anyway
    without having to allocate an array. One thing to note, if you
    convert to an array and there is a concurrency issue then the array
    may have a null entry to indicate "this is the end of the list", but
    you don't look for that null entry.  A simple "if rdrCtx==null
    break;" statement would be enough to deal with that case.


I agree and adopted the simplest solution: iterate directly on the
concurrent queue.


    MarlinConst.java - you added DO_FLUSH_STATS, but I don't see it
    getting used anywhere...?


Exact; I removed it as it will be only used in the next patch.


    MarlinRenderingEngine.java - it looks like you eliminated all uses
    of mon_npi_currentSegment, but it is still created in
RendererStats...?


mon_npi_currentSegment removed in RendererStats.


    Histogram.java - 2016 copyright


Fixed.

Regards,
Laurent

Reply via email to