Revision: 13649
Author:   [email protected]
Date:     Tue Feb 12 06:33:08 2013
Log: Split AccessorInfo into DeclaredAccessorInfo and ExecutableAccessorInfo

[email protected]
BUG=

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

Modified:
 /branches/bleeding_edge/include/v8.h
 /branches/bleeding_edge/src/accessors.cc
 /branches/bleeding_edge/src/api.cc
 /branches/bleeding_edge/src/arm/stub-cache-arm.cc
 /branches/bleeding_edge/src/factory.cc
 /branches/bleeding_edge/src/factory.h
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc
 /branches/bleeding_edge/src/ic.cc
 /branches/bleeding_edge/src/log.cc
 /branches/bleeding_edge/src/mark-compact.cc
 /branches/bleeding_edge/src/objects-debug.cc
 /branches/bleeding_edge/src/objects-inl.h
 /branches/bleeding_edge/src/objects-printer.cc
 /branches/bleeding_edge/src/objects.cc
 /branches/bleeding_edge/src/objects.h
 /branches/bleeding_edge/src/stub-cache.cc
 /branches/bleeding_edge/src/stub-cache.h
 /branches/bleeding_edge/src/x64/stub-cache-x64.cc
 /branches/bleeding_edge/tools/grokdump.py

=======================================
--- /branches/bleeding_edge/include/v8.h        Fri Feb  8 04:41:55 2013
+++ /branches/bleeding_edge/include/v8.h        Tue Feb 12 06:33:08 2013
@@ -4195,7 +4195,7 @@
   static const int kNodeIsIndependentShift = 4;
   static const int kNodeIsPartiallyDependentShift = 5;

-  static const int kJSObjectType = 0xab;
+  static const int kJSObjectType = 0xad;
   static const int kFirstNonstringType = 0x80;
   static const int kOddballType = 0x82;
   static const int kForeignType = 0x85;
=======================================
--- /branches/bleeding_edge/src/accessors.cc    Mon Dec 10 02:53:57 2012
+++ /branches/bleeding_edge/src/accessors.cc    Tue Feb 12 06:33:08 2013
@@ -880,7 +880,7 @@
     int index,
     PropertyAttributes attributes) {
   Factory* factory = name->GetIsolate()->factory();
-  Handle<AccessorInfo> info = factory->NewAccessorInfo();
+ Handle<ExecutableAccessorInfo> info = factory->NewExecutableAccessorInfo();
   info->set_property_attributes(attributes);
   info->set_all_can_read(true);
   info->set_all_can_write(true);
=======================================
--- /branches/bleeding_edge/src/api.cc  Fri Feb  8 04:41:55 2013
+++ /branches/bleeding_edge/src/api.cc  Tue Feb 12 06:33:08 2013
@@ -1106,7 +1106,8 @@
       v8::AccessControl settings,
       v8::PropertyAttribute attributes,
       v8::Handle<AccessorSignature> signature) {
-  i::Handle<i::AccessorInfo> obj = FACTORY->NewAccessorInfo();
+  i::Handle<i::ExecutableAccessorInfo> obj =
+      FACTORY->NewExecutableAccessorInfo();
   SET_FIELD_WRAPPED(obj, set_getter, getter);
   SET_FIELD_WRAPPED(obj, set_setter, setter);
   if (data.IsEmpty()) data = v8::Undefined();
=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Wed Feb 6 03:48:29 2013 +++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Tue Feb 12 06:33:08 2013
@@ -1210,14 +1210,15 @@
 }


-void StubCompiler::GenerateDictionaryLoadCallback(Register receiver,
-                                                  Register name_reg,
-                                                  Register scratch1,
-                                                  Register scratch2,
-                                                  Register scratch3,
- Handle<AccessorInfo> callback,
-                                                  Handle<String> name,
-                                                  Label* miss) {
+void StubCompiler::GenerateDictionaryLoadCallback(
+    Register receiver,
+    Register name_reg,
+    Register scratch1,
+    Register scratch2,
+    Register scratch3,
+    Handle<ExecutableAccessorInfo> callback,
+    Handle<String> name,
+    Label* miss) {
   ASSERT(!receiver.is(scratch1));
   ASSERT(!receiver.is(scratch2));
   ASSERT(!receiver.is(scratch3));
@@ -1249,17 +1250,18 @@
 }


-void StubCompiler::GenerateLoadCallback(Handle<JSObject> object,
-                                        Handle<JSObject> holder,
-                                        Register receiver,
-                                        Register name_reg,
-                                        Register scratch1,
-                                        Register scratch2,
-                                        Register scratch3,
-                                        Register scratch4,
-                                        Handle<AccessorInfo> callback,
-                                        Handle<String> name,
-                                        Label* miss) {
+void StubCompiler::GenerateLoadCallback(
+    Handle<JSObject> object,
+    Handle<JSObject> holder,
+    Register receiver,
+    Register name_reg,
+    Register scratch1,
+    Register scratch2,
+    Register scratch3,
+    Register scratch4,
+    Handle<ExecutableAccessorInfo> callback,
+    Handle<String> name,
+    Label* miss) {
   // Check that the receiver isn't a smi.
   __ JumpIfSmi(receiver, miss);

@@ -1278,7 +1280,8 @@
   __ mov(scratch2, sp);  // scratch2 = AccessorInfo::args_
   if (heap()->InNewSpace(callback->data())) {
     __ Move(scratch3, callback);
-    __ ldr(scratch3, FieldMemOperand(scratch3, AccessorInfo::kDataOffset));
+    __ ldr(scratch3,
+           FieldMemOperand(scratch3, ExecutableAccessorInfo::kDataOffset));
   } else {
     __ Move(scratch3, Handle<Object>(callback->data()));
   }
@@ -1331,8 +1334,9 @@
     if (lookup->IsField()) {
       compile_followup_inline = true;
     } else if (lookup->type() == CALLBACKS &&
-               lookup->GetCallbackObject()->IsAccessorInfo()) {
- AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
+               lookup->GetCallbackObject()->IsExecutableAccessorInfo()) {
+      ExecutableAccessorInfo* callback =
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject());
       compile_followup_inline = callback->getter() != NULL &&
           callback->IsCompatibleReceiver(*object);
     }
@@ -1413,8 +1417,8 @@
       // We found CALLBACKS property in prototype chain of interceptor's
       // holder.
       ASSERT(lookup->type() == CALLBACKS);
-      Handle<AccessorInfo> callback(
-          AccessorInfo::cast(lookup->GetCallbackObject()));
+      Handle<ExecutableAccessorInfo> callback(
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject()));
       ASSERT(callback->getter() != NULL);

       // Tail call to runtime.
@@ -1430,7 +1434,7 @@
         __ push(holder_reg);
       }
       __ ldr(scratch3,
-             FieldMemOperand(scratch2, AccessorInfo::kDataOffset));
+ FieldMemOperand(scratch2, ExecutableAccessorInfo::kDataOffset));
       __ mov(scratch1, Operand(ExternalReference::isolate_address()));
       __ Push(scratch3, scratch1, scratch2, name_reg);

@@ -2698,7 +2702,7 @@
     Handle<String> name,
     Handle<JSObject> receiver,
     Handle<JSObject> holder,
-    Handle<AccessorInfo> callback) {
+    Handle<ExecutableAccessorInfo> callback) {
   // ----------- S t a t e -------------
   //  -- r0    : value
   //  -- r1    : receiver
=======================================
--- /branches/bleeding_edge/src/factory.cc      Wed Jan  9 02:30:54 2013
+++ /branches/bleeding_edge/src/factory.cc      Tue Feb 12 06:33:08 2013
@@ -363,9 +363,19 @@
 }


