6703dddac4
Only JSObject enumerables with enum cache (fast case properties, no interceptors, no enumerable properties on the prototype) are supported. HLoadKeyedGeneric with keys produced by for-in enumeration are recognized and rewritten into direct property load by index. For this enum-cache was extended to store property indices in a separate array (see handles.cc). New hydrogen instructions: - HForInPrepareMap: checks for-in fast case preconditions and returns map that contains enum-cache; - HForInCacheArray: extracts enum-cache array from the map; - HCheckMapValue: map check with HValue map instead of immediate; - HLoadFieldByIndex: load fast property by it's index, positive indexes denote in-object properties, negative - out of object properties; Changed hydrogen instructions: - HLoadKeyedFastElement: added hole check suppression for loads from internal FixedArrays that are knows to have no holes inside. R=fschneider@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9425045 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 |
||
---|---|---|
.. | ||
assembler-ia32-inl.h | ||
assembler-ia32.cc | ||
assembler-ia32.h | ||
builtins-ia32.cc | ||
code-stubs-ia32.cc | ||
code-stubs-ia32.h | ||
codegen-ia32.cc | ||
codegen-ia32.h | ||
cpu-ia32.cc | ||
debug-ia32.cc | ||
deoptimizer-ia32.cc | ||
disasm-ia32.cc | ||
frames-ia32.cc | ||
frames-ia32.h | ||
full-codegen-ia32.cc | ||
ic-ia32.cc | ||
lithium-codegen-ia32.cc | ||
lithium-codegen-ia32.h | ||
lithium-gap-resolver-ia32.cc | ||
lithium-gap-resolver-ia32.h | ||
lithium-ia32.cc | ||
lithium-ia32.h | ||
macro-assembler-ia32.cc | ||
macro-assembler-ia32.h | ||
regexp-macro-assembler-ia32.cc | ||
regexp-macro-assembler-ia32.h | ||
simulator-ia32.cc | ||
simulator-ia32.h | ||
stub-cache-ia32.cc |