Revision: 17520
Author:   [email protected]
Date:     Wed Nov  6 12:14:24 2013 UTC
Log: [Object.observe] rename intrinsic change record types for consitency.

Note the spec now reflects the updated naming:

http://wiki.ecmascript.org/doku.php?id=harmony:observe_spec_changes

[email protected], rossberg
BUG=v8:2940

Review URL: https://codereview.chromium.org/46043020
http://code.google.com/p/v8/source/detail?r=17520

Modified:
 /branches/bleeding_edge/src/accessors.cc
 /branches/bleeding_edge/src/object-observe.js
 /branches/bleeding_edge/src/objects.cc
 /branches/bleeding_edge/src/runtime.cc
 /branches/bleeding_edge/test/cctest/test-object-observe.cc
 /branches/bleeding_edge/test/mjsunit/harmony/object-observe.js

=======================================
--- /branches/bleeding_edge/src/accessors.cc    Tue Nov  5 13:47:51 2013 UTC
+++ /branches/bleeding_edge/src/accessors.cc    Wed Nov  6 12:14:24 2013 UTC
@@ -617,7 +617,7 @@

   if (is_observed && !old_value->SameValue(*value)) {
     JSObject::EnqueueChangeRecord(
- function, "updated", isolate->factory()->prototype_string(), old_value); + function, "update", isolate->factory()->prototype_string(), old_value);
   }

   return *function;
=======================================
--- /branches/bleeding_edge/src/object-observe.js Tue Nov 5 12:25:32 2013 UTC +++ /branches/bleeding_edge/src/object-observe.js Wed Nov 6 12:14:24 2013 UTC
@@ -128,11 +128,11 @@
 }

 var defaultAcceptTypes = TypeMapCreateFromList([
-  'new',
-  'updated',
-  'deleted',
-  'prototype',
-  'reconfigured',
+  'add',
+  'update',
+  'delete',
+  'setPrototype',
+  'reconfigure',
   'preventExtensions'
 ]);

@@ -353,9 +353,9 @@
 }

 function ArrayObserve(object, callback) {
-  return ObjectObserve(object, callback, ['new',
-                                          'updated',
-                                          'deleted',
+  return ObjectObserve(object, callback, ['add',
+                                          'update',
+                                          'delete',
                                           'splice']);
 }

=======================================
--- /branches/bleeding_edge/src/objects.cc      Wed Nov  6 09:29:09 2013 UTC
+++ /branches/bleeding_edge/src/objects.cc      Wed Nov  6 12:14:24 2013 UTC
@@ -2157,7 +2157,7 @@
       object->map()->is_observed() &&
       *name != isolate->heap()->hidden_string()) {
     Handle<Object> old_value = isolate->factory()->the_hole_value();
-    EnqueueChangeRecord(object, "new", name, old_value);
+    EnqueueChangeRecord(object, "add", name, old_value);
   }

   return value;
@@ -4105,14 +4105,14 @@

   if (is_observed) {
     if (lookup->IsTransition()) {
-      EnqueueChangeRecord(object, "new", name, old_value);
+      EnqueueChangeRecord(object, "add", name, old_value);
     } else {
       LookupResult new_lookup(isolate);
       object->LocalLookup(*name, &new_lookup, true);
       if (new_lookup.IsDataProperty()) {
         Handle<Object> new_value = Object::GetProperty(object, name);
         if (!new_value->SameValue(*old_value)) {
-          EnqueueChangeRecord(object, "updated", name, old_value);
+          EnqueueChangeRecord(object, "update", name, old_value);
         }
       }
     }
@@ -4222,9 +4222,9 @@

   if (is_observed) {
     if (lookup.IsTransition()) {
-      EnqueueChangeRecord(object, "new", name, old_value);
+      EnqueueChangeRecord(object, "add", name, old_value);
     } else if (old_value->IsTheHole()) {
-      EnqueueChangeRecord(object, "reconfigured", name, old_value);
+      EnqueueChangeRecord(object, "reconfigure", name, old_value);
     } else {
       LookupResult new_lookup(isolate);
       object->LocalLookup(*name, &new_lookup, true);
@@ -4235,9 +4235,9 @@
       }
       if (new_lookup.GetAttributes() != old_attributes) {
if (!value_changed) old_value = isolate->factory()->the_hole_value();
-        EnqueueChangeRecord(object, "reconfigured", name, old_value);
+        EnqueueChangeRecord(object, "reconfigure", name, old_value);
       } else if (value_changed) {
-        EnqueueChangeRecord(object, "updated", name, old_value);
+        EnqueueChangeRecord(object, "update", name, old_value);
       }
     }
   }
@@ -5183,7 +5183,7 @@

   if (should_enqueue_change_record && !HasLocalElement(object, index)) {
     Handle<String> name = factory->Uint32ToString(index);
-    EnqueueChangeRecord(object, "deleted", name, old_value);
+    EnqueueChangeRecord(object, "delete", name, old_value);
   }

   return result;
@@ -5259,7 +5259,7 @@
   }

   if (is_observed && !HasLocalProperty(object, name)) {
-    EnqueueChangeRecord(object, "deleted", name, old_value);
+    EnqueueChangeRecord(object, "delete", name, old_value);
   }

   return result;
@@ -6349,7 +6349,7 @@
   }

   if (is_observed) {
-    const char* type = preexists ? "reconfigured" : "new";
+    const char* type = preexists ? "reconfigure" : "add";
     EnqueueChangeRecord(object, type, name, old_value);
   }
 }
@@ -11453,11 +11453,11 @@

   for (int i = 0; i < indices.length(); ++i) {
     JSObject::EnqueueChangeRecord(
-        self, "deleted", isolate->factory()->Uint32ToString(indices[i]),
+        self, "delete", isolate->factory()->Uint32ToString(indices[i]),
         old_values[i]);
   }
   JSObject::EnqueueChangeRecord(
-      self, "updated", isolate->factory()->length_string(),
+      self, "update", isolate->factory()->length_string(),
       old_length_handle);

   EndPerformSplice(self);
@@ -12603,26 +12603,26 @@
       CHECK(new_length_handle->ToArrayIndex(&new_length));

       BeginPerformSplice(Handle<JSArray>::cast(self));