-Handle<AccessorInfo> Factory::NewAccessorInfo() {
-  Handle<AccessorInfo> info =
-      Handle<AccessorInfo>::cast(NewStruct(ACCESSOR_INFO_TYPE));
+Handle<DeclaredAccessorInfo> Factory::NewDeclaredAccessorInfo() {
+  Handle<DeclaredAccessorInfo> info =
+      Handle<DeclaredAccessorInfo>::cast(
+          NewStruct(DECLARED_ACCESSOR_INFO_TYPE));
+ info->set_flag(0); // Must clear the flag, it was initialized as undefined.
+  return info;
+}
+
+
+Handle<ExecutableAccessorInfo> Factory::NewExecutableAccessorInfo() {
+  Handle<ExecutableAccessorInfo> info =
+      Handle<ExecutableAccessorInfo>::cast(
+          NewStruct(EXECUTABLE_ACCESSOR_INFO_TYPE));
info->set_flag(0); // Must clear the flag, it was initialized as undefined.
   return info;
 }
=======================================
--- /branches/bleeding_edge/src/factory.h       Wed Jan  9 02:30:54 2013
+++ /branches/bleeding_edge/src/factory.h       Tue Feb 12 06:33:08 2013
@@ -202,7 +202,9 @@
   // the old generation).
   Handle<Struct> NewStruct(InstanceType type);

-  Handle<AccessorInfo> NewAccessorInfo();
+  Handle<DeclaredAccessorInfo> NewDeclaredAccessorInfo();
+
+  Handle<ExecutableAccessorInfo> NewExecutableAccessorInfo();

   Handle<Script> NewScript(Handle<String> source);

=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Wed Feb 6 03:48:29 2013 +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Tue Feb 12 06:33:08 2013
@@ -1066,14 +1066,15 @@
 }


-void StubCompiler::GenerateDictionaryLoadCallback(Register receiver,
-                                                  Register name_reg,
-                                                  Register scratch1,
-                                                  Register scratch2,
-                                                  Register scratch3,
- Handle<AccessorInfo> callback,
-                                                  Handle<String> name,
-                                                  Label* miss) {
+void StubCompiler::GenerateDictionaryLoadCallback(
+    Register receiver,
+    Register name_reg,
+    Register scratch1,
+    Register scratch2,
+    Register scratch3,
+    Handle<ExecutableAccessorInfo> callback,
+    Handle<String> name,
+    Label* miss) {
   ASSERT(!receiver.is(scratch2));
   ASSERT(!receiver.is(scratch3));
   Register dictionary = scratch1;
@@ -1118,17 +1119,18 @@
 }


-void StubCompiler::GenerateLoadCallback(Handle<JSObject> object,
-                                        Handle<JSObject> holder,
-                                        Register receiver,
-                                        Register name_reg,
-                                        Register scratch1,
-                                        Register scratch2,
-                                        Register scratch3,
-                                        Register scratch4,
-                                        Handle<AccessorInfo> callback,
-                                        Handle<String> name,
-                                        Label* miss) {
+void StubCompiler::GenerateLoadCallback(
+    Handle<JSObject> object,
+    Handle<JSObject> holder,
+    Register receiver,
+    Register name_reg,
+    Register scratch1,
+    Register scratch2,
+    Register scratch3,
+    Register scratch4,
+    Handle<ExecutableAccessorInfo> callback,
+    Handle<String> name,
+    Label* miss) {
   // Check that the receiver isn't a smi.
   __ JumpIfSmi(receiver, miss);

@@ -1152,7 +1154,7 @@
   // Push data from AccessorInfo.
   if (isolate()->heap()->InNewSpace(callback->data())) {
     __ mov(scratch1, Immediate(callback));
-    __ push(FieldOperand(scratch1, AccessorInfo::kDataOffset));
+    __ push(FieldOperand(scratch1, ExecutableAccessorInfo::kDataOffset));
   } else {
     __ push(Immediate(Handle<Object>(callback->data())));
   }
@@ -1232,8 +1234,9 @@
     if (lookup->IsField()) {
       compile_followup_inline = true;
     } else if (lookup->type() == CALLBACKS &&
-               lookup->GetCallbackObject()->IsAccessorInfo()) {
- AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
+               lookup->GetCallbackObject()->IsExecutableAccessorInfo()) {
+      ExecutableAccessorInfo* callback =
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject());
       compile_followup_inline = callback->getter() != NULL &&
           callback->IsCompatibleReceiver(*object);
     }
@@ -1325,8 +1328,8 @@
       // We found CALLBACKS property in prototype chain of interceptor's
       // holder.
       ASSERT(lookup->type() == CALLBACKS);
-      Handle<AccessorInfo> callback(
-          AccessorInfo::cast(lookup->GetCallbackObject()));
+      Handle<ExecutableAccessorInfo> callback(
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject()));
       ASSERT(callback->getter() != NULL);

       // Tail call to runtime.
@@ -1336,7 +1339,7 @@
       __ push(receiver);
       __ push(holder_reg);
       __ mov(holder_reg, Immediate(callback));
-      __ push(FieldOperand(holder_reg, AccessorInfo::kDataOffset));
+ __ push(FieldOperand(holder_reg, ExecutableAccessorInfo::kDataOffset));
       __ push(Immediate(reinterpret_cast<int>(isolate())));
       __ push(holder_reg);
       __ push(name_reg);
@@ -2656,7 +2659,7 @@
     Handle<String> name,
     Handle<JSObject> receiver,
     Handle<JSObject> holder,
-    Handle<AccessorInfo> callback) {
+    Handle<ExecutableAccessorInfo> callback) {
   // ----------- S t a t e -------------
   //  -- eax    : value
   //  -- ecx    : name
=======================================
--- /branches/bleeding_edge/src/ic.cc   Tue Feb 12 02:56:04 2013
+++ /branches/bleeding_edge/src/ic.cc   Tue Feb 12 06:33:08 2013
@@ -1053,8 +1053,9 @@
       return isolate()->stub_cache()->ComputeLoadNormal();
     case CALLBACKS: {
       Handle<Object> callback(lookup->GetCallbackObject());
-      if (callback->IsAccessorInfo()) {
-        Handle<AccessorInfo> info = Handle<AccessorInfo>::cast(callback);
+      if (callback->IsExecutableAccessorInfo()) {
+        Handle<ExecutableAccessorInfo> info =
+            Handle<ExecutableAccessorInfo>::cast(callback);
         if (v8::ToCData<Address>(info->getter()) == 0) break;
         if (!info->IsCompatibleReceiver(*receiver)) break;
         return isolate()->stub_cache()->ComputeLoadCallback(
@@ -1067,6 +1068,8 @@
         return isolate()->stub_cache()->ComputeLoadViaGetter(
             name, receiver, holder, Handle<JSFunction>::cast(getter));
       }
+      // TODO(dcarney): Handle correctly.
+      if (callback->IsDeclaredAccessorInfo()) break;
       ASSERT(callback->IsForeign());
       // No IC support for old-style native accessors.
       break;
@@ -1282,9 +1285,10 @@
     }
     case CALLBACKS: {
       Handle<Object> callback_object(lookup->GetCallbackObject());
-      if (!callback_object->IsAccessorInfo()) break;
-      Handle<AccessorInfo> callback =
-          Handle<AccessorInfo>::cast(callback_object);
+      // TODO(dcarney): Handle DeclaredAccessorInfo correctly.
+      if (!callback_object->IsExecutableAccessorInfo()) break;
+      Handle<ExecutableAccessorInfo> callback =
+          Handle<ExecutableAccessorInfo>::cast(callback_object);
       if (v8::ToCData<Address>(callback->getter()) == 0) break;
       if (!callback->IsCompatibleReceiver(*receiver)) break;
       return isolate()->stub_cache()->ComputeKeyedLoadCallback(
@@ -1475,8 +1479,9 @@
       return isolate()->stub_cache()->ComputeStoreNormal(strict_mode);
     case CALLBACKS: {
       Handle<Object> callback(lookup->GetCallbackObject());
-      if (callback->IsAccessorInfo()) {
-        Handle<AccessorInfo> info = Handle<AccessorInfo>::cast(callback);
+      if (callback->IsExecutableAccessorInfo()) {
+        Handle<ExecutableAccessorInfo> info =
+            Handle<ExecutableAccessorInfo>::cast(callback);
         if (v8::ToCData<Address>(info->setter()) == 0) break;
         if (!holder->HasFastProperties()) break;
         if (!info->IsCompatibleReceiver(*receiver)) break;
@@ -1491,6 +1496,8 @@
             name, receiver, holder, Handle<JSFunction>::cast(setter),
             strict_mode);
       }
+      // TODO(dcarney): Handle correctly.
+      if (callback->IsDeclaredAccessorInfo()) break;
       ASSERT(callback->IsForeign());
       // No IC support for old-style native accessors.
       break;
=======================================
--- /branches/bleeding_edge/src/log.cc  Mon Feb 11 05:02:20 2013
+++ /branches/bleeding_edge/src/log.cc  Tue Feb 12 06:33:08 2013
@@ -1647,8 +1647,8 @@
   HeapIterator iterator(heap);
   AssertNoAllocation no_alloc;
for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
-    if (!obj->IsAccessorInfo()) continue;
-    AccessorInfo* ai = AccessorInfo::cast(obj);
+    if (!obj->IsExecutableAccessorInfo()) continue;
+    ExecutableAccessorInfo* ai = ExecutableAccessorInfo::cast(obj);
     if (!ai->name()->IsString()) continue;
     String* name = String::cast(ai->name());
     Address getter_entry = v8::ToCData<Address>(ai->getter());
=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Mon Feb 11 07:11:00 2013
+++ /branches/bleeding_edge/src/mark-compact.cc Tue Feb 12 06:33:08 2013
@@ -287,7 +287,8 @@
           case TYPE_FEEDBACK_INFO_TYPE:
             object->Iterate(this);
             break;
-          case ACCESSOR_INFO_TYPE:
+          case DECLARED_ACCESSOR_INFO_TYPE:
+          case EXECUTABLE_ACCESSOR_INFO_TYPE:
           case BYTE_ARRAY_TYPE:
           case CALL_HANDLER_INFO_TYPE:
           case CODE_TYPE:
=======================================
--- /branches/bleeding_edge/src/objects-debug.cc        Mon Feb  4 02:56:50 2013
+++ /branches/bleeding_edge/src/objects-debug.cc        Tue Feb 12 06:33:08 2013
@@ -707,14 +707,32 @@


 void AccessorInfo::AccessorInfoVerify() {
-  CHECK(IsAccessorInfo());
-  VerifyPointer(getter());
-  VerifyPointer(setter());
   VerifyPointer(name());
-  VerifyPointer(data());
   VerifyPointer(flag());
   VerifyPointer(expected_receiver_type());
 }
+
+
+void ExecutableAccessorInfo::ExecutableAccessorInfoVerify() {
+  CHECK(IsExecutableAccessorInfo());
+  AccessorInfoVerify();
+  VerifyPointer(getter());
+  VerifyPointer(setter());
+  VerifyPointer(data());
+}
+
+
+void DeclaredAccessorDescriptor::DeclaredAccessorDescriptorVerify() {
+  CHECK(IsDeclaredAccessorDescriptor());
+  VerifySmiField(kInternalFieldOffset);
+}
+
+
+void DeclaredAccessorInfo::DeclaredAccessorInfoVerify() {
+  CHECK(IsDeclaredAccessorInfo());
+  AccessorInfoVerify();
+  VerifyPointer(descriptor());
+}


 void AccessorPair::AccessorPairVerify() {
=======================================
--- /branches/bleeding_edge/src/objects-inl.h   Thu Jan 31 02:50:42 2013
+++ /branches/bleeding_edge/src/objects-inl.h   Tue Feb 12 06:33:08 2013
@@ -140,6 +140,11 @@
       HeapObject::cast(this)->map() ==
       HeapObject::cast(this)->GetHeap()->external_map();
 }
+
+
+bool Object::IsAccessorInfo() {
+  return IsExecutableAccessorInfo() || IsDeclaredAccessorInfo();
+}


 bool Object::IsInstanceOf(FunctionTemplateInfo* expected) {
@@ -2447,6 +2452,7 @@
 CAST_ACCESSOR(ExternalDoubleArray)
 CAST_ACCESSOR(ExternalPixelArray)
 CAST_ACCESSOR(Struct)
+CAST_ACCESSOR(AccessorInfo)


 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name)
@@ -4102,14 +4108,20 @@

 ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset)

-ACCESSORS(AccessorInfo, getter, Object, kGetterOffset)
-ACCESSORS(AccessorInfo, setter, Object, kSetterOffset)
-ACCESSORS(AccessorInfo, data, Object, kDataOffset)
 ACCESSORS(AccessorInfo, name, Object, kNameOffset)
 ACCESSORS_TO_SMI(AccessorInfo, flag, kFlagOffset)
 ACCESSORS(AccessorInfo, expected_receiver_type, Object,
           kExpectedReceiverTypeOffset)

+ACCESSORS(DeclaredAccessorDescriptor, internal_field, Smi, kInternalFieldOffset)
+
+ACCESSORS(DeclaredAccessorInfo, descriptor, DeclaredAccessorDescriptor,
+          kDescriptorOffset)
+
+ACCESSORS(ExecutableAccessorInfo, getter, Object, kGetterOffset)
+ACCESSORS(ExecutableAccessorInfo, setter, Object, kSetterOffset)
+ACCESSORS(ExecutableAccessorInfo, data, Object, kDataOffset)
+
 ACCESSORS(AccessorPair, getter, Object, kGetterOffset)
 ACCESSORS(AccessorPair, setter, Object, kSetterOffset)

=======================================
--- /branches/bleeding_edge/src/objects-printer.cc      Wed Jan  9 08:34:45 2013
+++ /branches/bleeding_edge/src/objects-printer.cc      Tue Feb 12 06:33:08 2013
@@ -874,18 +874,36 @@
 }


-void AccessorInfo::AccessorInfoPrint(FILE* out) {
-  HeapObject::PrintHeader(out, "AccessorInfo");
+void ExecutableAccessorInfo::ExecutableAccessorInfoPrint(FILE* out) {
+  HeapObject::PrintHeader(out, "ExecutableAccessorInfo");
+  PrintF(out, "\n - name: ");
+  name()->ShortPrint(out);
+  PrintF(out, "\n - flag: ");
+  flag()->ShortPrint(out);
   PrintF(out, "\n - getter: ");
   getter()->ShortPrint(out);
   PrintF(out, "\n - setter: ");
   setter()->ShortPrint(out);
-  PrintF(out, "\n - name: ");
-  name()->ShortPrint(out);
   PrintF(out, "\n - data: ");
   data()->ShortPrint(out);
+}
+
+
+void DeclaredAccessorInfo::DeclaredAccessorInfoPrint(FILE* out) {
+  HeapObject::PrintHeader(out, "DeclaredAccessorInfo");
+  PrintF(out, "\n - name: ");
+  name()->ShortPrint(out);
   PrintF(out, "\n - flag: ");
   flag()->ShortPrint(out);
+  PrintF(out, "\n - descriptor: ");
+  descriptor()->ShortPrint(out);
+}
+
+
+void DeclaredAccessorDescriptor::DeclaredAccessorDescriptorPrint(FILE* out) {
+  HeapObject::PrintHeader(out, "DeclaredAccessorDescriptor");
+  PrintF(out, "\n - internal field: ");
+  internal_field()->ShortPrint(out);
 }


=======================================
--- /branches/bleeding_edge/src/objects.cc      Fri Feb  8 06:32:38 2013
+++ /branches/bleeding_edge/src/objects.cc      Tue Feb 12 06:33:08 2013
@@ -180,8 +180,8 @@
   }

   // api style callbacks.
-  if (structure->IsAccessorInfo()) {
-    AccessorInfo* data = AccessorInfo::cast(structure);
+  if (structure->IsExecutableAccessorInfo()) {
+    ExecutableAccessorInfo* data = ExecutableAccessorInfo::cast(structure);
     if (!data->IsCompatibleReceiver(receiver)) {
       Handle<Object> name_handle(name);
       Handle<Object> receiver_handle(receiver);
@@ -226,6 +226,11 @@
     // Getter is not a function.
     return isolate->heap()->undefined_value();
   }
+
+  // TODO(dcarney): Handle correctly.
+  if (structure->IsDeclaredAccessorInfo()) {
+    return isolate->heap()->undefined_value();
+  }

   UNREACHABLE();
   return NULL;
@@ -2003,9 +2008,9 @@
     return *value_handle;
   }

-  if (structure->IsAccessorInfo()) {
+  if (structure->IsExecutableAccessorInfo()) {
     // api style callbacks
-    AccessorInfo* data = AccessorInfo::cast(structure);
+    ExecutableAccessorInfo* data = ExecutableAccessorInfo::cast(structure);
     if (!data->IsCompatibleReceiver(this)) {
       Handle<Object> name_handle(name);
       Handle<Object> receiver_handle(this);
@@ -2051,6 +2056,11 @@
                                             HandleVector(args, 2)));
     }
   }
+
+  // TODO(dcarney): Handle correctly.
+  if (structure->IsDeclaredAccessorInfo()) {
+    return value;
+  }

   UNREACHABLE();
   return NULL;
@@ -9733,8 +9743,9 @@
   ASSERT(!structure->IsForeign());

   // api style callbacks.
-  if (structure->IsAccessorInfo()) {
-    Handle<AccessorInfo> data(AccessorInfo::cast(structure));
+  if (structure->IsExecutableAccessorInfo()) {
+    Handle<ExecutableAccessorInfo> data(
+        ExecutableAccessorInfo::cast(structure));
     Object* fun_obj = data->getter();
     v8::AccessorGetter call_fun = v8::ToCData<v8::AccessorGetter>(fun_obj);
     if (call_fun == NULL) return isolate->heap()->undefined_value();
@@ -9769,6 +9780,11 @@
     // Getter is not a function.
     return isolate->heap()->undefined_value();
   }
+
+  if (structure->IsDeclaredAccessorInfo()) {
+    // TODO(dcarney): Handle correctly.
+    return isolate->heap()->undefined_value();
+  }

   UNREACHABLE();
   return NULL;
@@ -9793,11 +9809,12 @@
   // callbacks should be phased out.
   ASSERT(!structure->IsForeign());

-  if (structure->IsAccessorInfo()) {
+  if (structure->IsExecutableAccessorInfo()) {
     // api style callbacks
     Handle<JSObject> self(this);
     Handle<JSObject> holder_handle(JSObject::cast(holder));
-    Handle<AccessorInfo> data(AccessorInfo::cast(structure));
+    Handle<ExecutableAccessorInfo> data(
+        ExecutableAccessorInfo::cast(structure));
     Object* call_obj = data->setter();
v8::AccessorSetter call_fun = v8::ToCData<v8::AccessorSetter>(call_obj);
     if (call_fun == NULL) return value;
@@ -9834,6 +9851,9 @@
                                             HandleVector(args, 2)));
     }
   }
+
+  // TODO(dcarney): Handle correctly.
+  if (structure->IsDeclaredAccessorInfo()) return value;

   UNREACHABLE();
   return NULL;
=======================================
--- /branches/bleeding_edge/src/objects.h       Mon Feb  4 02:56:50 2013
+++ /branches/bleeding_edge/src/objects.h       Tue Feb 12 06:33:08 2013
@@ -111,7 +111,10 @@
 //       - Foreign
 //       - SharedFunctionInfo
 //       - Struct
+//         - DeclaredAccessorDescriptor
 //         - AccessorInfo
+//           - DeclaredAccessorInfo
+//           - ExecutableAccessorInfo
 //         - AccessorPair
 //         - AccessCheckInfo
 //         - InterceptorInfo
@@ -288,7 +291,9 @@
V(EXTERNAL_PIXEL_ARRAY_TYPE) \ V(FILLER_TYPE) \ \ - V(ACCESSOR_INFO_TYPE) \ + V(DECLARED_ACCESSOR_DESCRIPTOR_TYPE) \ + V(DECLARED_ACCESSOR_INFO_TYPE) \ + V(EXECUTABLE_ACCESSOR_INFO_TYPE) \ V(ACCESSOR_PAIR_TYPE) \ V(ACCESS_CHECK_INFO_TYPE) \ V(INTERCEPTOR_INFO_TYPE) \
@@ -441,7 +446,11 @@
// type tags, elements in this list have to be added to the INSTANCE_TYPE_LIST
 // manually.
#define STRUCT_LIST_ALL(V) \ - V(ACCESSOR_INFO, AccessorInfo, accessor_info) \ + V(DECLARED_ACCESSOR_DESCRIPTOR, \ + DeclaredAccessorDescriptor, \ + declared_accessor_descriptor) \ + V(DECLARED_ACCESSOR_INFO, DeclaredAccessorInfo, declared_accessor_info) \ + V(EXECUTABLE_ACCESSOR_INFO, ExecutableAccessorInfo, executable_accessor_info)\ V(ACCESSOR_PAIR, AccessorPair, accessor_pair) \ V(ACCESS_CHECK_INFO, AccessCheckInfo, access_check_info) \ V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info) \
@@ -598,7 +607,9 @@
   FILLER_TYPE,  // LAST_DATA_TYPE

   // Structs.
-  ACCESSOR_INFO_TYPE,
+  DECLARED_ACCESSOR_DESCRIPTOR_TYPE,
+  DECLARED_ACCESSOR_INFO_TYPE,
+  EXECUTABLE_ACCESSOR_INFO_TYPE,
   ACCESSOR_PAIR_TYPE,
   ACCESS_CHECK_INFO_TYPE,
   INTERCEPTOR_INFO_TYPE,
@@ -926,6 +937,7 @@

   inline bool IsFixedArrayBase();
   inline bool IsExternal();
+  inline bool IsAccessorInfo();

   // Returns true if this object is an instance of the specified
   // function template.
@@ -8324,20 +8336,8 @@
 };


-// An accessor must have a getter, but can have no setter.
-//
-// When setting a property, V8 searches accessors in prototypes.
-// If an accessor was found and it does not have a setter,
-// the request is ignored.
-//
-// If the accessor in the prototype has the READ_ONLY property attribute, then
-// a new value is added to the local object when the property is set.
-// This shadows the accessor in the prototype.
 class AccessorInfo: public Struct {
  public:
-  DECL_ACCESSORS(getter, Object)
-  DECL_ACCESSORS(setter, Object)
-  DECL_ACCESSORS(data, Object)
   DECL_ACCESSORS(name, Object)
   DECL_ACCESSORS(flag, Smi)
   DECL_ACCESSORS(expected_receiver_type, Object)
@@ -8360,13 +8360,10 @@
   static inline AccessorInfo* cast(Object* obj);

   // Dispatched behavior.
-  DECLARE_PRINTER(AccessorInfo)
   DECLARE_VERIFIER(AccessorInfo)

-  static const int kGetterOffset = HeapObject::kHeaderSize;
-  static const int kSetterOffset = kGetterOffset + kPointerSize;
-  static const int kDataOffset = kSetterOffset + kPointerSize;
-  static const int kNameOffset = kDataOffset + kPointerSize;
+
+  static const int kNameOffset = HeapObject::kHeaderSize;
   static const int kFlagOffset = kNameOffset + kPointerSize;
static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize;
   static const int kSize = kExpectedReceiverTypeOffset + kPointerSize;
@@ -8382,6 +8379,74 @@
 };


+class DeclaredAccessorDescriptor: public Struct {
+ public:
+  // TODO(dcarney): Fill out this class.
+  DECL_ACCESSORS(internal_field, Smi)
+
+  static inline DeclaredAccessorDescriptor* cast(Object* obj);
+
+  // Dispatched behavior.
+  DECLARE_PRINTER(DeclaredAccessorDescriptor)
+  DECLARE_VERIFIER(DeclaredAccessorDescriptor)
+
+  static const int kInternalFieldOffset = HeapObject::kHeaderSize;
+  static const int kSize = kInternalFieldOffset + kPointerSize;
+
+ private:
+  DISALLOW_IMPLICIT_CONSTRUCTORS(DeclaredAccessorDescriptor);
+};
+
+
+class DeclaredAccessorInfo: public AccessorInfo {
+ public:
+  DECL_ACCESSORS(descriptor, DeclaredAccessorDescriptor)
+
+  static inline DeclaredAccessorInfo* cast(Object* obj);
+
+  // Dispatched behavior.
+  DECLARE_PRINTER(DeclaredAccessorInfo)
+  DECLARE_VERIFIER(DeclaredAccessorInfo)
+
+  static const int kDescriptorOffset = AccessorInfo::kSize;
+  static const int kSize = kDescriptorOffset + kPointerSize;
+
+ private:
+  DISALLOW_IMPLICIT_CONSTRUCTORS(DeclaredAccessorInfo);
+};
+
+
+// An accessor must have a getter, but can have no setter.
+//
+// When setting a property, V8 searches accessors in prototypes.
+// If an accessor was found and it does not have a setter,
+// the request is ignored.
+//
+// If the accessor in the prototype has the READ_ONLY property attribute, then
+// a new value is added to the local object when the property is set.
+// This shadows the accessor in the prototype.
+class ExecutableAccessorInfo: public AccessorInfo {
+ public:
+  DECL_ACCESSORS(getter, Object)
+  DECL_ACCESSORS(setter, Object)
+  DECL_ACCESSORS(data, Object)
+
+  static inline ExecutableAccessorInfo* cast(Object* obj);
+
+  // Dispatched behavior.
+  DECLARE_PRINTER(ExecutableAccessorInfo)
+  DECLARE_VERIFIER(ExecutableAccessorInfo)
+
+  static const int kGetterOffset = AccessorInfo::kSize;
+  static const int kSetterOffset = kGetterOffset + kPointerSize;
+  static const int kDataOffset = kSetterOffset + kPointerSize;
+  static const int kSize = kDataOffset + kPointerSize;
+
+ private:
+  DISALLOW_IMPLICIT_CONSTRUCTORS(ExecutableAccessorInfo);
+};
+
+
 // Support for JavaScript accessors: A pair of a getter and a setter. Each
 // accessor can either be
 //   * a pointer to a JavaScript function or proxy: a real accessor
=======================================
--- /branches/bleeding_edge/src/stub-cache.cc   Wed Feb  6 03:48:29 2013
+++ /branches/bleeding_edge/src/stub-cache.cc   Tue Feb 12 06:33:08 2013
@@ -162,10 +162,11 @@
 }


-Handle<Code> StubCache::ComputeLoadCallback(Handle<String> name,
-                                            Handle<JSObject> receiver,
-                                            Handle<JSObject> holder,
- Handle<AccessorInfo> callback) {
+Handle<Code> StubCache::ComputeLoadCallback(
+    Handle<String> name,
+    Handle<JSObject> receiver,
+    Handle<JSObject> holder,
+    Handle<ExecutableAccessorInfo> callback) {
   ASSERT(v8::ToCData<Address>(callback->getter()) != 0);
   InlineCacheHolderFlag cache_holder =
       IC::GetCodeCacheForObject(*receiver, *holder);
@@ -353,7 +354,7 @@
     Handle<String> name,
     Handle<JSObject> receiver,
     Handle<JSObject> holder,
-    Handle<AccessorInfo> callback) {
+    Handle<ExecutableAccessorInfo> callback) {
   InlineCacheHolderFlag cache_holder =
       IC::GetCodeCacheForObject(*receiver, *holder);
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder));
@@ -469,11 +470,12 @@
 }


-Handle<Code> StubCache::ComputeStoreCallback(Handle<String> name,
-                                             Handle<JSObject> receiver,
-                                             Handle<JSObject> holder,
-                                             Handle<AccessorInfo> callback,
-                                             StrictModeFlag strict_mode) {
+Handle<Code> StubCache::ComputeStoreCallback(
+    Handle<String> name,
+    Handle<JSObject> receiver,
+    Handle<JSObject> holder,
+    Handle<ExecutableAccessorInfo> callback,
+    StrictModeFlag strict_mode) {
   ASSERT(v8::ToCData<Address>(callback->setter()) != 0);
   Code::Flags flags = Code::ComputeMonomorphicFlags(
       Code::STORE_IC, Code::CALLBACKS, strict_mode);
@@ -1004,7 +1006,7 @@
   ASSERT(args[0]->IsJSObject());
   ASSERT(args[1]->IsJSObject());
   ASSERT(args[3]->IsSmi());
-  AccessorInfo* callback = AccessorInfo::cast(args[4]);
+  ExecutableAccessorInfo* callback = ExecutableAccessorInfo::cast(args[4]);
   Address getter_address = v8::ToCData<Address>(callback->getter());
v8::AccessorGetter fun = FUNCTION_CAST<v8::AccessorGetter>(getter_address);
   ASSERT(fun != NULL);
@@ -1028,7 +1030,7 @@

 RUNTIME_FUNCTION(MaybeObject*, StoreCallbackProperty) {
   JSObject* recv = JSObject::cast(args[0]);
-  AccessorInfo* callback = AccessorInfo::cast(args[1]);
+  ExecutableAccessorInfo* callback = ExecutableAccessorInfo::cast(args[1]);
   Address setter_address = v8::ToCData<Address>(callback->setter());
v8::AccessorSetter fun = FUNCTION_CAST<v8::AccessorSetter>(setter_address);
   ASSERT(fun != NULL);
@@ -1415,7 +1417,7 @@
     Handle<JSObject> object,
     Handle<JSObject> holder,
     Handle<String> name,
-    Handle<AccessorInfo> callback) {
+    Handle<ExecutableAccessorInfo> callback) {
   Label miss;

   GenerateNameCheck(name, this->name(), &miss);
=======================================
--- /branches/bleeding_edge/src/stub-cache.h    Wed Feb  6 03:48:29 2013
+++ /branches/bleeding_edge/src/stub-cache.h    Tue Feb 12 06:33:08 2013
@@ -88,7 +88,7 @@
   Handle<Code> ComputeLoadCallback(Handle<String> name,
                                    Handle<JSObject> object,
                                    Handle<JSObject> holder,
-                                   Handle<AccessorInfo> callback);
+ Handle<ExecutableAccessorInfo> callback);

   Handle<Code> ComputeLoadViaGetter(Handle<String> name,
                                     Handle<JSObject> object,
@@ -119,10 +119,11 @@
                                      Handle<JSObject> holder,
                                      PropertyIndex field_index);

-  Handle<Code> ComputeKeyedLoadCallback(Handle<String> name,
-                                        Handle<JSObject> object,
-                                        Handle<JSObject> holder,
-                                        Handle<AccessorInfo> callback);
+  Handle<Code> ComputeKeyedLoadCallback(
+      Handle<String> name,
+      Handle<JSObject> object,
+      Handle<JSObject> holder,
+      Handle<ExecutableAccessorInfo> callback);

   Handle<Code> ComputeKeyedLoadConstant(Handle<String> name,
                                         Handle<JSObject> object,
@@ -151,7 +152,7 @@
   Handle<Code> ComputeStoreCallback(Handle<String> name,
                                     Handle<JSObject> object,
                                     Handle<JSObject> holder,
-                                    Handle<AccessorInfo> callback,
+ Handle<ExecutableAccessorInfo> callback,
                                     StrictModeFlag strict_mode);

   Handle<Code> ComputeStoreViaSetter(Handle<String> name,
@@ -553,7 +554,7 @@
                             Register scratch2,
                             Register scratch3,
                             Register scratch4,
-                            Handle<AccessorInfo> callback,
+                            Handle<ExecutableAccessorInfo> callback,
                             Handle<String> name,
                             Label* miss);

@@ -562,7 +563,7 @@
                                       Register scratch1,
                                       Register scratch2,
                                       Register scratch3,
-                                      Handle<AccessorInfo> callback,
+ Handle<ExecutableAccessorInfo> callback,
                                       Handle<String> name,
                                       Label* miss);

@@ -616,7 +617,7 @@
   Handle<Code> CompileLoadCallback(Handle<JSObject> object,
                                    Handle<JSObject> holder,
                                    Handle<String> name,
-                                   Handle<AccessorInfo> callback);
+ Handle<ExecutableAccessorInfo> callback);

   Handle<Code> CompileLoadConstant(Handle<JSObject> object,
                                    Handle<JSObject> holder,
@@ -720,7 +721,7 @@
   Handle<Code> CompileStoreCallback(Handle<String> name,
                                     Handle<JSObject> object,
                                     Handle<JSObject> holder,
-                                    Handle<AccessorInfo> callback);
+ Handle<ExecutableAccessorInfo> callback);

   static void GenerateStoreViaSetter(MacroAssembler* masm,
                                      Handle<JSFunction> setter);
=======================================
--- /branches/bleeding_edge/src/x64/stub-cache-x64.cc Wed Feb 6 03:48:29 2013 +++ /branches/bleeding_edge/src/x64/stub-cache-x64.cc Tue Feb 12 06:33:08 2013
@@ -1043,14 +1043,15 @@
 }


