Revision: 6279
Author: [email protected]
Date: Wed Jan 12 01:29:20 2011
Log: Landing for Martin Maly.
Fix CalculateEmitStore HashMap use.
The hash maps are setup to store strings or smis but instead Literal is
being in them. It seems to only work by accident.
http://code.google.com/p/v8/source/detail?r=6279
Modified:
/branches/bleeding_edge/src/ast.cc
=======================================
--- /branches/bleeding_edge/src/ast.cc Fri Jan 7 02:36:27 2011
+++ /branches/bleeding_edge/src/ast.cc Wed Jan 12 01:29:20 2011
@@ -215,12 +215,16 @@
bool IsEqualString(void* first, void* second) {
+ ASSERT((*reinterpret_cast<String**>(first))->IsString());
+ ASSERT((*reinterpret_cast<String**>(second))->IsString());
Handle<String> h1(reinterpret_cast<String**>(first));
Handle<String> h2(reinterpret_cast<String**>(second));
return (*h1)->Equals(*h2);
}
bool IsEqualSmi(void* first, void* second) {
+ ASSERT((*reinterpret_cast<Smi**>(first))->IsSmi());
+ ASSERT((*reinterpret_cast<Smi**>(second))->IsSmi());
Handle<Smi> h1(reinterpret_cast<Smi**>(first));
Handle<Smi> h2(reinterpret_cast<Smi**>(second));
return (*h1)->value() == (*h2)->value();
@@ -266,12 +270,12 @@
// If the key of a computed property is in the table, do not emit
// a store for the property later.
if (property->kind() == ObjectLiteral::Property::COMPUTED) {
- if (table->Lookup(literal, hash, false) != NULL) {
+ if (table->Lookup(key, hash, false) != NULL) {
property->set_emit_store(false);
}
}
// Add key to the table.
- table->Lookup(literal, hash, true);
+ table->Lookup(key, hash, true);
}
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev