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.

Reply via email to