-void StubCompiler::GenerateDictionaryLoadCallback(Register receiver,
-                                                  Register name_reg,
-                                                  Register scratch1,
-                                                  Register scratch2,
-                                                  Register scratch3,
- Handle<AccessorInfo> callback,
-                                                  Handle<String> name,
-                                                  Label* miss) {
+void StubCompiler::GenerateDictionaryLoadCallback(
+    Register receiver,
+    Register name_reg,
+    Register scratch1,
+    Register scratch2,
+    Register scratch3,
+    Handle<ExecutableAccessorInfo> callback,
+    Handle<String> name,
+    Label* miss) {
   ASSERT(!receiver.is(scratch1));
   ASSERT(!receiver.is(scratch2));
   ASSERT(!receiver.is(scratch3));
@@ -1094,7 +1095,7 @@
                                         Register scratch2,
                                         Register scratch3,
                                         Register scratch4,
-                                        Handle<AccessorInfo> callback,
+ Handle<ExecutableAccessorInfo> callback,
                                         Handle<String> name,
                                         Label* miss) {
   // Check that the receiver isn't a smi.
@@ -1117,7 +1118,7 @@
   __ push(reg);  // holder
   if (heap()->InNewSpace(callback->data())) {
     __ Move(scratch1, callback);
-    __ push(FieldOperand(scratch1, AccessorInfo::kDataOffset));  // data
+    __ push(FieldOperand(scratch1, ExecutableAccessorInfo::kDataOffset));
   } else {
     __ Push(Handle<Object>(callback->data()));
   }
@@ -1209,8 +1210,9 @@
     if (lookup->IsField()) {
       compile_followup_inline = true;
     } else if (lookup->type() == CALLBACKS &&
-               lookup->GetCallbackObject()->IsAccessorInfo()) {
- AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
+               lookup->GetCallbackObject()->IsExecutableAccessorInfo()) {
+      ExecutableAccessorInfo* callback =
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject());
       compile_followup_inline = callback->getter() != NULL &&
           callback->IsCompatibleReceiver(*object);
     }
@@ -1295,8 +1297,8 @@
       // We found CALLBACKS property in prototype chain of interceptor's
       // holder.
       ASSERT(lookup->type() == CALLBACKS);
-      Handle<AccessorInfo> callback(
-          AccessorInfo::cast(lookup->GetCallbackObject()));
+      Handle<ExecutableAccessorInfo> callback(
+          ExecutableAccessorInfo::cast(lookup->GetCallbackObject()));
       ASSERT(callback->getter() != NULL);

       // Tail call to runtime.
@@ -1306,7 +1308,7 @@
       __ push(receiver);
       __ push(holder_reg);
       __ Move(holder_reg, callback);
-      __ push(FieldOperand(holder_reg, AccessorInfo::kDataOffset));
+ __ push(FieldOperand(holder_reg, ExecutableAccessorInfo::kDataOffset));
       __ PushAddress(ExternalReference::isolate_address());
       __ push(holder_reg);
       __ push(name_reg);
@@ -2482,7 +2484,7 @@
     Handle<String> name,
     Handle<JSObject> receiver,
     Handle<JSObject> holder,
-    Handle<AccessorInfo> callback) {
+    Handle<ExecutableAccessorInfo> callback) {
   // ----------- S t a t e -------------
   //  -- rax    : value
   //  -- rcx    : name
=======================================
--- /branches/bleeding_edge/tools/grokdump.py   Wed Jan 30 02:07:47 2013
+++ /branches/bleeding_edge/tools/grokdump.py   Tue Feb 12 06:33:08 2013
@@ -869,41 +869,43 @@
   142: "EXTERNAL_FLOAT_ARRAY_TYPE",
   144: "EXTERNAL_PIXEL_ARRAY_TYPE",
   146: "FILLER_TYPE",
-  147: "ACCESSOR_INFO_TYPE",
-  148: "ACCESSOR_PAIR_TYPE",
-  149: "ACCESS_CHECK_INFO_TYPE",
-  150: "INTERCEPTOR_INFO_TYPE",
-  151: "CALL_HANDLER_INFO_TYPE",
-  152: "FUNCTION_TEMPLATE_INFO_TYPE",
-  153: "OBJECT_TEMPLATE_INFO_TYPE",
-  154: "SIGNATURE_INFO_TYPE",
-  155: "TYPE_SWITCH_INFO_TYPE",
-  156: "ALLOCATION_SITE_INFO_TYPE",
-  157: "SCRIPT_TYPE",
-  158: "CODE_CACHE_TYPE",
-  159: "POLYMORPHIC_CODE_CACHE_TYPE",
-  160: "TYPE_FEEDBACK_INFO_TYPE",
-  161: "ALIASED_ARGUMENTS_ENTRY_TYPE",
-  164: "FIXED_ARRAY_TYPE",
+  147: "DECLARED_ACCESSOR_DESCRIPTOR_TYPE",
+  148: "DECLARED_ACCESSOR_INFO_TYPE",
+  149: "EXECUTABLE_ACCESSOR_INFO_TYPE",
+  150: "ACCESSOR_PAIR_TYPE",
+  151: "ACCESS_CHECK_INFO_TYPE",
+  152: "INTERCEPTOR_INFO_TYPE",
+  153: "CALL_HANDLER_INFO_TYPE",
+  154: "FUNCTION_TEMPLATE_INFO_TYPE",
+  155: "OBJECT_TEMPLATE_INFO_TYPE",
+  156: "SIGNATURE_INFO_TYPE",
+  157: "TYPE_SWITCH_INFO_TYPE",
+  158: "ALLOCATION_SITE_INFO_TYPE",
+  159: "SCRIPT_TYPE",
+  160: "CODE_CACHE_TYPE",
+  161: "POLYMORPHIC_CODE_CACHE_TYPE",
+  162: "TYPE_FEEDBACK_INFO_TYPE",
+  163: "ALIASED_ARGUMENTS_ENTRY_TYPE",
+  166: "FIXED_ARRAY_TYPE",
   145: "FIXED_DOUBLE_ARRAY_TYPE",
-  165: "SHARED_FUNCTION_INFO_TYPE",
-  166: "JS_MESSAGE_OBJECT_TYPE",
-  169: "JS_VALUE_TYPE",
-  170: "JS_DATE_TYPE",
-  171: "JS_OBJECT_TYPE",
-  172: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
-  173: "JS_MODULE_TYPE",
-  174: "JS_GLOBAL_OBJECT_TYPE",
-  175: "JS_BUILTINS_OBJECT_TYPE",
-  176: "JS_GLOBAL_PROXY_TYPE",
-  177: "JS_ARRAY_TYPE",
-  168: "JS_PROXY_TYPE",
-  180: "JS_WEAK_MAP_TYPE",
-  181: "JS_REGEXP_TYPE",
-  182: "JS_FUNCTION_TYPE",
-  167: "JS_FUNCTION_PROXY_TYPE",
-  162: "DEBUG_INFO_TYPE",
-  163: "BREAK_POINT_INFO_TYPE",
+  167: "SHARED_FUNCTION_INFO_TYPE",
+  168: "JS_MESSAGE_OBJECT_TYPE",
+  171: "JS_VALUE_TYPE",
+  172: "JS_DATE_TYPE",
+  173: "JS_OBJECT_TYPE",
+  174: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
+  175: "JS_MODULE_TYPE",
+  176: "JS_GLOBAL_OBJECT_TYPE",
+  177: "JS_BUILTINS_OBJECT_TYPE",
+  178: "JS_GLOBAL_PROXY_TYPE",
+  179: "JS_ARRAY_TYPE",
+  170: "JS_PROXY_TYPE",
+  182: "JS_WEAK_MAP_TYPE",
+  183: "JS_REGEXP_TYPE",
+  184: "JS_FUNCTION_TYPE",
+  169: "JS_FUNCTION_PROXY_TYPE",
+  164: "DEBUG_INFO_TYPE",
+  165: "BREAK_POINT_INFO_TYPE",
 }


