Reviewers: Toon Verwaest,
Message:
Hi Toon, here is the code we discussed, thanks!
--Michael
Description:
Fix LStoreKeyed error when tracing instruction.
LStoreKeyed can have a NULL value(), when we recognize we are storing a
constant
hole value.
BUG=
Please review this at https://codereview.chromium.org/15793006/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/lithium-arm.cc
M src/ia32/lithium-ia32.cc
M src/x64/lithium-x64.cc
Index: src/arm/lithium-arm.cc
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc
index
1c64d8e61ef97c39781ea1afb1be93f48ee254c3..5463a9a87f8fda421cce745b36b6d5d2aa14a75f
100644
--- a/src/arm/lithium-arm.cc
+++ b/src/arm/lithium-arm.cc
@@ -405,7 +405,14 @@ void LStoreKeyed::PrintDataTo(StringStream* stream) {
} else {
stream->Add("] <- ");
}
- value()->PrintTo(stream);
+
+ if (value() == NULL) {
+ ASSERT(hydrogen()->IsConstantHoleStore() &&
+ hydrogen()->value()->representation().IsDouble());
+ stream->Add("<the hole(nan)>");
+ } else {
+ value()->PrintTo(stream);
+ }
}
Index: src/ia32/lithium-ia32.cc
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
index
f7eeb60fcd178cd85b1712073dc05f4544ebeb3d..c5c7755abfcdc98e8b5f1f2e736e889a12866234
100644
--- a/src/ia32/lithium-ia32.cc
+++ b/src/ia32/lithium-ia32.cc
@@ -452,7 +452,14 @@ void LStoreKeyed::PrintDataTo(StringStream* stream) {
} else {
stream->Add("] <- ");
}
- value()->PrintTo(stream);
+
+ if (value() == NULL) {
+ ASSERT(hydrogen()->IsConstantHoleStore() &&
+ hydrogen()->value()->representation().IsDouble());
+ stream->Add("<the hole(nan)>");
+ } else {
+ value()->PrintTo(stream);
+ }
}
Index: src/x64/lithium-x64.cc
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
index
0945172962b9cceeaf7a1d522b97c20b1d40d222..e50be086bc7012619538c29f3d3539295cc1e809
100644
--- a/src/x64/lithium-x64.cc
+++ b/src/x64/lithium-x64.cc
@@ -427,7 +427,14 @@ void LStoreKeyed::PrintDataTo(StringStream* stream) {
} else {
stream->Add("] <- ");
}
- value()->PrintTo(stream);
+
+ if (value() == NULL) {
+ ASSERT(hydrogen()->IsConstantHoleStore() &&
+ hydrogen()->value()->representation().IsDouble());
+ stream->Add("<the hole(nan)>");
+ } else {
+ value()->PrintTo(stream);
+ }
}
--
--
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/groups/opt_out.