[9] RFR: 8152207: Perform array bound checks while getting a length of bytecode instructions

harold seigel harold.seigel at oracle.com
Fri May 27 12:00:27 UTC 2016


Hi Artem,

The changes look good.  If you want to restore the "int length = ..." 
code that's okay, too.  I don't need to see another webrev.

Thanks, Harold

On 5/26/2016 5:58 PM, David Holmes wrote:
> On 27/05/2016 7:51 AM, Artem Smotrakov wrote:
>> Hi Harold,
>>
>> Thank you for review. Here is an updated webrev
>>
>> http://cr.openjdk.java.net/~asmotrak/8152207/jdk/webrev.01/
>>
>> If I am not missing something, it might return -1 if an instruction
>> index is invalid, so that it doesn't need to do anything else then.
>>
>> I noticed that the following code may fail with "declaration can not
>> follow a statement (E_DECLARATION_IN_CODE)" on some gcc versions (I've
>> seen this on Solaris):
>
> That would either be a very old compiler or else we're not explicitly 
> enabling the right C version and/or GNU extensions.
>
> Cheers,
> David
>
>> ...
>>        default: {
>>             if (instruction < 0 || instruction > JVM_OPC_MAX)
>>                 return -1;
>>
>>             /* A length of 0 indicates an error. */
>>             int length = opcode_length[instruction];
>>             return (length <= 0) ? -1 : length;
>>        }
>> ...
>>
>> So, I just removed the 'length' variable.
>>
>> Artem
>>
>> On 05/26/2016 10:36 AM, harold seigel wrote:
>>> Hi Artem,
>>>
>>> The hotspot changes look good.
>>>
>>> For the jdk webrev, can you move the new code at lines 1699 and 1700
>>> to just inside the 'default:' alternative?
>>>
>>> Thanks, Harold
>>>
>>>
>>> On 5/20/2016 4:05 PM, Artem Smotrakov wrote:
>>>> Hello,
>>>>
>>>> Could someone review this fix, please?
>>>>
>>>> http://cr.openjdk.java.net/~asmotrak/8152207/hotspot/webrev.01/
>>>> http://cr.openjdk.java.net/~asmotrak/8152207/jdk/webrev.00/
>>>>
>>>> Artem
>>>>
>>>> On 05/10/2016 01:49 PM, Artem Smotrakov wrote:
>>>>> Hi Christian,
>>>>>
>>>>> Thank you for review. Here is updated webrev
>>>>>
>>>>> http://cr.openjdk.java.net/~asmotrak/8152207/hotspot/webrev.01/
>>>>>
>>>>> Artem
>>>>>
>>>>> On 05/09/2016 01:24 PM, Christian Thalinger wrote:
>>>>>>
>>>>>>> On May 4, 2016, at 1:48 PM, Artem Smotrakov
>>>>>>> <artem.smotrakov at oracle.com <mailto:artem.smotrakov at oracle.com>>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> Please review two small patches for jdk and hotspot repos which
>>>>>>> add array bound checks to functions which return a length of
>>>>>>> bytecode instruction.
>>>>>>>
>>>>>>> Please see details in
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8152207
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~asmotrak/8152207/jdk/webrev.00/
>>>>>>> <http://cr.openjdk.java.net/%7Easmotrak/8152207/jdk/webrev.00/>
>>>>>>> http://cr.openjdk.java.net/~asmotrak/8152207/hotspot/webrev.00/
>>>>>>
>>>>>> static bool        is_defined     (int  code)    { return 0 <= code
>>>>>> && code < number_of_codes && flags(code, false) != 0; }
>>>>>> + static int length_for (Code code) { return 0 <= code && code <
>>>>>> number_of_codes ? _lengths[code] & 0xF : -1; }
>>>>>> + static int wide_length_for(Code code) { return 0 <= code && code
>>>>>> < number_of_codes ? _lengths[code] >> 4 : -1; }
>>>>>> You should factor the bound check into a separate method.
>>>>>>
>>>>>>>
>>>>>>> Artem
>>>>>>
>>>>>
>>>>
>>>
>>



More information about the hotspot-runtime-dev mailing list