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

Side by Side Diff: src/objects.cc

Issue 23694011: Make implicit HandleScope of AssertNoContextChange explicit. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: One spot missed. Created 7 years, 3 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/isolate.h ('k') | no next file » | 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 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 object->GetProperty(*receiver, result, *key, attributes)); 821 object->GetProperty(*receiver, result, *key, attributes));
822 } 822 }
823 823
824 824
825 MaybeObject* Object::GetProperty(Object* receiver, 825 MaybeObject* Object::GetProperty(Object* receiver,
826 LookupResult* result, 826 LookupResult* result,
827 Name* name, 827 Name* name,
828 PropertyAttributes* attributes) { 828 PropertyAttributes* attributes) {
829 // Make sure that the top context does not change when doing 829 // Make sure that the top context does not change when doing
830 // callbacks or interceptor calls. 830 // callbacks or interceptor calls.
831 AssertNoContextChange ncc; 831 AssertNoContextChangeWithHandleScope ncc;
832
832 Isolate* isolate = name->GetIsolate(); 833 Isolate* isolate = name->GetIsolate();
833 Heap* heap = isolate->heap(); 834 Heap* heap = isolate->heap();
834 835
835 // Traverse the prototype chain from the current object (this) to 836 // Traverse the prototype chain from the current object (this) to
836 // the holder and check for access rights. This avoids traversing the 837 // the holder and check for access rights. This avoids traversing the
837 // objects more than once in case of interceptors, because the 838 // objects more than once in case of interceptors, because the
838 // holder will always be the interceptor holder and the search may 839 // holder will always be the interceptor holder and the search may
839 // only continue with a current object just after the interceptor 840 // only continue with a current object just after the interceptor
840 // holder in the prototype chain. 841 // holder in the prototype chain.
841 // Proxy handlers do not use the proxy's prototype, so we can skip this. 842 // Proxy handlers do not use the proxy's prototype, so we can skip this.
(...skipping 3029 matching lines...) Expand 10 before | Expand all | Expand 10 after
3871 3872
3872 3873
3873 MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, 3874 MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup,
3874 Name* name_raw, 3875 Name* name_raw,
3875 Object* value_raw, 3876 Object* value_raw,
3876 PropertyAttributes attributes, 3877 PropertyAttributes attributes,
3877 StrictModeFlag strict_mode, 3878 StrictModeFlag strict_mode,
3878 StoreFromKeyed store_mode) { 3879 StoreFromKeyed store_mode) {
3879 Heap* heap = GetHeap(); 3880 Heap* heap = GetHeap();
3880 Isolate* isolate = heap->isolate(); 3881 Isolate* isolate = heap->isolate();
3882
3881 // Make sure that the top context does not change when doing callbacks or 3883 // Make sure that the top context does not change when doing callbacks or
3882 // interceptor calls. 3884 // interceptor calls.
3883 AssertNoContextChange ncc; 3885 AssertNoContextChangeWithHandleScope ncc;
3884 3886
3885 // Optimization for 2-byte strings often used as keys in a decompression 3887 // Optimization for 2-byte strings often used as keys in a decompression
3886 // dictionary. We internalize these short keys to avoid constantly 3888 // dictionary. We internalize these short keys to avoid constantly
3887 // reallocating them. 3889 // reallocating them.
3888 if (name_raw->IsString() && !name_raw->IsInternalizedString() && 3890 if (name_raw->IsString() && !name_raw->IsInternalizedString() &&
3889 String::cast(name_raw)->length() <= 2) { 3891 String::cast(name_raw)->length() <= 2) {
3890 Object* internalized_version; 3892 Object* internalized_version;
3891 { MaybeObject* maybe_string_version = 3893 { MaybeObject* maybe_string_version =
3892 heap->InternalizeString(String::cast(name_raw)); 3894 heap->InternalizeString(String::cast(name_raw));
3893 if (maybe_string_version->ToObject(&internalized_version)) { 3895 if (maybe_string_version->ToObject(&internalized_version)) {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
4032 4034
4033 MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes( 4035 MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes(
4034 Name* name_raw, 4036 Name* name_raw,
4035 Object* value_raw, 4037 Object* value_raw,
4036 PropertyAttributes attributes, 4038 PropertyAttributes attributes,
4037 ValueType value_type, 4039 ValueType value_type,
4038 StoreMode mode, 4040 StoreMode mode,
4039 ExtensibilityCheck extensibility_check) { 4041 ExtensibilityCheck extensibility_check) {
4040 // Make sure that the top context does not change when doing callbacks or 4042 // Make sure that the top context does not change when doing callbacks or
4041 // interceptor calls. 4043 // interceptor calls.
4042 AssertNoContextChange ncc; 4044 AssertNoContextChangeWithHandleScope ncc;
4043 Isolate* isolate = GetIsolate(); 4045 Isolate* isolate = GetIsolate();
4044 LookupResult lookup(isolate); 4046 LookupResult lookup(isolate);
4045 LocalLookup(name_raw, &lookup, true); 4047 LocalLookup(name_raw, &lookup, true);
4046 if (!lookup.IsFound()) map()->LookupTransition(this, name_raw, &lookup); 4048 if (!lookup.IsFound()) map()->LookupTransition(this, name_raw, &lookup);
4047 // Check access rights if needed. 4049 // Check access rights if needed.
4048 if (IsAccessCheckNeeded()) { 4050 if (IsAccessCheckNeeded()) {
4049 if (!isolate->MayNamedAccess(this, name_raw, v8::ACCESS_SET)) { 4051 if (!isolate->MayNamedAccess(this, name_raw, v8::ACCESS_SET)) {
4050 return SetPropertyWithFailedAccessCheck(&lookup, 4052 return SetPropertyWithFailedAccessCheck(&lookup,
4051 name_raw, 4053 name_raw,
4052 value_raw, 4054 value_raw,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
4176 4178
4177 4179
4178 PropertyAttributes JSObject::GetPropertyAttributeWithInterceptor( 4180 PropertyAttributes JSObject::GetPropertyAttributeWithInterceptor(
4179 JSObject* receiver, 4181 JSObject* receiver,
4180 Name* name, 4182 Name* name,
4181 bool continue_search) { 4183 bool continue_search) {
4182 // TODO(rossberg): Support symbols in the API. 4184 // TODO(rossberg): Support symbols in the API.
4183 if (name->IsSymbol()) return ABSENT; 4185 if (name->IsSymbol()) return ABSENT;
4184 4186
4185 Isolate* isolate = GetIsolate(); 4187 Isolate* isolate = GetIsolate();
4188 HandleScope scope(isolate);
4186 4189
4187 // Make sure that the top context does not change when doing 4190 // Make sure that the top context does not change when doing
4188 // callbacks or interceptor calls. 4191 // callbacks or interceptor calls.
4189 AssertNoContextChange ncc; 4192 AssertNoContextChange ncc;
4190 4193
4191 HandleScope scope(isolate);
4192 Handle<InterceptorInfo> interceptor(GetNamedInterceptor()); 4194 Handle<InterceptorInfo> interceptor(GetNamedInterceptor());
4193 Handle<JSObject> receiver_handle(receiver); 4195 Handle<JSObject> receiver_handle(receiver);
4194 Handle<JSObject> holder_handle(this); 4196 Handle<JSObject> holder_handle(this);
4195 Handle<String> name_handle(String::cast(name)); 4197 Handle<String> name_handle(String::cast(name));
4196 PropertyCallbackArguments args(isolate, interceptor->data(), receiver, this); 4198 PropertyCallbackArguments args(isolate, interceptor->data(), receiver, this);
4197 if (!interceptor->query()->IsUndefined()) { 4199 if (!interceptor->query()->IsUndefined()) {
4198 v8::NamedPropertyQueryCallback query = 4200 v8::NamedPropertyQueryCallback query =
4199 v8::ToCData<v8::NamedPropertyQueryCallback>(interceptor->query()); 4201 v8::ToCData<v8::NamedPropertyQueryCallback>(interceptor->query());
4200 LOG(isolate, 4202 LOG(isolate,
4201 ApiNamedPropertyAccess("interceptor-named-has", *holder_handle, name)); 4203 ApiNamedPropertyAccess("interceptor-named-has", *holder_handle, name));
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
4311 } 4313 }
4312 4314
4313 return GetElementAttributeWithoutInterceptor( 4315 return GetElementAttributeWithoutInterceptor(
4314 receiver, index, continue_search); 4316 receiver, index, continue_search);
4315 } 4317 }
4316 4318
4317 4319
4318 PropertyAttributes JSObject::GetElementAttributeWithInterceptor( 4320 PropertyAttributes JSObject::GetElementAttributeWithInterceptor(
4319 JSReceiver* receiver, uint32_t index, bool continue_search) { 4321 JSReceiver* receiver, uint32_t index, bool continue_search) {
4320 Isolate* isolate = GetIsolate(); 4322 Isolate* isolate = GetIsolate();
4323 HandleScope scope(isolate);
4324
4321 // Make sure that the top context does not change when doing 4325 // Make sure that the top context does not change when doing
4322 // callbacks or interceptor calls. 4326 // callbacks or interceptor calls.
4323 AssertNoContextChange ncc; 4327 AssertNoContextChange ncc;
4324 HandleScope scope(isolate); 4328
4325 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor()); 4329 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor());
4326 Handle<JSReceiver> hreceiver(receiver); 4330 Handle<JSReceiver> hreceiver(receiver);
4327 Handle<JSObject> holder(this); 4331 Handle<JSObject> holder(this);
4328 PropertyCallbackArguments args(isolate, interceptor->data(), receiver, this); 4332 PropertyCallbackArguments args(isolate, interceptor->data(), receiver, this);
4329 if (!interceptor->query()->IsUndefined()) { 4333 if (!interceptor->query()->IsUndefined()) {
4330 v8::IndexedPropertyQueryCallback query = 4334 v8::IndexedPropertyQueryCallback query =
4331 v8::ToCData<v8::IndexedPropertyQueryCallback>(interceptor->query()); 4335 v8::ToCData<v8::IndexedPropertyQueryCallback>(interceptor->query());
4332 LOG(isolate, 4336 LOG(isolate,
4333 ApiIndexedPropertyAccess("interceptor-indexed-has", this, index)); 4337 ApiIndexedPropertyAccess("interceptor-indexed-has", this, index));
4334 v8::Handle<v8::Integer> result = args.Call(query, index); 4338 v8::Handle<v8::Integer> result = args.Call(query, index);
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
5023 Handle<Object> result = 5027 Handle<Object> result =
5024 DeletePropertyPostInterceptor(object, name, NORMAL_DELETION); 5028 DeletePropertyPostInterceptor(object, name, NORMAL_DELETION);
5025 RETURN_HANDLE_IF_SCHEDULED_EXCEPTION(isolate, Object); 5029 RETURN_HANDLE_IF_SCHEDULED_EXCEPTION(isolate, Object);
5026 return result; 5030 return result;
5027 } 5031 }
5028 5032
5029 5033
5030 MaybeObject* JSObject::DeleteElementWithInterceptor(uint32_t index) { 5034 MaybeObject* JSObject::DeleteElementWithInterceptor(uint32_t index) {
5031 Isolate* isolate = GetIsolate(); 5035 Isolate* isolate = GetIsolate();
5032 Heap* heap = isolate->heap(); 5036 Heap* heap = isolate->heap();
5037 HandleScope scope(isolate);
5038
5033 // Make sure that the top context does not change when doing 5039 // Make sure that the top context does not change when doing
5034 // callbacks or interceptor calls. 5040 // callbacks or interceptor calls.
5035 AssertNoContextChange ncc; 5041 AssertNoContextChange ncc;
5036 HandleScope scope(isolate); 5042
5037 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor()); 5043 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor());
5038 if (interceptor->deleter()->IsUndefined()) return heap->false_value(); 5044 if (interceptor->deleter()->IsUndefined()) return heap->false_value();
5039 v8::IndexedPropertyDeleterCallback deleter = 5045 v8::IndexedPropertyDeleterCallback deleter =
5040 v8::ToCData<v8::IndexedPropertyDeleterCallback>(interceptor->deleter()); 5046 v8::ToCData<v8::IndexedPropertyDeleterCallback>(interceptor->deleter());
5041 Handle<JSObject> this_handle(this); 5047 Handle<JSObject> this_handle(this);
5042 LOG(isolate, 5048 LOG(isolate,
5043 ApiIndexedPropertyAccess("interceptor-indexed-delete", this, index)); 5049 ApiIndexedPropertyAccess("interceptor-indexed-delete", this, index));
5044 PropertyCallbackArguments args(isolate, interceptor->data(), this, this); 5050 PropertyCallbackArguments args(isolate, interceptor->data(), this, this);
5045 v8::Handle<v8::Boolean> result = args.Call(deleter, index); 5051 v8::Handle<v8::Boolean> result = args.Call(deleter, index);
5046 RETURN_IF_SCHEDULED_EXCEPTION(isolate); 5052 RETURN_IF_SCHEDULED_EXCEPTION(isolate);
(...skipping 1090 matching lines...) Expand 10 before | Expand all | Expand 10 after
6137 name, 6143 name,
6138 getter, 6144 getter,
6139 setter, 6145 setter,
6140 attributes, 6146 attributes,
6141 access_control); 6147 access_control);
6142 return; 6148 return;
6143 } 6149 }
6144 6150
6145 // Make sure that the top context does not change when doing callbacks or 6151 // Make sure that the top context does not change when doing callbacks or
6146 // interceptor calls. 6152 // interceptor calls.
6147 AssertNoContextChange ncc; 6153 AssertNoContextChangeWithHandleScope ncc;
6148 6154
6149 // Try to flatten before operating on the string. 6155 // Try to flatten before operating on the string.
6150 if (name->IsString()) String::cast(*name)->TryFlatten(); 6156 if (name->IsString()) String::cast(*name)->TryFlatten();
6151 6157
6152 if (!object->CanSetCallback(*name)) return; 6158 if (!object->CanSetCallback(*name)) return;
6153 6159
6154 uint32_t index = 0; 6160 uint32_t index = 0;
6155 bool is_element = name->AsArrayIndex(&index); 6161 bool is_element = name->AsArrayIndex(&index);
6156 6162
6157 Handle<Object> old_value = isolate->factory()->the_hole_value(); 6163 Handle<Object> old_value = isolate->factory()->the_hole_value();
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
6320 6326
6321 if (IsJSGlobalProxy()) { 6327 if (IsJSGlobalProxy()) {
6322 Object* proto = GetPrototype(); 6328 Object* proto = GetPrototype();
6323 if (proto->IsNull()) return this; 6329 if (proto->IsNull()) return this;
6324 ASSERT(proto->IsJSGlobalObject()); 6330 ASSERT(proto->IsJSGlobalObject());
6325 return JSObject::cast(proto)->DefineAccessor(info); 6331 return JSObject::cast(proto)->DefineAccessor(info);
6326 } 6332 }
6327 6333
6328 // Make sure that the top context does not change when doing callbacks or 6334 // Make sure that the top context does not change when doing callbacks or
6329 // interceptor calls. 6335 // interceptor calls.
6330 AssertNoContextChange ncc; 6336 AssertNoContextChangeWithHandleScope ncc;
6331 6337
6332 // Try to flatten before operating on the string. 6338 // Try to flatten before operating on the string.
6333 if (name->IsString()) String::cast(name)->TryFlatten(); 6339 if (name->IsString()) String::cast(name)->TryFlatten();
6334 6340
6335 if (!CanSetCallback(name)) return isolate->heap()->undefined_value(); 6341 if (!CanSetCallback(name)) return isolate->heap()->undefined_value();
6336 6342
6337 uint32_t index = 0; 6343 uint32_t index = 0;
6338 bool is_element = name->AsArrayIndex(&index); 6344 bool is_element = name->AsArrayIndex(&index);
6339 6345
6340 if (is_element) { 6346 if (is_element) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6388 6394
6389 return this; 6395 return this;
6390 } 6396 }
6391 6397
6392 6398
6393 MaybeObject* JSObject::LookupAccessor(Name* name, AccessorComponent component) { 6399 MaybeObject* JSObject::LookupAccessor(Name* name, AccessorComponent component) {
6394 Heap* heap = GetHeap(); 6400 Heap* heap = GetHeap();
6395 6401
6396 // Make sure that the top context does not change when doing callbacks or 6402 // Make sure that the top context does not change when doing callbacks or
6397 // interceptor calls. 6403 // interceptor calls.
6398 AssertNoContextChange ncc; 6404 AssertNoContextChangeWithHandleScope ncc;
6399 6405
6400 // Check access rights if needed. 6406 // Check access rights if needed.
6401 if (IsAccessCheckNeeded() && 6407 if (IsAccessCheckNeeded() &&
6402 !heap->isolate()->MayNamedAccess(this, name, v8::ACCESS_HAS)) { 6408 !heap->isolate()->MayNamedAccess(this, name, v8::ACCESS_HAS)) {
6403 heap->isolate()->ReportFailedAccessCheck(this, v8::ACCESS_HAS); 6409 heap->isolate()->ReportFailedAccessCheck(this, v8::ACCESS_HAS);
6404 RETURN_IF_SCHEDULED_EXCEPTION(heap->isolate()); 6410 RETURN_IF_SCHEDULED_EXCEPTION(heap->isolate());
6405 return heap->undefined_value(); 6411 return heap->undefined_value();
6406 } 6412 }
6407 6413
6408 // Make the lookup and include prototypes. 6414 // Make the lookup and include prototypes.
(...skipping 5127 matching lines...) Expand 10 before | Expand all | Expand 10 after
11536 } 11542 }
11537 11543
11538 11544
11539 MaybeObject* JSObject::SetElementWithInterceptor(uint32_t index, 11545 MaybeObject* JSObject::SetElementWithInterceptor(uint32_t index,
11540 Object* value, 11546 Object* value,
11541 PropertyAttributes attributes, 11547 PropertyAttributes attributes,
11542 StrictModeFlag strict_mode, 11548 StrictModeFlag strict_mode,
11543 bool check_prototype, 11549 bool check_prototype,
11544 SetPropertyMode set_mode) { 11550 SetPropertyMode set_mode) {
11545 Isolate* isolate = GetIsolate(); 11551 Isolate* isolate = GetIsolate();
11552 HandleScope scope(isolate);
11553
11546 // Make sure that the top context does not change when doing 11554 // Make sure that the top context does not change when doing
11547 // callbacks or interceptor calls. 11555 // callbacks or interceptor calls.
11548 AssertNoContextChange ncc; 11556 AssertNoContextChange ncc;
11549 HandleScope scope(isolate); 11557
11550 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor()); 11558 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor());
11551 Handle<JSObject> this_handle(this); 11559 Handle<JSObject> this_handle(this);
11552 Handle<Object> value_handle(value, isolate); 11560 Handle<Object> value_handle(value, isolate);
11553 if (!interceptor->setter()->IsUndefined()) { 11561 if (!interceptor->setter()->IsUndefined()) {
11554 v8::IndexedPropertySetterCallback setter = 11562 v8::IndexedPropertySetterCallback setter =
11555 v8::ToCData<v8::IndexedPropertySetterCallback>(interceptor->setter()); 11563 v8::ToCData<v8::IndexedPropertySetterCallback>(interceptor->setter());
11556 LOG(isolate, 11564 LOG(isolate,
11557 ApiIndexedPropertyAccess("interceptor-indexed-set", this, index)); 11565 ApiIndexedPropertyAccess("interceptor-indexed-set", this, index));
11558 PropertyCallbackArguments args(isolate, interceptor->data(), this, this); 11566 PropertyCallbackArguments args(isolate, interceptor->data(), this, this);
11559 v8::Handle<v8::Value> result = 11567 v8::Handle<v8::Value> result =
(...skipping 986 matching lines...) Expand 10 before | Expand all | Expand 10 after
12546 } 12554 }
12547 set_length(len); 12555 set_length(len);
12548 } 12556 }
12549 return value; 12557 return value;
12550 } 12558 }
12551 12559
12552 12560
12553 MaybeObject* JSObject::GetElementWithInterceptor(Object* receiver, 12561 MaybeObject* JSObject::GetElementWithInterceptor(Object* receiver,
12554 uint32_t index) { 12562 uint32_t index) {
12555 Isolate* isolate = GetIsolate(); 12563 Isolate* isolate = GetIsolate();
12564 HandleScope scope(isolate);
12565
12556 // Make sure that the top context does not change when doing 12566 // Make sure that the top context does not change when doing
12557 // callbacks or interceptor calls. 12567 // callbacks or interceptor calls.
12558 AssertNoContextChange ncc; 12568 AssertNoContextChange ncc;
12559 HandleScope scope(isolate); 12569
12560 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor(), isolate); 12570 Handle<InterceptorInfo> interceptor(GetIndexedInterceptor(), isolate);
12561 Handle<Object> this_handle(receiver, isolate); 12571 Handle<Object> this_handle(receiver, isolate);
12562 Handle<JSObject> holder_handle(this, isolate); 12572 Handle<JSObject> holder_handle(this, isolate);
12563 if (!interceptor->getter()->IsUndefined()) { 12573 if (!interceptor->getter()->IsUndefined()) {
12564 v8::IndexedPropertyGetterCallback getter = 12574 v8::IndexedPropertyGetterCallback getter =
12565 v8::ToCData<v8::IndexedPropertyGetterCallback>(interceptor->getter()); 12575 v8::ToCData<v8::IndexedPropertyGetterCallback>(interceptor->getter());
12566 LOG(isolate, 12576 LOG(isolate,
12567 ApiIndexedPropertyAccess("interceptor-indexed-get", this, index)); 12577 ApiIndexedPropertyAccess("interceptor-indexed-get", this, index));
12568 PropertyCallbackArguments 12578 PropertyCallbackArguments
12569 args(isolate, interceptor->data(), receiver, this); 12579 args(isolate, interceptor->data(), receiver, this);
(...skipping 3415 matching lines...) Expand 10 before | Expand all | Expand 10 after
15985 #define ERROR_MESSAGES_TEXTS(C, T) T, 15995 #define ERROR_MESSAGES_TEXTS(C, T) T,
15986 static const char* error_messages_[] = { 15996 static const char* error_messages_[] = {
15987 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 15997 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
15988 }; 15998 };
15989 #undef ERROR_MESSAGES_TEXTS 15999 #undef ERROR_MESSAGES_TEXTS
15990 return error_messages_[reason]; 16000 return error_messages_[reason];
15991 } 16001 }
15992 16002
15993 16003
15994 } } // namespace v8::internal 16004 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698