-      EnqueueChangeRecord(self, "new", name, old_value);
- EnqueueChangeRecord(self, "updated", isolate->factory()->length_string(),
+      EnqueueChangeRecord(self, "add", name, old_value);
+ EnqueueChangeRecord(self, "update", isolate->factory()->length_string(),
                           old_length_handle);
       EndPerformSplice(Handle<JSArray>::cast(self));
       Handle<JSArray> deleted = isolate->factory()->NewJSArray(0);
       EnqueueSpliceRecord(Handle<JSArray>::cast(self), old_length, deleted,
                           new_length - old_length);
     } else {
-      EnqueueChangeRecord(self, "new", name, old_value);
+      EnqueueChangeRecord(self, "add", name, old_value);
     }
   } else if (old_value->IsTheHole()) {
-    EnqueueChangeRecord(self, "reconfigured", name, old_value);
+    EnqueueChangeRecord(self, "reconfigure", name, old_value);
   } else {
     Handle<Object> new_value = Object::GetElement(isolate, self, index);
     bool value_changed = !old_value->SameValue(*new_value);
     if (old_attributes != new_attributes) {
       if (!value_changed) old_value = isolate->factory()->the_hole_value();
-      EnqueueChangeRecord(self, "reconfigured", name, old_value);
+      EnqueueChangeRecord(self, "reconfigure", name, old_value);
     } else if (value_changed) {
-      EnqueueChangeRecord(self, "updated", name, old_value);
+      EnqueueChangeRecord(self, "update", name, old_value);
     }
   }

=======================================
--- /branches/bleeding_edge/src/runtime.cc      Tue Nov  5 15:36:15 2013 UTC
+++ /branches/bleeding_edge/src/runtime.cc      Wed Nov  6 12:14:24 2013 UTC
@@ -1620,7 +1620,7 @@
     Handle<Object> new_value(
         GetPrototypeSkipHiddenPrototypes(isolate, *obj), isolate);
     if (!new_value->SameValue(*old_value)) {
-      JSObject::EnqueueChangeRecord(obj, "prototype",
+      JSObject::EnqueueChangeRecord(obj, "setPrototype",
                                     isolate->factory()->proto_string(),
                                     old_value);
     }
=======================================
--- /branches/bleeding_edge/test/cctest/test-object-observe.cc Thu Oct 17 20:49:45 2013 UTC +++ /branches/bleeding_edge/test/cctest/test-object-observe.cc Wed Nov 6 12:14:24 2013 UTC
@@ -356,17 +356,17 @@
   CompileRun("void 0");
   CHECK_EQ(9, CompileRun("records.length")->Int32Value());
   const RecordExpectation expected_records[] = {
-    { obj, "new", "foo", Handle<Value>() },
-    { obj, "new", "1", Handle<Value>() },
+    { obj, "add", "foo", Handle<Value>() },
+    { obj, "add", "1", Handle<Value>() },
// Note: use 7 not 1 below, as the latter triggers a nifty VS10 compiler bug // where instead of 1.0, a garbage value would be passed into Number::New.
-    { obj, "updated", "foo", Number::New(7) },
-    { obj, "updated", "1", Number::New(2) },
-    { obj, "updated", "1", Number::New(4) },
-    { obj, "new", "1.1", Handle<Value>() },
-    { obj, "deleted", "foo", Number::New(3) },
-    { obj, "deleted", "1", Number::New(5) },
-    { obj, "deleted", "1.1", Number::New(6) }
+    { obj, "update", "foo", Number::New(7) },
+    { obj, "update", "1", Number::New(2) },
+    { obj, "update", "1", Number::New(4) },
+    { obj, "add", "1.1", Handle<Value>() },
+    { obj, "delete", "foo", Number::New(3) },
+    { obj, "delete", "1", Number::New(5) },
+    { obj, "delete", "1.1", Number::New(6) }
   };
   EXPECT_RECORDS(CompileRun("records"), expected_records);
 }
@@ -391,13 +391,13 @@
       "obj.foo = 41;"  // triggers a notification
       "proto.foo = 42;");  // does not trigger a notification
   const RecordExpectation expected_records[] = {
-    { obj, "updated", "foo", Number::New(75) }
+    { obj, "update", "foo", Number::New(75) }
   };
   EXPECT_RECORDS(CompileRun("records"), expected_records);
   obj->SetPrototype(Null(isolate.GetIsolate()));
   CompileRun("obj.foo = 43");
   const RecordExpectation expected_records2[] = {
-    { obj, "new", "foo", Handle<Value>() }
+    { obj, "add", "foo", Handle<Value>() }
   };
   EXPECT_RECORDS(CompileRun("records"), expected_records2);
   obj->SetPrototype(proto);
@@ -407,10 +407,10 @@
       "Object.unobserve(obj, observer);"
       "obj.foo = 44;");
   const RecordExpectation expected_records3[] = {
-    { proto, "new", "bar", Handle<Value>() }
+    { proto, "add", "bar", Handle<Value>() }
// TODO(adamk): The below record should be emitted since proto is observed
     // and has been modified. Not clear if this happens in practice.
-    // { proto, "updated", "foo", Number::New(43) }
+    // { proto, "update", "foo", Number::New(43) }
   };
   EXPECT_RECORDS(CompileRun("records"), expected_records3);
 }
@@ -548,17 +548,17 @@
                  "obj.bar = 'baz';"
                  "objNoCheck.baz = 'quux'");
       const RecordExpectation expected_records2[] = {
-        { instance, "new", "foo", Handle<Value>() },
-        { instance, "updated", "foo", String::New("bar") },
-        { instance, "reconfigured", "foo", Number::New(5) },
-        { instance, "new", "bar", Handle<Value>() },
-        { obj_no_check, "new", "baz", Handle<Value>() },
+        { instance, "add", "foo", Handle<Value>() },
+        { instance, "update", "foo", String::New("bar") },
+        { instance, "reconfigure", "foo", Number::New(5) },
+        { instance, "add", "bar", Handle<Value>() },
+        { obj_no_check, "add", "baz", Handle<Value>() },
       };
       EXPECT_RECORDS(CompileRun("records2"), expected_records2);
     }
     const RecordExpectation expected_records[] = {
-      { instance, "new", "bar", Handle<Value>() },
-      { obj_no_check, "new", "baz", Handle<Value>() }
+      { instance, "add", "bar", Handle<Value>() },
+      { obj_no_check, "add", "baz", Handle<Value>() }
     };
     EXPECT_RECORDS(CompileRun("records"), expected_records);
   }
