Reviewers: Toon Verwaest,
Message:
The key is handled at https://codereview.chromium.org/324913002/.
Description:
Sign extend the dehoisted key at the definition point for x64 port only;
for x32
port, we need to sign extend the dehoisted key at the use points.
Please review this at https://codereview.chromium.org/328553005/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+4, -2 lines):
M src/x64/lithium-codegen-x64.cc
M src/x64/lithium-x64.cc
Index: src/x64/lithium-codegen-x64.cc
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
index
75ba04e48170f0ed94975dc180d28f5cd9625ae3..9d59aab08d947a678430025d066229027533e3eb
100644
--- a/src/x64/lithium-codegen-x64.cc
+++ b/src/x64/lithium-codegen-x64.cc
@@ -275,6 +275,7 @@ void
LCodeGen::GenerateBodyInstructionPost(LInstruction* instr) {
}
if (instr->HasResult() && instr->MustSignExtendResult(chunk())) {
+ ASSERT(kPointerSize == kInt64Size);
if (instr->result()->IsRegister()) {
Register result_reg = ToRegister(instr->result());
__ movsxlq(result_reg, result_reg);
Index: src/x64/lithium-x64.cc
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
index
bb2ecc06b8e4e374e838cf2847f08221ed9f8faa..b8c5b9905c99feb9becf0ce3c7344ef249f47598
100644
--- a/src/x64/lithium-x64.cc
+++ b/src/x64/lithium-x64.cc
@@ -2110,6 +2110,7 @@ LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot*
instr) {
void LChunkBuilder::FindDehoistedKeyDefinitions(HValue* candidate) {
+ ASSERT(kPointerSize == kInt64Size);
BitVector* dehoisted_key_ids = chunk_->GetDehoistedKeyIds();
if (dehoisted_key_ids->Contains(candidate->id())) return;
dehoisted_key_ids->Add(candidate->id());
@@ -2126,7 +2127,7 @@ LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed*
instr) {
LOperand* key = UseRegisterOrConstantAtStart(instr->key());
LInstruction* result = NULL;
- if (instr->IsDehoisted()) {
+ if ((kPointerSize == kInt64Size) && instr->IsDehoisted()) {
FindDehoistedKeyDefinitions(instr->key());
}
@@ -2171,7 +2172,7 @@ LInstruction*
LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
LInstruction* LChunkBuilder::DoStoreKeyed(HStoreKeyed* instr) {
ElementsKind elements_kind = instr->elements_kind();
- if (instr->IsDehoisted()) {
+ if ((kPointerSize == kInt64Size) && instr->IsDehoisted()) {
FindDehoistedKeyDefinitions(instr->key());
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.