X64: Optimize access to external references.
authorlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 23 Mar 2011 09:05:13 +0000 (09:05 +0000)
committerlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 23 Mar 2011 09:05:13 +0000 (09:05 +0000)
commita224db3a50f094ba90b0e94d5df7e345fb032929
treecc5394cd8180675dde2f556aab68d543e0c14f8a
parentd5359e338a06fdef427b775a7c9370f703da542d
X64: Optimize access to external references.

Access to an ExternalReference in non-serializable code will try to use
an offset relative to the root-array register.
Since the root-array is in the Heap object, and the Heap object is in
the Isolate object, there's a good chance that any external data field
is within a 32-bit offset of the root array register.
It falls back on the original behavior if the serializer is enabled,
if the root register isn't initialized or if the offset is not representable
as a 32-bit value.

Review URL: http://codereview.chromium.org/6716018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/x64/code-stubs-x64.cc
src/x64/deoptimizer-x64.cc
src/x64/ic-x64.cc
src/x64/lithium-codegen-x64.cc
src/x64/macro-assembler-x64.cc
src/x64/macro-assembler-x64.h
src/x64/regexp-macro-assembler-x64.cc
src/x64/regexp-macro-assembler-x64.h
src/x64/stub-cache-x64.cc
test/cctest/test-macro-assembler-x64.cc