@@ -595,17 +595,17 @@
                  "obj[8] = 'bar';"
                  "objNoCheck[42] = 'quux'");
       const RecordExpectation expected_records2[] = {
-        { instance, "new", "7", Handle<Value>() },
-        { instance, "updated", "7", String::New("foo") },
-        { instance, "reconfigured", "7", Number::New(5) },
-        { instance, "new", "8", Handle<Value>() },
-        { obj_no_check, "new", "42", Handle<Value>() }
+        { instance, "add", "7", Handle<Value>() },
+        { instance, "update", "7", String::New("foo") },
+        { instance, "reconfigure", "7", Number::New(5) },
+        { instance, "add", "8", Handle<Value>() },
+        { obj_no_check, "add", "42", Handle<Value>() }
       };
       EXPECT_RECORDS(CompileRun("records2"), expected_records2);
     }
     const RecordExpectation expected_records[] = {
-      { instance, "new", "8", Handle<Value>() },
-      { obj_no_check, "new", "42", Handle<Value>() }
+      { instance, "add", "8", Handle<Value>() },
+      { obj_no_check, "add", "42", Handle<Value>() }
     };
     EXPECT_RECORDS(CompileRun("records"), expected_records);
   }
@@ -681,14 +681,14 @@
                "obj[5] = 'baz';"
                "objNoCheck.baz = 'quux'");
     const RecordExpectation expected_records2[] = {
-      { instance, "new", "foo", Handle<Value>() },
-      { instance, "new", "5", Handle<Value>() },
-      { obj_no_check, "new", "baz", Handle<Value>() },
+      { instance, "add", "foo", Handle<Value>() },
+      { instance, "add", "5", Handle<Value>() },
+      { obj_no_check, "add", "baz", Handle<Value>() },
     };
     EXPECT_RECORDS(CompileRun("records2"), expected_records2);
   }
   const RecordExpectation expected_records[] = {
-    { obj_no_check, "new", "baz", Handle<Value>() }
+    { obj_no_check, "add", "baz", Handle<Value>() }
   };
   EXPECT_RECORDS(CompileRun("records"), expected_records);
 }
@@ -713,8 +713,8 @@
     instance->Set(String::New("foo"), String::New("bar"));
     CompileRun("");  // trigger delivery
     const RecordExpectation expected_records2[] = {
-      { instance, "new", "5", Handle<Value>() },
-      { instance, "new", "foo", Handle<Value>() }
+      { instance, "add", "5", Handle<Value>() },
+      { instance, "add", "foo", Handle<Value>() }
     };
     EXPECT_RECORDS(CompileRun("records2"), expected_records2);
   }
=======================================
--- /branches/bleeding_edge/test/mjsunit/harmony/object-observe.js Tue Nov 5 12:25:32 2013 UTC +++ /branches/bleeding_edge/test/mjsunit/harmony/object-observe.js Wed Nov 6 12:14:24 2013 UTC
@@ -187,21 +187,21 @@
 // Multiple records are delivered.
 reset();
 notifier.notify({
-  type: 'updated',
+  type: 'update',
   name: 'foo',
   expando: 1
 });

 notifier.notify({
   object: notifier,  // object property is ignored
-  type: 'deleted',
+  type: 'delete',
   name: 'bar',
   expando2: 'str'
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: 'foo', type: 'updated', expando: 1 },
-  { object: obj, name: 'bar', type: 'deleted', expando2: 'str' }
+  { object: obj, name: 'foo', type: 'update', expando: 1 },
+  { object: obj, name: 'bar', type: 'delete', expando2: 'str' }
 ]);

 // Non-string accept values are coerced to strings
@@ -235,7 +235,7 @@
 Object.observe(obj, observer.callback);
 Object.observe(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertCalled();
@@ -245,7 +245,7 @@
 reset();
 Object.unobserve(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertNotCalled();
@@ -256,7 +256,7 @@
 Object.unobserve(obj, observer.callback);
 Object.unobserve(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertNotCalled();
@@ -265,11 +265,11 @@
 // Re-observation works and only includes changeRecords after of call.
 reset();
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
 });
 Object.observe(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
 });
 records = undefined;
 Object.deliverChangeRecords(observer.callback);
@@ -283,7 +283,7 @@
 obj.id = 1;
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'new', name: 'id' },
+  { object: obj, type: 'add', name: 'id' },
 ]);

 // The empty-string property is observable
@@ -295,9 +295,9 @@
 delete obj[''];
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'new', name: '' },
-  { object: obj, type: 'updated', name: '', oldValue: '' },
-  { object: obj, type: 'deleted', name: '', oldValue: ' ' },
+  { object: obj, type: 'add', name: '' },
+  { object: obj, type: 'update', name: '', oldValue: '' },
+  { object: obj, type: 'delete', name: '', oldValue: ' ' },
 ]);

 // Object.preventExtensions
@@ -309,7 +309,7 @@

 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'new', name: 'baz' },
+  { object: obj, type: 'add', name: 'baz' },
   { object: obj, type: 'preventExtensions' },
 ]);

@@ -344,9 +344,9 @@

 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'reconfigured', name: 'a' },
-  { object: obj, type: 'reconfigured', name: 'b' },
-  { object: obj, type: 'reconfigured', name: 'c' },
+  { object: obj, type: 'reconfigure', name: 'a' },
+  { object: obj, type: 'reconfigure', name: 'b' },
+  { object: obj, type: 'reconfigure', name: 'c' },
   { object: obj, type: 'preventExtensions' },
 ]);

@@ -381,8 +381,8 @@

 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'reconfigured', name: 'a' },
-  { object: obj, type: 'reconfigured', name: 'b' },
+  { object: obj, type: 'reconfigure', name: 'a' },
+  { object: obj, type: 'reconfigure', name: 'b' },
   { object: obj, type: 'preventExtensions' },
 ]);

