-----------------------------------------------------------
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.


Changes
-------

Fix ArrayInstance::defineOwnProperty (ECMAScript Edition 5.1r6 - 15.4.5.1) Step 
3d, return after Exception

While ECMAScript explicitly tells to return in all other situations, it does 
not in this case.
But it only makes sense to not apply the invalid new length, otherwise we can 
define any invalid array length.
+ Some tests show that we must not continue


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 (updated)
-----

  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

Reply via email to