@@ -929,84 +931,86 @@
 # }
 # printf("}\n");
 KNOWN_MAPS = {
-  0x08081: (134, "ByteArrayMap"),
-  0x080a9: (128, "MetaMap"),
+  0x08081: (128, "MetaMap"),
+  0x080a9: (166, "FixedArrayMap"),
   0x080d1: (130, "OddballMap"),
-  0x080f9: (68, "AsciiSymbolMap"),
-  0x08121: (164, "FixedArrayMap"),
+  0x080f9: (166, "FixedCOWArrayMap"),
+  0x08121: (166, "ScopeInfoMap"),
   0x08149: (132, "HeapNumberMap"),
-  0x08171: (135, "FreeSpaceMap"),
-  0x08199: (146, "OnePointerFillerMap"),
-  0x081c1: (146, "TwoPointerFillerMap"),
-  0x081e9: (131, "GlobalPropertyCellMap"),
-  0x08211: (165, "SharedFunctionInfoMap"),
-  0x08239: (4, "AsciiStringMap"),
-  0x08261: (164, "NativeContextMap"),
-  0x08289: (129, "CodeMap"),
-  0x082b1: (164, "ScopeInfoMap"),
-  0x082d9: (164, "FixedCOWArrayMap"),
-  0x08301: (145, "FixedDoubleArrayMap"),
-  0x08329: (164, "HashTableMap"),
-  0x08351: (0, "StringMap"),
-  0x08379: (64, "SymbolMap"),
-  0x083a1: (1, "ConsStringMap"),
-  0x083c9: (5, "ConsAsciiStringMap"),
-  0x083f1: (3, "SlicedStringMap"),
-  0x08419: (7, "SlicedAsciiStringMap"),
-  0x08441: (65, "ConsSymbolMap"),
-  0x08469: (69, "ConsAsciiSymbolMap"),
-  0x08491: (66, "ExternalSymbolMap"),
-  0x084b9: (74, "ExternalSymbolWithAsciiDataMap"),
-  0x084e1: (70, "ExternalAsciiSymbolMap"),
-  0x08509: (2, "ExternalStringMap"),
-  0x08531: (10, "ExternalStringWithAsciiDataMap"),
-  0x08559: (6, "ExternalAsciiStringMap"),
-  0x08581: (82, "ShortExternalSymbolMap"),
-  0x085a9: (90, "ShortExternalSymbolWithAsciiDataMap"),
-  0x085d1: (86, "ShortExternalAsciiSymbolMap"),
-  0x085f9: (18, "ShortExternalStringMap"),
-  0x08621: (26, "ShortExternalStringWithAsciiDataMap"),
-  0x08649: (22, "ShortExternalAsciiStringMap"),
-  0x08671: (0, "UndetectableStringMap"),
-  0x08699: (4, "UndetectableAsciiStringMap"),
-  0x086c1: (144, "ExternalPixelArrayMap"),
-  0x086e9: (136, "ExternalByteArrayMap"),
-  0x08711: (137, "ExternalUnsignedByteArrayMap"),
-  0x08739: (138, "ExternalShortArrayMap"),
-  0x08761: (139, "ExternalUnsignedShortArrayMap"),
-  0x08789: (140, "ExternalIntArrayMap"),
-  0x087b1: (141, "ExternalUnsignedIntArrayMap"),
-  0x087d9: (142, "ExternalFloatArrayMap"),
-  0x08801: (143, "ExternalDoubleArrayMap"),
-  0x08829: (164, "NonStrictArgumentsElementsMap"),
-  0x08851: (164, "FunctionContextMap"),
-  0x08879: (164, "CatchContextMap"),
-  0x088a1: (164, "WithContextMap"),
-  0x088c9: (164, "BlockContextMap"),
-  0x088f1: (164, "ModuleContextMap"),
-  0x08919: (164, "GlobalContextMap"),
-  0x08941: (166, "JSMessageObjectMap"),
-  0x08969: (133, "ForeignMap"),
-  0x08991: (171, "NeanderMap"),
-  0x089b9: (156, "AllocationSiteInfoMap"),
-  0x089e1: (159, "PolymorphicCodeCacheMap"),
-  0x08a09: (157, "ScriptMap"),
-  0x08a31: (171, ""),
-  0x08a59: (171, "ExternalMap"),
-  0x08a81: (147, "AccessorInfoMap"),
-  0x08aa9: (148, "AccessorPairMap"),
-  0x08ad1: (149, "AccessCheckInfoMap"),
-  0x08af9: (150, "InterceptorInfoMap"),
-  0x08b21: (151, "CallHandlerInfoMap"),
-  0x08b49: (152, "FunctionTemplateInfoMap"),
-  0x08b71: (153, "ObjectTemplateInfoMap"),
-  0x08b99: (154, "SignatureInfoMap"),
-  0x08bc1: (155, "TypeSwitchInfoMap"),
-  0x08be9: (158, "CodeCacheMap"),
-  0x08c11: (160, "TypeFeedbackInfoMap"),
-  0x08c39: (161, "AliasedArgumentsEntryMap"),
-  0x08c61: (162, "DebugInfoMap"),
-  0x08c89: (163, "BreakPointInfoMap"),
+  0x08171: (133, "ForeignMap"),
+  0x08199: (64, "SymbolMap"),
+  0x081c1: (68, "AsciiSymbolMap"),
+  0x081e9: (65, "ConsSymbolMap"),
+  0x08211: (69, "ConsAsciiSymbolMap"),
+  0x08239: (66, "ExternalSymbolMap"),
+  0x08261: (74, "ExternalSymbolWithAsciiDataMap"),
+  0x08289: (70, "ExternalAsciiSymbolMap"),
+  0x082b1: (82, "ShortExternalSymbolMap"),
+  0x082d9: (90, "ShortExternalSymbolWithAsciiDataMap"),
+  0x08301: (86, "ShortExternalAsciiSymbolMap"),
+  0x08329: (0, "StringMap"),
+  0x08351: (4, "AsciiStringMap"),
+  0x08379: (1, "ConsStringMap"),
+  0x083a1: (5, "ConsAsciiStringMap"),
+  0x083c9: (3, "SlicedStringMap"),
+  0x083f1: (7, "SlicedAsciiStringMap"),
+  0x08419: (2, "ExternalStringMap"),
+  0x08441: (10, "ExternalStringWithAsciiDataMap"),
+  0x08469: (6, "ExternalAsciiStringMap"),
+  0x08491: (18, "ShortExternalStringMap"),
+  0x084b9: (26, "ShortExternalStringWithAsciiDataMap"),
+  0x084e1: (22, "ShortExternalAsciiStringMap"),
+  0x08509: (0, "UndetectableStringMap"),
+  0x08531: (4, "UndetectableAsciiStringMap"),
+  0x08559: (145, "FixedDoubleArrayMap"),
+  0x08581: (134, "ByteArrayMap"),
+  0x085a9: (135, "FreeSpaceMap"),
+  0x085d1: (144, "ExternalPixelArrayMap"),
+  0x085f9: (136, "ExternalByteArrayMap"),
+  0x08621: (137, "ExternalUnsignedByteArrayMap"),
+  0x08649: (138, "ExternalShortArrayMap"),
+  0x08671: (139, "ExternalUnsignedShortArrayMap"),
+  0x08699: (140, "ExternalIntArrayMap"),
+  0x086c1: (141, "ExternalUnsignedIntArrayMap"),
+  0x086e9: (142, "ExternalFloatArrayMap"),
+  0x08711: (166, "NonStrictArgumentsElementsMap"),
+  0x08739: (143, "ExternalDoubleArrayMap"),
+  0x08761: (129, "CodeMap"),
+  0x08789: (131, "GlobalPropertyCellMap"),
+  0x087b1: (146, "OnePointerFillerMap"),
+  0x087d9: (146, "TwoPointerFillerMap"),
+  0x08801: (147, "DeclaredAccessorDescriptorMap"),
+  0x08829: (148, "DeclaredAccessorInfoMap"),
+  0x08851: (149, "ExecutableAccessorInfoMap"),
+  0x08879: (150, "AccessorPairMap"),
+  0x088a1: (151, "AccessCheckInfoMap"),
+  0x088c9: (152, "InterceptorInfoMap"),
+  0x088f1: (153, "CallHandlerInfoMap"),
+  0x08919: (154, "FunctionTemplateInfoMap"),
+  0x08941: (155, "ObjectTemplateInfoMap"),
+  0x08969: (156, "SignatureInfoMap"),
+  0x08991: (157, "TypeSwitchInfoMap"),
+  0x089b9: (159, "ScriptMap"),
+  0x089e1: (158, "AllocationSiteInfoMap"),
+  0x08a09: (160, "CodeCacheMap"),
+  0x08a31: (161, "PolymorphicCodeCacheMap"),
+  0x08a59: (162, "TypeFeedbackInfoMap"),
+  0x08a81: (163, "AliasedArgumentsEntryMap"),
+  0x08aa9: (164, "DebugInfoMap"),
+  0x08ad1: (165, "BreakPointInfoMap"),
+  0x08af9: (166, "HashTableMap"),
+  0x08b21: (166, "FunctionContextMap"),
+  0x08b49: (166, "CatchContextMap"),
+  0x08b71: (166, "WithContextMap"),
+  0x08b99: (166, "BlockContextMap"),
+  0x08bc1: (166, "ModuleContextMap"),
+  0x08be9: (166, "GlobalContextMap"),
+  0x08c11: (166, "NativeContextMap"),
+  0x08c39: (167, "SharedFunctionInfoMap"),
+  0x08c61: (168, "JSMessageObjectMap"),
+  0x08c89: (173, "ExternalMap"),
+  0x08cb1: (173, "NeanderMap"),
+  0x08cd9: (173, ""),
 }


