Status: New
Owner: ----
New issue 959 by marchant: Overriding a property defined with set/get by a
property value doesn't work
http://code.google.com/p/v8/issues/detail?id=959
This example defines a random property that is lazily populated and when it
is, it is substituted on each instance by a value property for
optimization. Here's the log from Chromium 10.0.604.0 (68459):
Re-DefineProperty.html:13get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:11set: random 0.9481996716931462
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:33instance.random -> = 0.9481996716931462
Re-DefineProperty.html:13get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:11set: random 0.43450533621944487
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:34instance.random -> = 0.43450533621944487
Re-DefineProperty.html:36instanceRandomDescriptor undefined
Re-DefineProperty.html:13get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:11set: random 0.34425976895727217
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:40instanceSub.random -> = 0.34425976895727217
Re-DefineProperty.html:13get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:11set: random 0.9542325031943619
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:41instanceSub.random -> = 0.9542325031943619
Re-DefineProperty.html:43instanceSubRandomDescriptor undefined
Here's the log from FireFox 4:
16:44:32:329: get: random
16:44:32:331: get: random - Object.defineProperty - value Start
16:44:32:332: get: random - Object.defineProperty - value End
16:44:32:333: instance.random -> = 0.07001491421398776
16:44:32:334: instance.random -> = 0.07001491421398776
16:44:32:335: instanceRandomDescriptor [object Object]
16:44:32:335: get: random
16:44:32:336: get: random - Object.defineProperty - value Start
16:44:32:337: get: random - Object.defineProperty - value End
16:44:32:339: instanceSub.random -> = 0.9398968241732104
16:44:32:341: instanceSub.random -> = 0.9398968241732104
16:44:32:342: instanceSubRandomDescriptor [object Object]
And Safari Version 5.0.3 (6533.19.4)
get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:33instance.random -> = 0.7288378605153412
Re-DefineProperty.html:34instance.random -> = 0.7288378605153412
Re-DefineProperty.html:36instanceRandomDescriptor
Object
Re-DefineProperty.html:13get: random
Re-DefineProperty.html:15get: random - Object.defineProperty - value Start
Re-DefineProperty.html:21get: random - Object.defineProperty - value End
Re-DefineProperty.html:40instanceSub.random -> = 0.8803361100144684
Re-DefineProperty.html:41instanceSub.random -> = 0.8803361100144684
Re-DefineProperty.html:43instanceSubRandomDescriptor
Object
In Chromium, the property is not overridden as expected, and the original
get/set keeps being called. A workaround consists in re-setting __proto__
to Object, redefine the property as a value, and then re-set the __proto__
to what it was, but that bug should be fixed!
Thanks,
Benoit
Attachments:
Re-DefineProperty.html 1.5 KB
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev