Reland "Track field types.".
authorbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 15 Apr 2014 07:36:47 +0000 (07:36 +0000)
committerbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 15 Apr 2014 07:36:47 +0000 (07:36 +0000)
commit6b4d4b72879318968d1a73afd63068e307bb9318
tree0f9fcd12c729fd72f5d274bc578cb7c3b0cc70ef
parent414dd0325041ea63bdfe0bd4de4e65b5c26055f8
Reland "Track field types.".

This is an initial step towards tracking the exact types instead of just
the representations of fields. It adds support to track up to one map of
heap object field values, eliminating various map checks on values
loaded from such fields, at the cost of making stores to such fields
slightly more expensive.

Issues with transitioning stores and fast object literals in Crankshaft
fixed.

TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/238773002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
25 files changed:
src/arm/lithium-codegen-arm.cc
src/arm/stub-cache-arm.cc
src/arm64/lithium-codegen-arm64.cc
src/arm64/stub-cache-arm64.cc
src/deoptimizer.cc
src/flag-definitions.h
src/heap.cc
src/hydrogen-check-elimination.cc
src/hydrogen-instructions.cc
src/hydrogen-instructions.h
src/hydrogen.cc
src/hydrogen.h
src/ia32/lithium-codegen-ia32.cc
src/ia32/stub-cache-ia32.cc
src/ic.cc
src/json-parser.h
src/objects-debug.cc
src/objects-inl.h
src/objects.cc
src/objects.h
src/property.cc
src/property.h
src/x64/lithium-codegen-x64.cc
src/x64/stub-cache-x64.cc
test/mjsunit/field-type-tracking.js [new file with mode: 0644]