RFR(XS) 8008811: [parfait] Null pointer deference in hotspot/src/share/vm/opto/loopopts.cpp

Christian Thalinger christian.thalinger at oracle.com
Tue Mar 19 10:42:58 PDT 2013


On Mar 19, 2013, at 10:15 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> On 3/19/13 9:55 AM, Christian Thalinger wrote:
>> 
>> On Mar 19, 2013, at 7:39 AM, Morris Meyer <morris.meyer at oracle.com> wrote:
>> 
>>> Vladimir - thanks for the review.  Here is the updated webrev.  These changes have been through JPRT.
>>> 
>>>        --mm
>>> 
>>> WEBREV - http://cr.openjdk.java.net/~morris/8008811.02
>> 
>> src/share/vm/opto/loopnode.hpp:
>> 
>> +  bool has_node( Node* n ) const {
>> +    guarantee(n != NULL, "No Node.");
>> +    return _nodes[n->_idx] != NULL;
>> +  }
>> 
>> Do we want to check the index here as well?
> 
> No need in this case:
> 
>  Node *operator[] ( uint i ) const // Lookup, or NULL for not mapped
>  { return (i<_max) ? _nodes[i] : (Node*)NULL; }

Ahh!  The goodness of operator overloading.

-- Chris

> 
> Morris, the changes are good.
> 
> Thanks,
> Vladimir
> 
>> 
>> -- Chris
>> 
>>> 
>>> 
>>> On 3/5/13 6:07 PM, Vladimir Kozlov wrote:
>>>> In loopnode.hpp reverse check to != NULL so that real code will be first.
>>>> 
>>>> In loopnode.cpp check dp != NULL because dp->as_Proj() is reference through dp. as_Proj() is cast.
>>>> 
>>>> bolphi check should be before replace_node() call.
>>>> 
>>>> I don't understand why you need next check:
>>>> if (reg == NULL) return NULL;
>>>> 
>>>> insert_region_before_proj() returns "reg = new (C)RegionNode(2)" so it can't be NULL.
>>>> 
>>>> Thanks,
>>>> Vladimir
>>>> 
>>>> On 3/5/13 2:22 PM, Morris Meyer wrote:
>>>>> Folks,
>>>>> 
>>>>> Could I get a review for this parfait issue? This has been through JPRT.
>>>>> 
>>>>> Thanks much,
>>>>> 
>>>>>         --mm
>>>>> 
>>>>> WEBREV - http://cr.openjdk.java.net/~morris/8008811.01
>>>>> BUG - https://jbs.oracle.com/bugs/browse/JDK-8008811
>>> 
>> 



More information about the hotspot-compiler-dev mailing list