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

Reply via email to