Review Request: KJS: Implement Object.GetOwnPropertyDescriptor & Object.DefineProperty

Bernd Buschinski b.buschinski at googlemail.com
Mon Apr 30 20:11:13 BST 2012



> On April 29, 2012, 6:26 p.m., Maks Orlovich wrote:
> > kjs/object.cpp, line 433
> > <http://git.reviewboard.kde.org/r/104515/diff/4/?file=58277#file58277line433>
> >
> >     more * inconsistency

I don't get the problem here, could you please explain?


> On April 29, 2012, 6:26 p.m., Maks Orlovich wrote:
> > kjs/object.cpp, line 481
> > <http://git.reviewboard.kde.org/r/104515/diff/4/?file=58277#file58277line481>
> >
> >     *

same here, no clue whats wrong


> On April 29, 2012, 6:26 p.m., Maks Orlovich wrote:
> > kjs/object_object.cpp, line 288
> > <http://git.reviewboard.kde.org/r/104515/diff/4/?file=58278#file58278line288>
> >
> >     This can throw, I think. Yes, we probably have zillions of bugs where we don't check ->hadException precisely. On that note, I would discourage using toString in exception error messages, for the same reason --- you can get an error produced just trying to construct them. Instead, you'll probably want to factor out the code in printInfo() in internal.cpp into something that can make you a string, and use that.
> >

Hm yes, you are right, but I would like to fix this issue later in another patch.


> On April 29, 2012, 6:26 p.m., Maks Orlovich wrote:
> > kjs/propertydescriptor.h, line 36
> > <http://git.reviewboard.kde.org/r/104515/diff/4/?file=58281#file58281line36>
> >
> >     Are you sure you want them copyable? At any rate, you should never have a copy constructor but no operator=

ok, copy-ctor removed instead I will rely on the implicit operator=, which does the right thing because all objects are POD in this case.


- Bernd


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/104515/#review13085
-----------------------------------------------------------


On April 20, 2012, 11:55 a.m., Bernd Buschinski wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/104515/
> -----------------------------------------------------------
> 
> (Updated April 20, 2012, 11:55 a.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Description
> -------
> 
> KJS: Implement Object.GetOwnPropertyDescriptor & Object.DefineProperty
> 
> This is a pretty big patch, to get Object.defineProperty perfect for ecmascript (for all tests that only use implemented stuff, all test that use Object.create for example will fail, as its not implemented)
> 
> PropertyDescriptor:
> Necessary for collectiong data, this introduce new CommonIdentifiers.h, this might requiere to rebuild khtml against new kjs, otherwise it might cause weird crashes (at least for me)
> 
> 
> object.h:
> Beside from adding new getPropertyDescriptor & getOwnPropertyDescriptor & defineOwnProperty, the important changes are making
> getPropertyAttributes, put/get/remove-Direct virtual.
> Why do I need that?
> Because put checks if the prototype already has property XYZ and uses it. Now imagine an array that got a setter-only property via a prototype. DefineProperty would try to use put, which uses the prototype property and it would fail. So all custom-data classes like Array need to implement/use put/get/remove-Direct.
> 
> 
> object.cpp:
> currently put on a setter-only property would always throw an exception, this is only correct for strict-mode, as we currently do not check for strict-mode it would make more sense to change it to default not throwing an exception.
> 
> 
> array.cpp/h:
> The old Array implementation did not store attributes for array indexes, I rewrote it to also store the attributes.
> + Bonus: also fix getOwnPropertyNames, as we now store attributes.
> + use new attributes, reject put/delete/enum if set
> 
> function.cpp (Arguments)
> changed the default attributes how parameter are stored, according to ECMA 10.6.11.b
> 
> 
> Rest is "just" the defineProperty implementation
> 
> 
> Diffs
> -----
> 
>   kjs/CMakeLists.txt 1188064 
>   kjs/CommonIdentifiers.h 8ee40e8 
>   kjs/array_instance.h 3f2b630 
>   kjs/array_instance.cpp fe9b8b4 
>   kjs/function.h 3757fe8 
>   kjs/function.cpp 5f39ae6 
>   kjs/object.h 047c242 
>   kjs/object.cpp c19122f 
>   kjs/object_object.cpp 986f03f 
>   kjs/operations.h f8a28c8 
>   kjs/operations.cpp d4c0066 
>   kjs/propertydescriptor.h PRE-CREATION 
>   kjs/propertydescriptor.cpp PRE-CREATION 
> 
> Diff: http://git.reviewboard.kde.org/r/104515/diff/
> 
> 
> Testing
> -------
> 
> ecmascript & daily surfing
> 
> used valgrind on many array testcases to check for possible memleaks
> 
> 
> Thanks,
> 
> Bernd Buschinski
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120430/99dad928/attachment.htm>


More information about the kde-core-devel mailing list