Reviewers: rossberg,
Description:
Ensure that generated code for object literals will call
Runtime_DefineOrRedefineAccessorProperty only once per accessor property.
To do this, we collect all accessor properties in a first pass and emit
code for
defining those properties afterwards in a second pass.
As a finger exercise, the table used for collecting accessors has a (subset
of
an) STL-like iterator interface, including STL-like names and operators.
Although C++ is quite verbose here (as usual, but partly this is caused by
our
current slightly clumsy classes/templates), things work out quite nicely
and it
cleans up some confusion, e.g. a table entry is not an iterator etc.
Everything compiles into very efficient code, e.g. the loop condition 'it !=
accessor_table.end()' compiles into a single 'testl' instruction on ia32.
+1 for using standard APIs!
Please review this at https://chromiumcodereview.appspot.com/9691040/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/full-codegen-arm.cc
M src/full-codegen.h
M src/ia32/full-codegen-ia32.cc
M src/mips/full-codegen-mips.cc
M src/x64/full-codegen-x64.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev