On 6/29/16 01:45, Jesper Wilhelmsson wrote:
29 juni 2016 kl. 04:30 skrev David Holmes <[email protected]>:
On 29/06/2016 12:09 PM, [email protected] wrote:
On 6/28/16 18:44, David Holmes wrote:
On 29/06/2016 7:09 AM, [email protected] wrote:
On 6/28/16 14:02, Daniel D. Daugherty wrote:
On 6/28/16 2:11 PM, [email protected] wrote:
On 6/28/16 11:19, Daniel D. Daugherty wrote:


        I'll have to check the upper layers of this API, but if an
        agent can pass a bad 'class_loader' parameter and get this
        assert() to fire, then that's not good. Hopefully a bad
        'class_loader' parameter is caught at a higher layer.
Not sure, what do you mean.
Do you mean the generated JVMTI upper layer or the
JvmtiEnv::GetNamedModule?
Probably, the generated code.
I did mean the generated layer.
Ok, thanks.


        Update: Yes, passing a non-NULL jobject as the class_loader
parameter
            when the jobject does not refer to a "class loader" is
caught
            at the upper layer.
The upper layer does not check that it is a class loader, just for
non-NULL.
I think, it is good to have an assert here to double-checks the
pre-conditions as other caller can be added later.
But I'm Ok to get rid of it if you suggest.
Please keep the asserts. Basically I was mumbling to myself to
make sure that the asserts could not be reached by user code
and the "Update:" was to indicate that I did do.
Ok, thanks.



src/share/vm/prims/jvmti.xml
    L6550:         <param id="module_ptr">
    L6551: <outptr><jobject/></outptr>
    L6552:           <description>
    L6553:             On return, points to a
<code>java.lang.reflect.Module</code> object.
    L6554:           </description>
    L6555:         </param>

        The above wording doesn't allow for module_ptr to be NULL
which
        is a mismatch with the description.
I disagree (or maybe I got it incorrectly).
Pointing to NULL and be NULL is different.
It is not allowed for the module_ptr to be NULL but Ok to pint to
NULL on return.
I think the description needs to be:

    On return, points to a <code>java.lang.reflect.Module</code> object
    or points to a <code>NULL</code>.
Agreed, fixed.
Disagree. You would say that a pointer is NULL, not that it points to
a NULL.
Why are you disagree?
The module_ptr is an out argument, it is not allowed to be NULL.
But the returning value by this pointer can be NULL.
As per later email I see this terminology already exists so is fine, but I find it confusing to say "points to a 
NULL" - a NULL is not an entity. If "foo points to a NULL" that implies to me "foo == &NULL;" 
which is nonsense - foo == NULL, and if foo==NULL then foo points to nothing. But the "pointer to a pointer" 
aspect here does confuse things.
I would prefer if it said "points to a NULL pointer", or NULL-pointer. I'm not 
sure what would be the more correct way to write it. Anyway, a NULL pointer is an entity 
:-)
Jesper,

Thank you for the comment.
In fact, I've just used a pattern that is already present in the JVMTI spec.
Objections to the existing pattern are minor, so it is better to be more conservative here.

Thanks,
Serguei



/Jesper


Thanks,
David

Thanks,
Serguei


David


Thanks,
Serguei



Dan

Reply via email to