Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/objects.cc

Issue 225673003: Return MaybeHandle from GetProperty. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/objects.h ('k') | src/runtime.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 } else { 149 } else {
150 result->isolate()->PushStackTraceAndDie( 150 result->isolate()->PushStackTraceAndDie(
151 0xDEAD0000, this, JSReceiver::cast(this)->map(), 0xDEAD0001); 151 0xDEAD0000, this, JSReceiver::cast(this)->map(), 0xDEAD0001);
152 } 152 }
153 } 153 }
154 ASSERT(holder != NULL); // Cannot handle null or undefined. 154 ASSERT(holder != NULL); // Cannot handle null or undefined.
155 JSReceiver::cast(holder)->Lookup(name, result); 155 JSReceiver::cast(holder)->Lookup(name, result);
156 } 156 }
157 157
158 158
159 Handle<Object> Object::GetPropertyWithReceiver( 159 MaybeHandle<Object> Object::GetPropertyWithReceiver(
160 Handle<Object> object, 160 Handle<Object> object,
161 Handle<Object> receiver, 161 Handle<Object> receiver,
162 Handle<Name> name, 162 Handle<Name> name,
163 PropertyAttributes* attributes) { 163 PropertyAttributes* attributes) {
164 LookupResult lookup(name->GetIsolate()); 164 LookupResult lookup(name->GetIsolate());
165 object->Lookup(*name, &lookup); 165 object->Lookup(*name, &lookup);
166 Handle<Object> result = 166 MaybeHandle<Object> result =
167 GetProperty(object, receiver, &lookup, name, attributes); 167 GetProperty(object, receiver, &lookup, name, attributes);
168 ASSERT(*attributes <= ABSENT); 168 ASSERT(*attributes <= ABSENT);
169 return result; 169 return result;
170 } 170 }
171 171
172 172
173 MaybeObject* Object::GetPropertyWithReceiver(Object* receiver, 173 MaybeObject* Object::GetPropertyWithReceiver(Object* receiver,
174 Name* name, 174 Name* name,
175 PropertyAttributes* attributes) { 175 PropertyAttributes* attributes) {
176 LookupResult result(name->GetIsolate()); 176 LookupResult result(name->GetIsolate());
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 382
383 383
384 Handle<FixedArray> JSObject::EnsureWritableFastElements( 384 Handle<FixedArray> JSObject::EnsureWritableFastElements(
385 Handle<JSObject> object) { 385 Handle<JSObject> object) {
386 CALL_HEAP_FUNCTION(object->GetIsolate(), 386 CALL_HEAP_FUNCTION(object->GetIsolate(),
387 object->EnsureWritableFastElements(), 387 object->EnsureWritableFastElements(),
388 FixedArray); 388 FixedArray);
389 } 389 }
390 390
391 391
392 Handle<Object> JSObject::GetPropertyWithCallback(Handle<JSObject> object, 392 MaybeHandle<Object> JSObject::GetPropertyWithCallback(Handle<JSObject> object,
393 Handle<Object> receiver, 393 Handle<Object> receiver,
394 Handle<Object> structure, 394 Handle<Object> structure,
395 Handle<Name> name) { 395 Handle<Name> name) {
396 Isolate* isolate = name->GetIsolate(); 396 Isolate* isolate = name->GetIsolate();
397 // To accommodate both the old and the new api we switch on the 397 // To accommodate both the old and the new api we switch on the
398 // data structure used to store the callbacks. Eventually foreign 398 // data structure used to store the callbacks. Eventually foreign
399 // callbacks should be phased out. 399 // callbacks should be phased out.
400 if (structure->IsForeign()) { 400 if (structure->IsForeign()) {
401 AccessorDescriptor* callback = 401 AccessorDescriptor* callback =
402 reinterpret_cast<AccessorDescriptor*>( 402 reinterpret_cast<AccessorDescriptor*>(
403 Handle<Foreign>::cast(structure)->foreign_address()); 403 Handle<Foreign>::cast(structure)->foreign_address());
404 CALL_HEAP_FUNCTION(isolate, 404 CALL_HEAP_FUNCTION(isolate,
405 (callback->getter)(isolate, *receiver, callback->data), 405 (callback->getter)(isolate, *receiver, callback->data),
406 Object); 406 Object);
407 } 407 }
408 408
409 // api style callbacks. 409 // api style callbacks.
410 if (structure->IsAccessorInfo()) { 410 if (structure->IsAccessorInfo()) {
411 Handle<AccessorInfo> accessor_info = Handle<AccessorInfo>::cast(structure); 411 Handle<AccessorInfo> accessor_info = Handle<AccessorInfo>::cast(structure);
412 if (!accessor_info->IsCompatibleReceiver(*receiver)) { 412 if (!accessor_info->IsCompatibleReceiver(*receiver)) {
413 Handle<Object> args[2] = { name, receiver }; 413 Handle<Object> args[2] = { name, receiver };
414 Handle<Object> error = 414 Handle<Object> error =
415 isolate->factory()->NewTypeError("incompatible_method_receiver", 415 isolate->factory()->NewTypeError("incompatible_method_receiver",
416 HandleVector(args, 416 HandleVector(args,
417 ARRAY_SIZE(args))); 417 ARRAY_SIZE(args)));
418 isolate->Throw(*error); 418 return isolate->Throw<Object>(error);
419 return Handle<Object>::null();
420 } 419 }
421 // TODO(rossberg): Handling symbols in the API requires changing the API, 420 // TODO(rossberg): Handling symbols in the API requires changing the API,
422 // so we do not support it for now. 421 // so we do not support it for now.
423 if (name->IsSymbol()) return isolate->factory()->undefined_value(); 422 if (name->IsSymbol()) return isolate->factory()->undefined_value();
424 if (structure->IsDeclaredAccessorInfo()) { 423 if (structure->IsDeclaredAccessorInfo()) {
425 CALL_HEAP_FUNCTION( 424 CALL_HEAP_FUNCTION(
426 isolate, 425 isolate,
427 GetDeclaredAccessorProperty(*receiver, 426 GetDeclaredAccessorProperty(*receiver,
428 DeclaredAccessorInfo::cast(*structure), 427 DeclaredAccessorInfo::cast(*structure),
429 isolate), 428 isolate),
430 Object); 429 Object);
431 } 430 }
432 431
433 Handle<ExecutableAccessorInfo> data = 432 Handle<ExecutableAccessorInfo> data =
434 Handle<ExecutableAccessorInfo>::cast(structure); 433 Handle<ExecutableAccessorInfo>::cast(structure);
435 v8::AccessorGetterCallback call_fun = 434 v8::AccessorGetterCallback call_fun =
436 v8::ToCData<v8::AccessorGetterCallback>(data->getter()); 435 v8::ToCData<v8::AccessorGetterCallback>(data->getter());
437 if (call_fun == NULL) return isolate->factory()->undefined_value(); 436 if (call_fun == NULL) return isolate->factory()->undefined_value();
438 437
439 HandleScope scope(isolate); 438 HandleScope scope(isolate);
440 Handle<JSObject> self = Handle<JSObject>::cast(receiver); 439 Handle<JSObject> self = Handle<JSObject>::cast(receiver);
441 Handle<String> key = Handle<String>::cast(name); 440 Handle<String> key = Handle<String>::cast(name);
442 LOG(isolate, ApiNamedPropertyAccess("load", *self, *name)); 441 LOG(isolate, ApiNamedPropertyAccess("load", *self, *name));
443 PropertyCallbackArguments args(isolate, data->data(), *self, *object); 442 PropertyCallbackArguments args(isolate, data->data(), *self, *object);
444 v8::Handle<v8::Value> result = 443 v8::Handle<v8::Value> result =
445 args.Call(call_fun, v8::Utils::ToLocal(key)); 444 args.Call(call_fun, v8::Utils::ToLocal(key));
446 RETURN_HANDLE_IF_SCHEDULED_EXCEPTION(isolate, Object); 445 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
447 if (result.IsEmpty()) { 446 if (result.IsEmpty()) {
448 return isolate->factory()->undefined_value(); 447 return isolate->factory()->undefined_value();
449 } 448 }
450 Handle<Object> return_value = v8::Utils::OpenHandle(*result); 449 Handle<Object> return_value = v8::Utils::OpenHandle(*result);
451 return_value->VerifyApiCallResultType(); 450 return_value->VerifyApiCallResultType();
452 return scope.CloseAndEscape(return_value); 451 return scope.CloseAndEscape(return_value);
453 } 452 }
454 453
455 // __defineGetter__ callback 454 // __defineGetter__ callback
456 Handle<Object> getter(Handle<AccessorPair>::cast(structure)->getter(), 455 Handle<Object> getter(Handle<AccessorPair>::cast(structure)->getter(),
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 bool has_pending_exception; 548 bool has_pending_exception;
550 Handle<Object> result = Execution::Call( 549 Handle<Object> result = Execution::Call(
551 isolate, fun, self, 0, NULL, &has_pending_exception, true); 550 isolate, fun, self, 0, NULL, &has_pending_exception, true);
552 // Check for pending exception and return the result. 551 // Check for pending exception and return the result.
553 if (has_pending_exception) return Failure::Exception(); 552 if (has_pending_exception) return Failure::Exception();
554 return *result; 553 return *result;
555 } 554 }
556 555
557 556
558 // Only deal with CALLBACKS and INTERCEPTOR 557 // Only deal with CALLBACKS and INTERCEPTOR
559 Handle<Object> JSObject::GetPropertyWithFailedAccessCheck( 558 MaybeHandle<Object> JSObject::GetPropertyWithFailedAccessCheck(
560 Handle<JSObject> object, 559 Handle<JSObject> object,
561 Handle<Object> receiver, 560 Handle<Object> receiver,
562 LookupResult* result, 561 LookupResult* result,
563 Handle<Name> name, 562 Handle<Name> name,
564 PropertyAttributes* attributes) { 563 PropertyAttributes* attributes) {
565 Isolate* isolate = name->GetIsolate(); 564 Isolate* isolate = name->GetIsolate();
566 if (result->IsProperty()) { 565 if (result->IsProperty()) {
567 switch (result->type()) { 566 switch (result->type()) {
568 case CALLBACKS: { 567 case CALLBACKS: {
569 // Only allow API accessors. 568 // Only allow API accessors.
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 if (!fun->shared()->IsApiFunction()) 821 if (!fun->shared()->IsApiFunction())
823 return true; 822 return true;
824 // If the object is fully fast case and has the same map it was 823 // If the object is fully fast case and has the same map it was
825 // created with then no changes can have been made to it. 824 // created with then no changes can have been made to it.
826 return map() != fun->initial_map() 825 return map() != fun->initial_map()
827 || !HasFastObjectElements() 826 || !HasFastObjectElements()
828 || !HasFastProperties(); 827 || !HasFastProperties();
829 } 828 }
830 829
831 830
832 Handle<Object> Object::GetProperty(Handle<Object> object, 831 MaybeHandle<Object> Object::GetProperty(Handle<Object> object,
833 Handle<Object> receiver, 832 Handle<Object> receiver,
834 LookupResult* result, 833 LookupResult* result,
835 Handle<Name> key, 834 Handle<Name> key,
836 PropertyAttributes* attributes) { 835 PropertyAttributes* attributes) {
837 Isolate* isolate = result->isolate(); 836 Isolate* isolate = result->isolate();
838 CALL_HEAP_FUNCTION( 837 CALL_HEAP_FUNCTION(
839 isolate, 838 isolate,
840 object->GetProperty(*receiver, result, *key, attributes), 839 object->GetProperty(*receiver, result, *key, attributes),
841 Object); 840 Object);
842 } 841 }
843 842
844 843
845 // TODO(yangguo): handlify this and get rid of. 844 // TODO(yangguo): handlify this and get rid of.
846 MaybeObject* Object::GetProperty(Object* receiver, 845 MaybeObject* Object::GetProperty(Object* receiver,
(...skipping 29 matching lines...) Expand all
876 true; 875 true;
877 current = current->GetPrototype(isolate)) { 876 current = current->GetPrototype(isolate)) {
878 if (current->IsAccessCheckNeeded()) { 877 if (current->IsAccessCheckNeeded()) {
879 // Check if we're allowed to read from the current object. Note 878 // Check if we're allowed to read from the current object. Note
880 // that even though we may not actually end up loading the named 879 // that even though we may not actually end up loading the named
881 // property from the current object, we still check that we have 880 // property from the current object, we still check that we have
882 // access to it. 881 // access to it.
883 JSObject* checked = JSObject::cast(current); 882 JSObject* checked = JSObject::cast(current);
884 if (!isolate->MayNamedAccess(checked, name, v8::ACCESS_GET)) { 883 if (!isolate->MayNamedAccess(checked, name, v8::ACCESS_GET)) {
885 HandleScope scope(isolate); 884 HandleScope scope(isolate);
886 Handle<Object> value = JSObject::GetPropertyWithFailedAccessCheck( 885 Handle<Object> value;
887 handle(checked, isolate), 886 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
888 handle(receiver, isolate), 887 isolate, value,
889 result, 888 JSObject::GetPropertyWithFailedAccessCheck(
890 handle(name, isolate), 889 handle(checked, isolate),
891 attributes); 890 handle(receiver, isolate),
892 RETURN_IF_EMPTY_HANDLE(isolate, value); 891 result,
892 handle(name, isolate),
893 attributes));
893 return *value; 894 return *value;
894 } 895 }
895 } 896 }
896 // Stop traversing the chain once we reach the last object in the 897 // Stop traversing the chain once we reach the last object in the
897 // chain; either the holder of the result or null in case of an 898 // chain; either the holder of the result or null in case of an
898 // absent property. 899 // absent property.
899 if (current == last) break; 900 if (current == last) break;
900 } 901 }
901 } 902 }
902 903
(...skipping 13 matching lines...) Expand all
916 result->representation(), 917 result->representation(),
917 result->GetFieldIndex().field_index()); 918 result->GetFieldIndex().field_index());
918 if (!maybe_result->To(&value)) return maybe_result; 919 if (!maybe_result->To(&value)) return maybe_result;
919 ASSERT(!value->IsTheHole() || result->IsReadOnly()); 920 ASSERT(!value->IsTheHole() || result->IsReadOnly());
920 return value->IsTheHole() ? heap->undefined_value() : value; 921 return value->IsTheHole() ? heap->undefined_value() : value;
921 } 922 }
922 case CONSTANT: 923 case CONSTANT:
923 return result->GetConstant(); 924 return result->GetConstant();
924 case CALLBACKS: { 925 case CALLBACKS: {
925 HandleScope scope(isolate); 926 HandleScope scope(isolate);
926 Handle<Object> value = JSObject::GetPropertyWithCallback( 927 Handle<Object> value;
927 handle(result->holder(), isolate), 928 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
928 handle(receiver, isolate), 929 isolate, value,
929 handle(result->GetCallbackObject(), isolate), 930 JSObject::GetPropertyWithCallback(
930 handle(name, isolate)); 931 handle(result->holder(), isolate),
931 RETURN_IF_EMPTY_HANDLE(isolate, value); 932 handle(receiver, isolate),
933 handle(result->GetCallbackObject(), isolate),
934 handle(name, isolate)));
932 return *value; 935 return *value;
933 } 936 }
934 case HANDLER: 937 case HANDLER:
935 return result->proxy()->GetPropertyWithHandler(receiver, name); 938 return result->proxy()->GetPropertyWithHandler(receiver, name);
936 case INTERCEPTOR: { 939 case INTERCEPTOR: {
937 HandleScope scope(isolate); 940 HandleScope scope(isolate);
938 Handle<Object> value = JSObject::GetPropertyWithInterceptor( 941 Handle<Object> value;
939 handle(result->holder(), isolate), 942 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
940 handle(receiver, isolate), 943 isolate, value,
941 handle(name, isolate), 944 JSObject::GetPropertyWithInterceptor(
942 attributes); 945 handle(result->holder(), isolate),
943 RETURN_IF_EMPTY_HANDLE(isolate, value); 946 handle(receiver, isolate),
947 handle(name, isolate),
948 attributes));
944 return *value; 949 return *value;
945 } 950 }
946 case NONEXISTENT: 951 case NONEXISTENT:
947 UNREACHABLE(); 952 UNREACHABLE();
948 break; 953 break;
949 } 954 }
950 UNREACHABLE(); 955 UNREACHABLE();
951 return NULL; 956 return NULL;
952 } 957 }
953 958
(...skipping 12245 matching lines...) Expand 10 before | Expand all | Expand 10 after
13199 InterceptorInfo* JSObject::GetIndexedInterceptor() { 13204 InterceptorInfo* JSObject::GetIndexedInterceptor() {
13200 ASSERT(map()->has_indexed_interceptor()); 13205 ASSERT(map()->has_indexed_interceptor());
13201 JSFunction* constructor = JSFunction::cast(map()->constructor()); 13206 JSFunction* constructor = JSFunction::cast(map()->constructor());
13202 ASSERT(constructor->shared()->IsApiFunction()); 13207 ASSERT(constructor->shared()->IsApiFunction());
13203 Object* result = 13208 Object* result =
13204 constructor->shared()->get_api_func_data()->indexed_property_handler(); 13209 constructor->shared()->get_api_func_data()->indexed_property_handler();
13205 return InterceptorInfo::cast(result); 13210 return InterceptorInfo::cast(result);
13206 } 13211 }
13207 13212
13208 13213
13209 Handle<Object> JSObject::GetPropertyPostInterceptor( 13214 MaybeHandle<Object> JSObject::GetPropertyPostInterceptor(
13210 Handle<JSObject> object, 13215 Handle<JSObject> object,
13211 Handle<Object> receiver, 13216 Handle<Object> receiver,
13212 Handle<Name> name, 13217 Handle<Name> name,
13213 PropertyAttributes* attributes) { 13218 PropertyAttributes* attributes) {
13214 // Check local property in holder, ignore interceptor. 13219 // Check local property in holder, ignore interceptor.
13215 Isolate* isolate = object->GetIsolate(); 13220 Isolate* isolate = object->GetIsolate();
13216 LookupResult lookup(isolate); 13221 LookupResult lookup(isolate);
13217 object->LocalLookupRealNamedProperty(*name, &lookup); 13222 object->LocalLookupRealNamedProperty(*name, &lookup);
13218 Handle<Object> result;
13219 if (lookup.IsFound()) { 13223 if (lookup.IsFound()) {
13220 result = GetProperty(object, receiver, &lookup, name, attributes); 13224 return GetProperty(object, receiver, &lookup, name, attributes);
13221 } else { 13225 } else {
13222 // Continue searching via the prototype chain. 13226 // Continue searching via the prototype chain.
13223 Handle<Object> prototype(object->GetPrototype(), isolate); 13227 Handle<Object> prototype(object->GetPrototype(), isolate);
13224 *attributes = ABSENT; 13228 *attributes = ABSENT;
13225 if (prototype->IsNull()) return isolate->factory()->undefined_value(); 13229 if (prototype->IsNull()) return isolate->factory()->undefined_value();
13226 result = GetPropertyWithReceiver(prototype, receiver, name, attributes); 13230 return GetPropertyWithReceiver(prototype, receiver, name, attributes);
13227 } 13231 }
13228 return result;
13229 } 13232 }
13230 13233
13231 13234
13232 MaybeObject* JSObject::GetLocalPropertyPostInterceptor( 13235 MaybeObject* JSObject::GetLocalPropertyPostInterceptor(
13233 Object* receiver, 13236 Object* receiver,
13234 Name* name, 13237 Name* name,
13235 PropertyAttributes* attributes) { 13238 PropertyAttributes* attributes) {
13236 // Check local property in holder, ignore interceptor. 13239 // Check local property in holder, ignore interceptor.
13237 LookupResult result(GetIsolate()); 13240 LookupResult result(GetIsolate());
13238 LocalLookupRealNamedProperty(name, &result); 13241 LocalLookupRealNamedProperty(name, &result);
13239 if (result.IsFound()) { 13242 if (result.IsFound()) {
13240 return GetProperty(receiver, &result, name, attributes); 13243 return GetProperty(receiver, &result, name, attributes);
13241 } 13244 }
13242 return GetHeap()->undefined_value(); 13245 return GetHeap()->undefined_value();
13243 } 13246 }
13244 13247
13245 13248
13246 Handle<Object> JSObject::GetPropertyWithInterceptor( 13249 MaybeHandle<Object> JSObject::GetPropertyWithInterceptor(
13247 Handle<JSObject> object, 13250 Handle<JSObject> object,
13248 Handle<Object> receiver, 13251 Handle<Object> receiver,
13249 Handle<Name> name, 13252 Handle<Name> name,
13250 PropertyAttributes* attributes) { 13253 PropertyAttributes* attributes) {
13251 Isolate* isolate = object->GetIsolate(); 13254 Isolate* isolate = object->GetIsolate();
13252 13255
13253 // TODO(rossberg): Support symbols in the API. 13256 // TODO(rossberg): Support symbols in the API.
13254 if (name->IsSymbol()) return isolate->factory()->undefined_value(); 13257 if (name->IsSymbol()) return isolate->factory()->undefined_value();
13255 13258
13256 Handle<InterceptorInfo> interceptor(object->GetNamedInterceptor(), isolate); 13259 Handle<InterceptorInfo> interceptor(object->GetNamedInterceptor(), isolate);
13257 Handle<String> name_string = Handle<String>::cast(name); 13260 Handle<String> name_string = Handle<String>::cast(name);
13258 13261
13259 if (!interceptor->getter()->IsUndefined()) { 13262 if (!interceptor->getter()->IsUndefined()) {
13260 v8::NamedPropertyGetterCallback getter = 13263 v8::NamedPropertyGetterCallback getter =
13261 v8::ToCData<v8::NamedPropertyGetterCallback>(interceptor->getter()); 13264 v8::ToCData<v8::NamedPropertyGetterCallback>(interceptor->getter());
13262 LOG(isolate, 13265 LOG(isolate,
13263 ApiNamedPropertyAccess("interceptor-named-get", *object, *name)); 13266 ApiNamedPropertyAccess("interceptor-named-get", *object, *name));
13264 PropertyCallbackArguments 13267 PropertyCallbackArguments
13265 args(isolate, interceptor->data(), *receiver, *object); 13268 args(isolate, interceptor->data(), *receiver, *object);
13266 v8::Handle<v8::Value> result = 13269 v8::Handle<v8::Value> result =
13267 args.Call(getter, v8::Utils::ToLocal(name_string)); 13270 args.Call(getter, v8::Utils::ToLocal(name_string));
13268 RETURN_HANDLE_IF_SCHEDULED_EXCEPTION(isolate, Object); 13271 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
13269 if (!result.IsEmpty()) { 13272 if (!result.IsEmpty()) {
13270 *attributes = NONE; 13273 *attributes = NONE;
13271 Handle<Object> result_internal = v8::Utils::OpenHandle(*result); 13274 Handle<Object> result_internal = v8::Utils::OpenHandle(*result);
13272 result_internal->VerifyApiCallResultType(); 13275 result_internal->VerifyApiCallResultType();
13273 // Rebox handle to escape this scope. 13276 // Rebox handle to escape this scope.
13274 return handle(*result_internal, isolate); 13277 return handle(*result_internal, isolate);
13275 } 13278 }
13276 } 13279 }
13277 13280
13278 return GetPropertyPostInterceptor(object, receiver, name, attributes); 13281 return GetPropertyPostInterceptor(object, receiver, name, attributes);
(...skipping 3198 matching lines...) Expand 10 before | Expand all | Expand 10 after
16477 #define ERROR_MESSAGES_TEXTS(C, T) T, 16480 #define ERROR_MESSAGES_TEXTS(C, T) T,
16478 static const char* error_messages_[] = { 16481 static const char* error_messages_[] = {
16479 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16482 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16480 }; 16483 };
16481 #undef ERROR_MESSAGES_TEXTS 16484 #undef ERROR_MESSAGES_TEXTS
16482 return error_messages_[reason]; 16485 return error_messages_[reason];
16483 } 16486 }
16484 16487
16485 16488
16486 } } // namespace v8::internal 16489 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698