Review request JDK-8007619: Add support for deprecated properties of RegExp constructor

A. Sundararajan sundararajan.athijegannathan at oracle.com
Wed Feb 6 02:50:42 PST 2013


$1-$9 properties change b/w invocations. For eg. $5 may not exist after 
an exec call - if there are only 4 matches.

Also, adding as properties implies fixed cost - you pay regardless of 
using those deprecated properties or not - i.e., propertyMap gets added 
entries. With __noSuchProperty__ hook, this is called only when user 
really uses it.

On avoiding another "internal" property: we may expect constructor to be 
of specific type and use package private field or something -- but then 
we can't access NativeRegExp$Constructor at compile time as it is 
generated by nasgen :-(

-Sundar

On Wednesday 06 February 2013 04:13 PM, Hannes Wallnoefer wrote:
> To be honest this looks a bit hacky to me. The properties on the 
> constructor are configurable and writable (since they are technically 
> not defined), and the __last_regexp_match__ property leaks out to the 
> script.
>
> I think ideally we should support getters on the constructor (which I 
> think we currently do not):
>
>     @Getter(where = Where.CONSTRUCTOR)
>     public static Object lastMatch(Object self) {
>         ...
>     }
>
> And maybe we could think of a way to let the getter know what to 
> return without using a public property on the constructor?
>
> Hannes
>
> Am 2013-02-06 09:06, schrieb A. Sundararajan:
>> Please review http://cr.openjdk.java.net/~sundar/8007619/
>>
>> Thanks,
>> -Sundar
>



More information about the nashorn-dev mailing list