Make the runtime entry for setting/changing accessors "atomic".
authorsvenpanne@chromium.org <svenpanne@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 7 Mar 2012 13:24:44 +0000 (13:24 +0000)
committersvenpanne@chromium.org <svenpanne@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 7 Mar 2012 13:24:44 +0000 (13:24 +0000)
commit1729e3c0ddf0c7a0f912ef38355d38afe284bf04
tree0a2403dba20414c85f5052d64abe236c457e6246
parentb732b2e32abbffd3e4b83410708ea529e46471de
Make the runtime entry for setting/changing accessors "atomic".

Previously, there were 1 or 2 calls to the runtime when accessors were changed
or set. This doesn't really work well with property attributes, leading to some
hacks and complicates things even further when trying to share maps in presence
of accessors. Therefore, the runtime entry now takes the full triple (getter,
setter, attributes), where the getter and/or the setter can be null in case they
shouldn't be changed.

For now, we do basically the same on the native side as we did before on the
JavaScript side, but this will change in future CLs, the current CL is already
large enough.

Note that object literals with a getter and a setter for the same property still
do 2 calls, but this is a little bit more tricky to fix and will be handled in a
separate CL.

Review URL: https://chromiumcodereview.appspot.com/9616016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10956 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/arm/full-codegen-arm.cc
src/ia32/full-codegen-ia32.cc
src/messages.js
src/mips/full-codegen-mips.cc
src/objects.h
src/regexp.js
src/runtime.cc
src/v8natives.js
src/x64/full-codegen-x64.cc
test/mjsunit/object-define-property.js