RFR: 8010992: Remove calls to global ::operator new[] and new

David Holmes david.holmes at oracle.com
Mon Apr 15 06:07:30 UTC 2013


Hi Yumin,

On 13/04/2013 7:07 AM, Yumin Qi wrote:
> After take feedback and modify, new webrev
>
> http://cr.openjdk.java.net/~minqi/8010992/webrev1
> <http://cr.openjdk.java.net/%7Eminqi/8010992/webrev1>

I still find the HandleMark changes unsatisfactory. The CHeap allocated 
HandleMark in the Thread() constructor is a bit of a hack. HandleMarks 
should be stack-allocated. Plus we seem to leak that CHeap allocated 
HandleMark as we don't keep any pointer to it! I think this needs to be 
re-visited, but as a separate CR.

---

allocation.hpp:

If  NEW_C_HEAP_OBJECT_ARRAY invokes the ctor for each array element 
don't we need a new FREE_C_HEAP_OBJECT_ARRAY to invoke the dtor's before 
deallocating ?

---

src/share/vm/utilities/quickSort.cpp

Why does only Solaris need the allocation headers included ?? I would 
expect all platforms to need to the same headers here.

Thanks,
David

>
>
> Thanks
> Yumin
>
> On 4/12/2013 10:45 AM, Zhengyu Gu wrote:
>> .
>>>> cardTableModRefBS.cpp
>>>>   #87 and #88, why set_start(NULL) are needed?
>>>>
>>> This is default constructor does, here just copy that code. Since we
>>> did not call constructor by using this MACRO. It is a _ValueObj,
>>> should not call new, but I think we can use NEW_C_HEAP_OBJ3, which
>>> will call ctors.
>> NEW_C_HEAP_OBJECT_ARRAY macro does invoke ctor ... that is what
>> allocation.hpp #618 does.
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>>>> carTableRS.cpp
>>>>   #70, why it is commented out? If so, you don't need the dstor
>>>>
>>>>
>>> See reply to David H.
>>>
>>>
>>> Thanks
>>> Yumin
>>>> -Zhengyu
>>>>
>>>>
>>>>
>>>>
>>>> On 4/12/2013 2:12 AM, Yumin Qi wrote:
>>>>> Hi,
>>>>>
>>>>>   Can I have your inputs for the fix?
>>>>>   webrev:
>>>>>
>>>>>  http://cr.openjdk.java.net/~minqi/8010992/webrev/
>>>>> <http://cr.openjdk.java.net/%7Eminqi/8010992/webrev/>
>>>>>
>>>>>   Bug:  8010992: Remove calls to global ::operator new[] and new
>>>>> https://jbs.oracle.com/bugs/browse/JDK-8010992
>>>>>
>>>>> Problem description:  Remove the usage of global operator ::new[]
>>>>> and ::new. In hotspot debug build, disable the usage of global
>>>>> new[] and new.  Hotspot does not throw c++ exceptions, but it
>>>>> cannot prevent third party code to catch such exceptions.  By
>>>>> disabling use of global operator new[] and new, we constrain the
>>>>> exception disposal within hotspot. C++ classes (as same for
>>>>> structs) in hotspot have to either extends from CHeapObj or
>>>>> ResourceObj unless they are stack objects or values which have to
>>>>> be from StackObj or _ValueObj respectively.  Or they have to
>>>>> implement their own operator new[] or new.
>>>>>
>>>>> Thanks
>>>>> Yumin
>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-gc-dev mailing list