@@ -399,101 +399,101 @@
 var obj = {};
 Object.observe(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
   val: 1
 });

 Object.unobserve(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
   val: 2
 });

 Object.observe(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
   val: 3
 });

 Object.unobserve(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
   val: 4
 });

 Object.observe(obj, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'updated',
+  type: 'update',
   val: 5
 });

 Object.unobserve(obj, observer.callback);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'updated', val: 1 },
-  { object: obj, type: 'updated', val: 3 },
-  { object: obj, type: 'updated', val: 5 }
+  { object: obj, type: 'update', val: 1 },
+  { object: obj, type: 'update', val: 3 },
+  { object: obj, type: 'update', val: 5 }
 ]);

 // Accept
 reset();
 Object.observe(obj, observer.callback, ['somethingElse']);
 Object.getNotifier(obj).notify({
-  type: 'new'
+  type: 'add'
 });
 Object.getNotifier(obj).notify({
-  type: 'updated'
+  type: 'update'
 });
 Object.getNotifier(obj).notify({
-  type: 'deleted'
+  type: 'delete'
 });
 Object.getNotifier(obj).notify({
-  type: 'reconfigured'
+  type: 'reconfigure'
 });
 Object.getNotifier(obj).notify({
-  type: 'prototype'
+  type: 'setPrototype'
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertNotCalled();

 reset();
-Object.observe(obj, observer.callback, ['new', 'deleted', 'prototype']);
+Object.observe(obj, observer.callback, ['add', 'delete', 'setPrototype']);
 Object.getNotifier(obj).notify({
-  type: 'new'
+  type: 'add'
 });
 Object.getNotifier(obj).notify({
-  type: 'updated'
+  type: 'update'
 });
 Object.getNotifier(obj).notify({
-  type: 'deleted'
+  type: 'delete'
 });
 Object.getNotifier(obj).notify({
-  type: 'deleted'
+  type: 'delete'
 });
 Object.getNotifier(obj).notify({
-  type: 'reconfigured'
+  type: 'reconfigure'
 });
 Object.getNotifier(obj).notify({
-  type: 'prototype'
+  type: 'setPrototype'
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'new' },
-  { object: obj, type: 'deleted' },
-  { object: obj, type: 'deleted' },
-  { object: obj, type: 'prototype' }
+  { object: obj, type: 'add' },
+  { object: obj, type: 'delete' },
+  { object: obj, type: 'delete' },
+  { object: obj, type: 'setPrototype' }
 ]);

 reset();
-Object.observe(obj, observer.callback, ['updated', 'foo']);
+Object.observe(obj, observer.callback, ['update', 'foo']);
 Object.getNotifier(obj).notify({
-  type: 'new'
+  type: 'add'
 });
 Object.getNotifier(obj).notify({
-  type: 'updated'
+  type: 'update'
 });
 Object.getNotifier(obj).notify({
-  type: 'deleted'
+  type: 'delete'
 });
 Object.getNotifier(obj).notify({
   type: 'foo'
@@ -506,7 +506,7 @@
 });
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'updated' },
+  { object: obj, type: 'update' },
   { object: obj, type: 'foo' },
   { object: obj, type: 'foo' }
 ]);
