Share optimized code for closures.
authorfschneider@chromium.org <fschneider@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 14 Jun 2012 14:06:22 +0000 (14:06 +0000)
committerfschneider@chromium.org <fschneider@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 14 Jun 2012 14:06:22 +0000 (14:06 +0000)
commitbb0a2ea7664ad129070cd648df807bd80ed4181d
treead993dd7b0f4b4a9a1e889f4ad75ef03f3ab15eb
parent675d9b8a042dfbb5934dba41b151463f4e1b8667
Share optimized code for closures.

Each SharedFunctionInfo gets an optimized code map to store
one optimized code object per context. When allocating a new
closure we consult this map and check if there is optimized code
that can be shared.

This patch is based on an original patch
by Anton Muhin (http://codereview.chromium.org/6793013/).

BUG=v8:2087, v8:2094
TEST=test/mjsunit/compiler/optimized-closures.js
Review URL: https://chromiumcodereview.appspot.com/10103035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
28 files changed:
src/arm/code-stubs-arm.cc
src/arm/deoptimizer-arm.cc
src/arm/lithium-codegen-arm.cc
src/compiler.cc
src/deoptimizer.h
src/factory.cc
src/flag-definitions.h
src/frames.cc
src/frames.h
src/heap.cc
src/hydrogen-instructions.h
src/hydrogen.cc
src/hydrogen.h
src/ia32/code-stubs-ia32.cc
src/ia32/deoptimizer-ia32.cc
src/ia32/lithium-codegen-ia32.cc
src/mark-compact.cc
src/objects-debug.cc
src/objects-inl.h
src/objects.cc
src/objects.h
src/runtime-profiler.cc
src/runtime.cc
src/v8-counters.h
src/x64/code-stubs-x64.cc
src/x64/deoptimizer-x64.cc
src/x64/lithium-codegen-x64.cc
test/mjsunit/compiler/optimized-closures.js [new file with mode: 0644]