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.