@@ -570,7 +570,7 @@
   Object.observe(thingy, callback, [Thingy.INCREMENT,
                                     Thingy.MULTIPLY,
                                     Thingy.INCREMENT_AND_MULTIPLY,
-                                    'updated']);
+                                    'update']);
 }

 Thingy.unobserve = function(thingy, callback) {
@@ -590,22 +590,22 @@
 Object.deliverChangeRecords(observer.callback);
 Object.deliverChangeRecords(observer2.callback);
 observer.assertCallbackRecords([
-  { object: thingy, type: 'updated', name: 'a', oldValue: 2 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 4 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 7 },
-  { object: thingy, type: 'updated', name: 'a', oldValue: 5 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 8 },
-  { object: thingy, type: 'updated', name: 'a', oldValue: 10 },
-  { object: thingy, type: 'updated', name: 'a', oldValue: 11 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 16 },
-  { object: thingy, type: 'updated', name: 'a', oldValue: 13 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 18 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 2 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 4 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 7 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 5 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 8 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 10 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 11 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 16 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 13 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 18 },
 ]);
 observer2.assertCallbackRecords([
   { object: thingy, type: Thingy.INCREMENT, incremented: 3 },
-  { object: thingy, type: 'updated', name: 'b', oldValue: 7 },
+  { object: thingy, type: 'update', name: 'b', oldValue: 7 },
   { object: thingy, type: Thingy.MULTIPLY, multiplied: 2 },
-  { object: thingy, type: 'updated', name: 'a', oldValue: 10 },
+  { object: thingy, type: 'update', name: 'a', oldValue: 10 },
   {
     object: thingy,
     type: Thingy.INCREMENT_AND_MULTIPLY,
@@ -659,9 +659,9 @@
 Object.deliverChangeRecords(observer.callback);
 Object.deliverChangeRecords(observer2.callback);
 observer.assertCallbackRecords([
-  { object: thingy, type: 'updated', name: '2', oldValue: 3 },
-  { object: thingy, type: 'updated', name: '1', oldValue: 2 },
-  { object: thingy, type: 'updated', name: '0', oldValue: 1 }
+  { object: thingy, type: 'update', name: '2', oldValue: 3 },
+  { object: thingy, type: 'update', name: '1', oldValue: 2 },
+  { object: thingy, type: 'update', name: '0', oldValue: 1 }
 ]);
 observer2.assertCallbackRecords([
{ object: thingy, type: RecursiveThingy.MULTIPLY_FIRST_N, multiplied: 2, n: 3 }
@@ -725,20 +725,20 @@
 Object.observe(obj3, observer.callback);
 Object.observe(obj2, observer.callback);
 Object.getNotifier(obj).notify({
-  type: 'new',
+  type: 'add',
 });
 Object.getNotifier(obj2).notify({
-  type: 'updated',
+  type: 'update',
 });
 Object.getNotifier(obj3).notify({
-  type: 'deleted',
+  type: 'delete',
 });
 Object.observe(obj3, observer.callback);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, type: 'new' },
-  { object: obj2, type: 'updated' },
-  { object: obj3, type: 'deleted' }
+  { object: obj, type: 'add' },
+  { object: obj2, type: 'update' },
+  { object: obj3, type: 'delete' }
 ]);


@@ -805,28 +805,28 @@
 Object.defineProperty(obj, "a", {value: 11, configurable: true});
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: "a", type: "updated", oldValue: 1 },
-  { object: obj, name: "a", type: "updated", oldValue: 2 },
-  { object: obj, name: "a", type: "deleted", oldValue: 3 },
-  { object: obj, name: "a", type: "new" },
-  { object: obj, name: "a", type: "updated", oldValue: 4 },
-  { object: obj, name: "a", type: "updated", oldValue: 5 },
-  { object: obj, name: "a", type: "reconfigured" },
-  { object: obj, name: "a", type: "updated", oldValue: 6 },
-  { object: obj, name: "a", type: "reconfigured", oldValue: 8 },
-  { object: obj, name: "a", type: "reconfigured", oldValue: 7 },
-  { object: obj, name: "a", type: "reconfigured" },
-  { object: obj, name: "a", type: "reconfigured" },
-  { object: obj, name: "a", type: "reconfigured" },
-  { object: obj, name: "a", type: "deleted" },
-  { object: obj, name: "a", type: "new" },
-  { object: obj, name: "a", type: "reconfigured" },
-  { object: obj, name: "a", type: "updated", oldValue: 9 },
-  { object: obj, name: "a", type: "updated", oldValue: 10 },
-  { object: obj, name: "a", type: "updated", oldValue: 11 },
-  { object: obj, name: "a", type: "updated", oldValue: 12 },
-  { object: obj, name: "a", type: "deleted", oldValue: 36 },
-  { object: obj, name: "a", type: "new" },
+  { object: obj, name: "a", type: "update", oldValue: 1 },
+  { object: obj, name: "a", type: "update", oldValue: 2 },
+  { object: obj, name: "a", type: "delete", oldValue: 3 },
+  { object: obj, name: "a", type: "add" },
+  { object: obj, name: "a", type: "update", oldValue: 4 },
+  { object: obj, name: "a", type: "update", oldValue: 5 },
+  { object: obj, name: "a", type: "reconfigure" },
+  { object: obj, name: "a", type: "update", oldValue: 6 },
+  { object: obj, name: "a", type: "reconfigure", oldValue: 8 },
+  { object: obj, name: "a", type: "reconfigure", oldValue: 7 },
+  { object: obj, name: "a", type: "reconfigure" },
+  { object: obj, name: "a", type: "reconfigure" },
+  { object: obj, name: "a", type: "reconfigure" },
+  { object: obj, name: "a", type: "delete" },
+  { object: obj, name: "a", type: "add" },
+  { object: obj, name: "a", type: "reconfigure" },
+  { object: obj, name: "a", type: "update", oldValue: 9 },
+  { object: obj, name: "a", type: "update", oldValue: 10 },
+  { object: obj, name: "a", type: "update", oldValue: 11 },
+  { object: obj, name: "a", type: "update", oldValue: 12 },
+  { object: obj, name: "a", type: "delete", oldValue: 36 },
+  { object: obj, name: "a", type: "add" },
 ]);


@@ -863,28 +863,28 @@
 Object.defineProperty(obj, "1", {value: 11, configurable: true});
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: "1", type: "updated", oldValue: 1 },
-  { object: obj, name: "1", type: "updated", oldValue: 2 },
-  { object: obj, name: "1", type: "deleted", oldValue: 3 },
-  { object: obj, name: "1", type: "new" },
-  { object: obj, name: "1", type: "updated", oldValue: 4 },
-  { object: obj, name: "1", type: "updated", oldValue: 5 },
-  { object: obj, name: "1", type: "reconfigured" },
-  { object: obj, name: "1", type: "updated", oldValue: 6 },
-  { object: obj, name: "1", type: "reconfigured", oldValue: 8 },
-  { object: obj, name: "1", type: "reconfigured", oldValue: 7 },
-  { object: obj, name: "1", type: "reconfigured" },
-  { object: obj, name: "1", type: "reconfigured" },
-  { object: obj, name: "1", type: "reconfigured" },
-  { object: obj, name: "1", type: "deleted" },
-  { object: obj, name: "1", type: "new" },
-  { object: obj, name: "1", type: "reconfigured" },
-  { object: obj, name: "1", type: "updated", oldValue: 9 },
-  { object: obj, name: "1", type: "updated", oldValue: 10 },
-  { object: obj, name: "1", type: "updated", oldValue: 11 },
-  { object: obj, name: "1", type: "updated", oldValue: 12 },
-  { object: obj, name: "1", type: "deleted", oldValue: 36 },
-  { object: obj, name: "1", type: "new" },
+  { object: obj, name: "1", type: "update", oldValue: 1 },
+  { object: obj, name: "1", type: "update", oldValue: 2 },
+  { object: obj, name: "1", type: "delete", oldValue: 3 },
+  { object: obj, name: "1", type: "add" },
+  { object: obj, name: "1", type: "update", oldValue: 4 },
+  { object: obj, name: "1", type: "update", oldValue: 5 },
+  { object: obj, name: "1", type: "reconfigure" },
+  { object: obj, name: "1", type: "update", oldValue: 6 },
+  { object: obj, name: "1", type: "reconfigure", oldValue: 8 },
+  { object: obj, name: "1", type: "reconfigure", oldValue: 7 },
+  { object: obj, name: "1", type: "reconfigure" },
+  { object: obj, name: "1", type: "reconfigure" },
+  { object: obj, name: "1", type: "reconfigure" },
+  { object: obj, name: "1", type: "delete" },
+  { object: obj, name: "1", type: "add" },
+  { object: obj, name: "1", type: "reconfigure" },
+  { object: obj, name: "1", type: "update", oldValue: 9 },
+  { object: obj, name: "1", type: "update", oldValue: 10 },
+  { object: obj, name: "1", type: "update", oldValue: 11 },
+  { object: obj, name: "1", type: "update", oldValue: 12 },
+  { object: obj, name: "1", type: "delete", oldValue: 36 },
+  { object: obj, name: "1", type: "add" },
 ]);


@@ -952,32 +952,32 @@
   Object.defineProperty(obj, prop, {value: 11, configurable: true});
   Object.deliverChangeRecords(observer.callback);
   observer.assertCallbackRecords([
-    { object: obj, name: prop, type: "updated", oldValue: 1 },
-    { object: obj, name: prop, type: "updated", oldValue: 2 },
-    { object: obj, name: prop, type: "deleted", oldValue: 3 },
-    { object: obj, name: prop, type: "new" },
-    { object: obj, name: prop, type: "updated", oldValue: 4 },
-    { object: obj, name: prop, type: "updated", oldValue: 5 },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "updated", oldValue: 6 },
-    { object: obj, name: prop, type: "reconfigured", oldValue: 8 },
-    { object: obj, name: prop, type: "reconfigured", oldValue: 7 },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "deleted" },
-    { object: obj, name: prop, type: "new" },
-    { object: obj, name: prop, type: "deleted" },
-    { object: obj, name: prop, type: "new" },
-    { object: obj, name: prop, type: "reconfigured" },
-    { object: obj, name: prop, type: "updated", oldValue: 9 },
-    { object: obj, name: prop, type: "updated", oldValue: 10 },
-    { object: obj, name: prop, type: "updated", oldValue: 11 },
-    { object: obj, name: prop, type: "updated", oldValue: 12 },
-    { object: obj, name: prop, type: "deleted", oldValue: 36 },
-    { object: obj, name: prop, type: "new" },
+    { object: obj, name: prop, type: "update", oldValue: 1 },
+    { object: obj, name: prop, type: "update", oldValue: 2 },
+    { object: obj, name: prop, type: "delete", oldValue: 3 },
+    { object: obj, name: prop, type: "add" },
+    { object: obj, name: prop, type: "update", oldValue: 4 },
+    { object: obj, name: prop, type: "update", oldValue: 5 },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "update", oldValue: 6 },
+    { object: obj, name: prop, type: "reconfigure", oldValue: 8 },
+    { object: obj, name: prop, type: "reconfigure", oldValue: 7 },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "delete" },
+    { object: obj, name: prop, type: "add" },
+    { object: obj, name: prop, type: "delete" },
+    { object: obj, name: prop, type: "add" },
+    { object: obj, name: prop, type: "reconfigure" },
+    { object: obj, name: prop, type: "update", oldValue: 9 },
+    { object: obj, name: prop, type: "update", oldValue: 10 },
+    { object: obj, name: prop, type: "update", oldValue: 11 },
+    { object: obj, name: prop, type: "update", oldValue: 12 },
+    { object: obj, name: prop, type: "delete", oldValue: 36 },
+    { object: obj, name: prop, type: "add" },
   ]);
   Object.unobserve(obj, observer.callback);
   delete obj[prop];
@@ -1000,11 +1000,11 @@
   obj[prop] = 7;  // ignored
   Object.deliverChangeRecords(observer.callback);
   observer.assertCallbackRecords([
-    { object: obj, name: prop, type: "updated", oldValue: 1 },
-    { object: obj, name: prop, type: "updated", oldValue: 4 },
-    { object: obj, name: prop, type: "updated", oldValue: 5 },
-    { object: obj, name: prop, type: "updated", oldValue: 6 },
-    { object: obj, name: prop, type: "reconfigured" },
+    { object: obj, name: prop, type: "update", oldValue: 1 },
+    { object: obj, name: prop, type: "update", oldValue: 4 },
+    { object: obj, name: prop, type: "update", oldValue: 5 },
+    { object: obj, name: prop, type: "update", oldValue: 6 },
+    { object: obj, name: prop, type: "reconfigure" },
   ]);
   Object.unobserve(obj, observer.callback);
 }
@@ -1064,7 +1064,7 @@
   createProxy(Proxy.create, null),
   createProxy(Proxy.createFunction, function(){}),
 ];
-var properties = ["a", "1", 1, "length", "prototype", "name", "caller"];
+var properties = ["a", "1", 1, "length", "setPrototype", "name", "caller"];

 // Cases that yield non-standard results.
 function blacklisted(obj, prop) {
@@ -1118,31 +1118,31 @@
 Object.defineProperty(arr3, 'length', {value: 1, writable: false});
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: arr, name: '3', type: 'deleted', oldValue: 'd' },
-  { object: arr, name: '2', type: 'deleted' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 4 },
-  { object: arr, name: '1', type: 'deleted', oldValue: 'b' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 2 },
-  { object: arr, name: 'length', type: 'updated', oldValue: 1 },
-  { object: arr, name: 'length', type: 'reconfigured' },
-  { object: arr2, name: '1', type: 'deleted', oldValue: 'beta' },
-  { object: arr2, name: 'length', type: 'updated', oldValue: 2 },
-  { object: arr2, name: 'length', type: 'reconfigured' },
-  { object: arr3, name: '2', type: 'deleted', oldValue: 'goodbye' },
-  { object: arr3, name: '0', type: 'deleted', oldValue: 'hello' },
-  { object: arr3, name: 'length', type: 'updated', oldValue: 6 },
-  { object: arr3, name: 'length', type: 'updated', oldValue: 0 },
-  { object: arr3, name: 'length', type: 'updated', oldValue: 1 },
-  { object: arr3, name: 'length', type: 'updated', oldValue: 2 },
-  { object: arr3, name: 'length', type: 'updated', oldValue: 1 },
-  { object: arr3, name: '4', type: 'new' },
-  { object: arr3, name: '4', type: 'deleted', oldValue: 5 },
+  { object: arr, name: '3', type: 'delete', oldValue: 'd' },
+  { object: arr, name: '2', type: 'delete' },
+  { object: arr, name: 'length', type: 'update', oldValue: 4 },
+  { object: arr, name: '1', type: 'delete', oldValue: 'b' },
+  { object: arr, name: 'length', type: 'update', oldValue: 2 },
+  { object: arr, name: 'length', type: 'update', oldValue: 1 },
+  { object: arr, name: 'length', type: 'reconfigure' },
+  { object: arr2, name: '1', type: 'delete', oldValue: 'beta' },
+  { object: arr2, name: 'length', type: 'update', oldValue: 2 },
+  { object: arr2, name: 'length', type: 'reconfigure' },
+  { object: arr3, name: '2', type: 'delete', oldValue: 'goodbye' },
+  { object: arr3, name: '0', type: 'delete', oldValue: 'hello' },
+  { object: arr3, name: 'length', type: 'update', oldValue: 6 },
+  { object: arr3, name: 'length', type: 'update', oldValue: 0 },
+  { object: arr3, name: 'length', type: 'update', oldValue: 1 },
+  { object: arr3, name: 'length', type: 'update', oldValue: 2 },
+  { object: arr3, name: 'length', type: 'update', oldValue: 1 },
+  { object: arr3, name: '4', type: 'add' },
+  { object: arr3, name: '4', type: 'delete', oldValue: 5 },
   // TODO(rafaelw): It breaks spec compliance to get two records here.
   // When the TODO in v8natives.js::DefineArrayProperty is addressed
   // which prevents DefineProperty from over-writing the magic length
   // property, these will collapse into a single record.
-  { object: arr3, name: 'length', type: 'updated', oldValue: 5 },
-  { object: arr3, name: 'length', type: 'reconfigured' }
+  { object: arr3, name: 'length', type: 'update', oldValue: 5 },
+  { object: arr3, name: 'length', type: 'reconfigure' }
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1155,7 +1155,7 @@
   { object: arr3, type: 'splice', index: 1, removed: [], addedCount: 1 },
   { object: arr3, type: 'splice', index: 1, removed: [,], addedCount: 0 },
   { object: arr3, type: 'splice', index: 1, removed: [], addedCount: 4 },
-  { object: arr3, name: '4', type: 'new' },
+  { object: arr3, name: '4', type: 'add' },
{ object: arr3, type: 'splice', index: 1, removed: [,,,5], addedCount: 0 }
 ]);

@@ -1173,8 +1173,8 @@
 slow_arr.length = 100;
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
- { object: slow_arr, name: '500000000', type: 'deleted', oldValue: 'hello' }, - { object: slow_arr, name: 'length', type: 'updated', oldValue: 1000000000 }, + { object: slow_arr, name: '500000000', type: 'delete', oldValue: 'hello' }, + { object: slow_arr, name: 'length', type: 'update', oldValue: 1000000000 },
 ]);
 Object.deliverChangeRecords(slowSpliceCallback);
 assertEquals(spliceRecords.length, 1);
@@ -1200,11 +1200,11 @@
 }
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: "a0", type: "new" },
-  { object: obj, name: "a1", type: "new" },
-  { object: obj, name: "a2", type: "new" },
-  { object: obj, name: "a3", type: "new" },
-  { object: obj, name: "a4", type: "new" },
+  { object: obj, name: "a0", type: "add" },
+  { object: obj, name: "a1", type: "add" },
+  { object: obj, name: "a2", type: "add" },
+  { object: obj, name: "a3", type: "add" },
+  { object: obj, name: "a4", type: "add" },
 ]);

 reset();
@@ -1215,11 +1215,11 @@
 }
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: "0", type: "new" },
-  { object: obj, name: "1", type: "new" },
-  { object: obj, name: "2", type: "new" },
-  { object: obj, name: "3", type: "new" },
-  { object: obj, name: "4", type: "new" },
+  { object: obj, name: "0", type: "add" },
+  { object: obj, name: "1", type: "add" },
+  { object: obj, name: "2", type: "add" },
+  { object: obj, name: "3", type: "add" },
+  { object: obj, name: "4", type: "add" },
 ]);


@@ -1236,15 +1236,15 @@
 arr[50] = 30; // no length change expected
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: arr, name: '3', type: 'new' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 3 },
-  { object: arr, name: '100', type: 'new' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 4 },
-  { object: arr, name: '200', type: 'new' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 101 },
-  { object: arr, name: '400', type: 'new' },
-  { object: arr, name: 'length', type: 'updated', oldValue: 201 },
-  { object: arr, name: '50', type: 'new' },
+  { object: arr, name: '3', type: 'add' },
+  { object: arr, name: 'length', type: 'update', oldValue: 3 },
+  { object: arr, name: '100', type: 'add' },
+  { object: arr, name: 'length', type: 'update', oldValue: 4 },
+  { object: arr, name: '200', type: 'add' },
+  { object: arr, name: 'length', type: 'update', oldValue: 101 },
+  { object: arr, name: '400', type: 'add' },
+  { object: arr, name: 'length', type: 'update', oldValue: 201 },
+  { object: arr, name: '50', type: 'add' },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1252,7 +1252,7 @@
   { object: arr, type: 'splice', index: 4, removed: [], addedCount: 97 },
{ object: arr, type: 'splice', index: 101, removed: [], addedCount: 100 }, { object: arr, type: 'splice', index: 201, removed: [], addedCount: 200 },
-  { object: arr, type: 'new', name: '50' },
+  { object: arr, type: 'add', name: '50' },
 ]);


@@ -1269,12 +1269,12 @@
 array.push(5);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '2', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 3 },
-  { object: array, name: '4', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 4 },
+  { object: array, name: '2', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 3 },
+  { object: array, name: '4', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 4 },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1290,10 +1290,10 @@
 array.pop();
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '1', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '0', type: 'deleted', oldValue: 1 },
-  { object: array, name: 'length', type: 'updated', oldValue: 1 },
+  { object: array, name: '1', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '0', type: 'delete', oldValue: 1 },
+  { object: array, name: 'length', type: 'update', oldValue: 1 },
 ]);

 // Shift
@@ -1304,11 +1304,11 @@
 array.shift();
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '0', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '0', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 1 },
+  { object: array, name: '0', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '0', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 1 },
 ]);

 // Unshift
@@ -1318,11 +1318,11 @@
 array.unshift(3, 4);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'new' },
-  { object: array, name: '0', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'updated', oldValue: 2 },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'add' },
+  { object: array, name: '0', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
 ]);

 // Splice
@@ -1332,10 +1332,10 @@
 array.splice(1, 1, 4, 5);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 3 },
-  { object: array, name: '1', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'updated', oldValue: 3 },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 3 },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'update', oldValue: 3 },
 ]);

 // Sort
@@ -1348,11 +1348,11 @@
 assertEquals(3, array[2]);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '1', type: 'updated', oldValue: 2 },