@@ -1034,34 +1038,27 @@
 # printf("}\n");
 KNOWN_OBJECTS = {
   ("OLD_POINTER_SPACE", 0x08081): "NullValue",
-  ("OLD_POINTER_SPACE", 0x08091): "UndefinedValue",
-  ("OLD_POINTER_SPACE", 0x080a1): "InstanceofCacheMap",
-  ("OLD_POINTER_SPACE", 0x080b1): "TrueValue",
-  ("OLD_POINTER_SPACE", 0x080c1): "FalseValue",
-  ("OLD_POINTER_SPACE", 0x080d1): "NoInterceptorResultSentinel",
-  ("OLD_POINTER_SPACE", 0x080e1): "ArgumentsMarker",
-  ("OLD_POINTER_SPACE", 0x080f1): "NumberStringCache",
-  ("OLD_POINTER_SPACE", 0x088f9): "SingleCharacterStringCache",
-  ("OLD_POINTER_SPACE", 0x08b01): "StringSplitCache",
-  ("OLD_POINTER_SPACE", 0x08f09): "TerminationException",
-  ("OLD_POINTER_SPACE", 0x08f19): "MessageListeners",
-  ("OLD_POINTER_SPACE", 0x08f35): "CodeStubs",
-  ("OLD_POINTER_SPACE", 0x09b61): "NonMonomorphicCache",
-  ("OLD_POINTER_SPACE", 0x0a175): "PolymorphicCodeCache",
-  ("OLD_POINTER_SPACE", 0x0a17d): "NativesSourceCache",
-  ("OLD_POINTER_SPACE", 0x0a1bd): "EmptyScript",
-  ("OLD_POINTER_SPACE", 0x0a1f9): "IntrinsicFunctionNames",
-  ("OLD_POINTER_SPACE", 0x24a49): "SymbolTable",
+  ("OLD_POINTER_SPACE", 0x08091): "LastScriptId",
+  ("OLD_POINTER_SPACE", 0x080a1): "TrueValue",
+  ("OLD_POINTER_SPACE", 0x080b1): "FalseValue",
+  ("OLD_POINTER_SPACE", 0x080c1): "TheHoleValue",
+  ("OLD_POINTER_SPACE", 0x080d1): "ArgumentsMarker",
+  ("OLD_POINTER_SPACE", 0x080e1): "NoInterceptorResultSentinel",
+  ("OLD_POINTER_SPACE", 0x080f1): "TerminationException",
+  ("OLD_POINTER_SPACE", 0x08101): "PolymorphicCodeCache",
+  ("OLD_POINTER_SPACE", 0x08121): "NumberStringCache",
+  ("OLD_POINTER_SPACE", 0x08929): "SingleCharacterStringCache",
+  ("OLD_POINTER_SPACE", 0x08b31): "StringSplitCache",
+  ("OLD_POINTER_SPACE", 0x08f39): "RegExpMultipleCache",
   ("OLD_DATA_SPACE", 0x08081): "EmptyFixedArray",
-  ("OLD_DATA_SPACE", 0x080a1): "NanValue",
-  ("OLD_DATA_SPACE", 0x0811d): "EmptyByteArray",
-  ("OLD_DATA_SPACE", 0x08125): "EmptyString",
-  ("OLD_DATA_SPACE", 0x08131): "EmptyDescriptorArray",
-  ("OLD_DATA_SPACE", 0x08259): "InfinityValue",
-  ("OLD_DATA_SPACE", 0x08265): "MinusZeroValue",
-  ("OLD_DATA_SPACE", 0x08271): "PrototypeAccessors",
-  ("CODE_SPACE", 0x12b81): "JsEntryCode",
-  ("CODE_SPACE", 0x12c61): "JsConstructEntryCode",
+  ("OLD_DATA_SPACE", 0x08089): "EmptyDescriptorArray",
+  ("OLD_DATA_SPACE", 0x08091): "EmptyByteArray",
+  ("OLD_DATA_SPACE", 0x08099): "MinusZeroValue",
+  ("OLD_DATA_SPACE", 0x080a5): "NanValue",
+  ("OLD_DATA_SPACE", 0x080b1): "InfinityValue",
+  ("OLD_DATA_SPACE", 0x08185): "EmptyString",
+  ("CODE_SPACE", 0x0a001): "JsEntryCode",
+  ("CODE_SPACE", 0x0a0e1): "JsConstructEntryCode",
 }


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