Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 5bd423e157738cc467e4fd02d64ac3204e1c5701..ea836c7201bec811611461e0c747a43120604ec3 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -141,6 +141,9 @@ void Object::Lookup(String* name, LookupResult* result) { |
holder = native_context->string_function()->instance_prototype(); |
} else if (IsBoolean()) { |
holder = native_context->boolean_function()->instance_prototype(); |
+ } else { |
+ Isolate::Current()->PushStackTraceAndDie( |
+ 0xDEAD0000, this, JSReceiver::cast(this)->map(), 0xDEAD0001); |
} |
} |
ASSERT(holder != NULL); // Cannot handle null or undefined. |
@@ -207,7 +210,20 @@ MaybeObject* JSObject::GetPropertyWithCallback(Object* receiver, |
if (result.IsEmpty()) { |
return isolate->heap()->undefined_value(); |
} |
- return *v8::Utils::OpenHandle(*result); |
+ Object* return_value = *v8::Utils::OpenHandle(*result); |
+#if ENABLE_EXTRA_CHECKS |
+ if (!(return_value->IsSmi() || |
+ return_value->IsString() || |
+ return_value->IsSpecObject() || |
+ return_value->IsHeapNumber() || |
+ return_value->IsUndefined() || |
+ return_value->IsTrue() || |
+ return_value->IsFalse() || |
+ return_value->IsNull())) { |
+ FATAL("API call returned invalid object"); |
+ } |
+#endif |
+ return return_value; |
} |
// __defineGetter__ callback |