-  { object: array, name: '0', type: 'updated', oldValue: 3 },
-  { object: array, name: '2', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'updated', oldValue: 3 },
-  { object: array, name: '0', type: 'updated', oldValue: 2 },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
+  { object: array, name: '0', type: 'update', oldValue: 3 },
+  { object: array, name: '2', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'update', oldValue: 3 },
+  { object: array, name: '0', type: 'update', oldValue: 2 },
 ]);

 // Splice emitted after Array mutation methods
@@ -1434,9 +1434,9 @@
 Array.prototype.push.call(array, 3, 4);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '2', type: 'new' },
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
+  { object: array, name: '2', type: 'add' },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
 ]);

 // Pop
@@ -1449,10 +1449,10 @@
 array.pop();
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '1', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '0', type: 'deleted', oldValue: 1 },
-  { object: array, name: 'length', type: 'updated', oldValue: 1 },
+  { object: array, name: '1', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '0', type: 'delete', oldValue: 1 },
+  { object: array, name: 'length', type: 'update', oldValue: 1 },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1470,11 +1470,11 @@
 array.shift();
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '0', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '0', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 1 },
+  { object: array, name: '0', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '0', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 1 },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1491,17 +1491,17 @@
 array.unshift(5);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'new' },
-  { object: array, name: '0', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'updated', oldValue: 2 },
-  { object: array, name: '4', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 4 },
-  { object: array, name: '3', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'updated', oldValue: 4 },
-  { object: array, name: '0', type: 'updated', oldValue: 3 },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'add' },
+  { object: array, name: '0', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
+  { object: array, name: '4', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 4 },
+  { object: array, name: '3', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'update', oldValue: 4 },
+  { object: array, name: '0', type: 'update', oldValue: 3 },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1520,21 +1520,21 @@
 array.splice(2, 0);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '4', type: 'new' },
-  { object: array, name: 'length', type: 'updated', oldValue: 3 },
-  { object: array, name: '3', type: 'new' },
-  { object: array, name: '1', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'updated', oldValue: 3 },
+  { object: array, name: '4', type: 'add' },
+  { object: array, name: 'length', type: 'update', oldValue: 3 },
+  { object: array, name: '3', type: 'add' },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'update', oldValue: 3 },

-  { object: array, name: '0', type: 'updated', oldValue: 1 },
-  { object: array, name: '1', type: 'updated', oldValue: 4 },
-  { object: array, name: '2', type: 'updated', oldValue: 5 },
-  { object: array, name: '4', type: 'deleted', oldValue: 3 },
-  { object: array, name: '3', type: 'deleted', oldValue: 2 },
-  { object: array, name: 'length', type: 'updated', oldValue: 5 },
+  { object: array, name: '0', type: 'update', oldValue: 1 },
+  { object: array, name: '1', type: 'update', oldValue: 4 },
+  { object: array, name: '2', type: 'update', oldValue: 5 },
+  { object: array, name: '4', type: 'delete', oldValue: 3 },
+  { object: array, name: '3', type: 'delete', oldValue: 2 },
+  { object: array, name: 'length', type: 'update', oldValue: 5 },

-  { object: array, name: '1', type: 'updated', oldValue: 2 },
-  { object: array, name: '2', type: 'updated', oldValue: 3 },
+  { object: array, name: '1', type: 'update', oldValue: 2 },
+  { object: array, name: '2', type: 'update', oldValue: 3 },
 ]);
 Object.deliverChangeRecords(observer2.callback);
 observer2.assertCallbackRecords([
@@ -1553,8 +1553,8 @@
 array.splice(0, 1);
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: array, name: '0', type: 'deleted', oldValue: 0 },
-  { object: array, name: 'length', type: 'updated', oldValue: 1},
+  { object: array, name: '0', type: 'delete', oldValue: 0 },
+  { object: array, name: 'length', type: 'update', oldValue: 1},
 ]);


@@ -1572,10 +1572,10 @@
 // once we support observing the global object.
 Object.deliverChangeRecords(observer.callback);
 observer.assertCallbackRecords([
-  { object: obj, name: '__proto__', type: 'prototype',
+  { object: obj, name: '__proto__', type: 'setPrototype',
     oldValue: Object.prototype },
-  { object: obj, name: '__proto__', type: 'prototype', oldValue: p },
-  { object: obj, name: '__proto__', type: 'new' },
+  { object: obj, name: '__proto__', type: 'setPrototype', oldValue: p },
+  { object: obj, name: '__proto__', type: 'add' },
 ]);


@@ -1594,7 +1594,7 @@
 // lazy creation of oldValue
 assertSame(fun, observer.records[0].object);
 assertEquals('prototype', observer.records[0].name);
-assertEquals('updated', observer.records[0].type);
+assertEquals('update', observer.records[0].type);
 // The only existing reference to the oldValue object is in this
 // record, so to test that lazy creation happened correctly
 // we compare its constructor to our function (one of the invariants
@@ -1602,8 +1602,8 @@
 assertSame(fun, observer.records[0].oldValue.constructor);
 observer.records.splice(0, 1);
 observer.assertCallbackRecords([
-  { object: fun, name: 'prototype', type: 'updated', oldValue: myproto },
-  { object: fun, name: 'prototype', type: 'updated', oldValue: 7 },
+  { object: fun, name: 'prototype', type: 'update', oldValue: myproto },
+  { object: fun, name: 'prototype', type: 'update', oldValue: 7 },
 ]);

 // Function.prototype should not be observable except on the object itself
@@ -1649,7 +1649,7 @@
   setElement(arr, prop, 989898);
   Object.deliverChangeRecords(observer.callback);
   observer.assertCallbackRecords([
-    { object: arr, name: "" + prop, type: 'updated', oldValue: 5 }
+    { object: arr, name: "" + prop, type: 'update', oldValue: 5 }
   ]);
 }

@@ -1706,7 +1706,7 @@
     var lengthRecord = observer.records[count];
     assertSame(arr, lengthRecord.object);
     assertEquals('length', lengthRecord.name);
-    assertEquals('updated', lengthRecord.type);
+    assertEquals('update', lengthRecord.type);
     assertSame(oldSize, lengthRecord.oldValue);
   }
 }

--
--
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.

Reply via email to