Review needed for 7132879 to address the findbug errors in CachedRowSetImpl, SerialStruct, BaseRow, SerialInputImpl, SerialOutputImpl

Lance Andersen - Oracle Lance.Andersen at oracle.com
Fri Jan 27 00:03:37 UTC 2012


Hi Remi,

thanks for the additional info.  Made the extra changehttp://cr.openjdk.java.net/~lancea/7133815/webrev.02, so I hope we are good to go now.

Best
Lance
On Jan 26, 2012, at 6:47 PM, Rémi Forax wrote:

> On 01/27/2012 12:12 AM, Lance Andersen - Oracle wrote:
>> Hi Remi,
>> 
>> Thanks for the feedback,   I made the suggested changes http://cr.openjdk.java.net/~lancea/7133815/webrev.01/ and re-ran the rowset tck .
>> 
>> Best
>> Lance
> 
> Lance,
> sorry to not have been crystal clear in my previous email,
> I've forgotten to mention that because the field is stored in a local variable
> to do the nullcheck you can reuse the same local variable instead of
> reloading the value from the field which is a good code practice.
> 
> So instead of
> 
> int[] keyColumns  = this.keyCols;
> return (keyColumns == null) ? null : Arrays.copyOf(keyCols, keyCols.length);
> 
> the code should be
> 
> int[] keyColumns  = this.keyCols;
> return (keyColumns == null) ? null : Arrays.copyOf(keyColumns,keyColumns.length);
> 
> 
> Now, this is not strictly needed for the codes of the changeset because the JIT
> can easily prove in these codes that the field will not be changed between
> the first load and the subsequent accesses as arguments of Arrays.copyOf.
> 
> Anyway, as i said, it's a good practice to avoid to do several getfields
> if the value is not supposed to change in between.
> 
> Rémi
> 
> PS: as a bonus, using local variables reduces the size of the generated bytecodes,
> aload_1 takes one byte and getfield takes three bytes :)
> 
>> On Jan 26, 2012, at 5:21 PM, Rémi Forax wrote:
>> 
>>> On 01/26/2012 10:46 PM, Lance Andersen - Oracle wrote:
>>>> Hi,
>>>> 
>>>> Looking for a reviewer for http://cr.openjdk.java.net/~lancea/7133815/webrev.00/
>>>> 
>>>>  this is a small change to address 2 findbug errors.  The findbug issues being addressed:
>>>> 
>>>> May expose internal representation by returning reference to mutable object
>>>> 
>>>> and
>>>> 
>>>> Load of known null value
>>>> 
>>>> 
>>>> For  CachedRowSetImpl, SerialStruct, BaseRow, SerialInputImpl, SerialOutputImpl
>>> Hi Lance,
>>> I think it's better to use array.clone() or
>>> Arrays.copyOf(array, array.length) which is a little faster.
>>> 
>>> so the code of CachedRowSetImpl should be:
>>> 
>>> int[]keyCols  = this.keyCols;
>>> return (keyCols == null)? null: Arrays.copyOf(keyCols, keyCols.length);
>>> 
>>> otherwise the code of SQLOutputImpl is ok for me.
>>> 
>>> cheers,
>>> Rémi
>>> 
>> 
>> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
>> Oracle Java Engineering
>> 1 Network Drive
>> Burlington, MA 01803
>> Lance.Andersen at oracle.com
>> 
> 


Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering 
1 Network Drive 
Burlington, MA 01803
Lance.Andersen at oracle.com




More information about the core-libs-dev mailing list