Use a filter instead of a visitor to deoptimize selected functions in a context.
authorulan@chromium.org <ulan@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 17 Dec 2012 10:23:52 +0000 (10:23 +0000)
committerulan@chromium.org <ulan@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 17 Dec 2012 10:23:52 +0000 (10:23 +0000)
commit6e12a16aac988c383dcf00adf8518b5d809d9871
treef8e7a5198dde1c844ae81ac3944d22bae14479a7
parent133957e7436a84f96ed733c92de993a262be73b1
Use a filter instead of a visitor to deoptimize selected functions in a context.

This makes the DeoptimizeAll function O(n) instead of O(n^2) where n in the number of optimized functions.

Before this change, DeoptimizeAll iterated over the optimized function list and called DeoptimizingVisitor for each function. The visitor iterated over the optimized function list again to remove the functions that share the same optimized code.

This change partitions the optimized function list into one or more lists of related functions in one pass over the optimized function list.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/arm/deoptimizer-arm.cc
src/deoptimizer.cc
src/deoptimizer.h
src/ia32/deoptimizer-ia32.cc
src/liveedit.cc
src/mips/deoptimizer-mips.cc
src/objects-inl.h
src/objects.h
src/x64/deoptimizer-x64.cc