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

Side by Side Diff: src/objects.cc

Issue 155085: Separate native and interpreted regexp by compile time flag, not runtime. (Closed)
Patch Set: Addressed review comments. Adapted builds scripts. Created 11 years, 5 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
« no previous file with comments | « src/objects.h ('k') | src/objects-debug.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 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 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 5807 matching lines...) Expand 10 before | Expand all | Expand 10 after
5818 LocalLookupRealNamedProperty(name, &result); 5818 LocalLookupRealNamedProperty(name, &result);
5819 if (result.IsValid()) return GetProperty(receiver, &result, name, attributes); 5819 if (result.IsValid()) return GetProperty(receiver, &result, name, attributes);
5820 // Continue searching via the prototype chain. 5820 // Continue searching via the prototype chain.
5821 Object* pt = GetPrototype(); 5821 Object* pt = GetPrototype();
5822 *attributes = ABSENT; 5822 *attributes = ABSENT;
5823 if (pt == Heap::null_value()) return Heap::undefined_value(); 5823 if (pt == Heap::null_value()) return Heap::undefined_value();
5824 return pt->GetPropertyWithReceiver(receiver, name, attributes); 5824 return pt->GetPropertyWithReceiver(receiver, name, attributes);
5825 } 5825 }
5826 5826
5827 5827
5828 Object* JSObject::GetPropertyWithInterceptorProper( 5828 bool JSObject::GetPropertyWithInterceptorProper(
5829 JSObject* receiver, 5829 JSObject* receiver,
5830 String* name, 5830 String* name,
5831 PropertyAttributes* attributes) { 5831 PropertyAttributes* attributes,
5832 Object** result_object) {
5832 HandleScope scope; 5833 HandleScope scope;
5833 Handle<InterceptorInfo> interceptor(GetNamedInterceptor()); 5834 Handle<InterceptorInfo> interceptor(GetNamedInterceptor());
5834 Handle<JSObject> receiver_handle(receiver); 5835 Handle<JSObject> receiver_handle(receiver);
5835 Handle<JSObject> holder_handle(this); 5836 Handle<JSObject> holder_handle(this);
5836 Handle<String> name_handle(name); 5837 Handle<String> name_handle(name);
5837 Handle<Object> data_handle(interceptor->data()); 5838 Handle<Object> data_handle(interceptor->data());
5838 5839
5839 if (!interceptor->getter()->IsUndefined()) { 5840 if (!interceptor->getter()->IsUndefined()) {
5840 v8::NamedPropertyGetter getter = 5841 v8::NamedPropertyGetter getter =
5841 v8::ToCData<v8::NamedPropertyGetter>(interceptor->getter()); 5842 v8::ToCData<v8::NamedPropertyGetter>(interceptor->getter());
5842 LOG(ApiNamedPropertyAccess("interceptor-named-get", *holder_handle, name)); 5843 LOG(ApiNamedPropertyAccess("interceptor-named-get", *holder_handle, name));
5843 v8::AccessorInfo info(v8::Utils::ToLocal(receiver_handle), 5844 v8::AccessorInfo info(v8::Utils::ToLocal(receiver_handle),
5844 v8::Utils::ToLocal(data_handle), 5845 v8::Utils::ToLocal(data_handle),
5845 v8::Utils::ToLocal(holder_handle)); 5846 v8::Utils::ToLocal(holder_handle));
5846 v8::Handle<v8::Value> result; 5847 v8::Handle<v8::Value> result;
5847 { 5848 {
5848 // Leaving JavaScript. 5849 // Leaving JavaScript.
5849 VMState state(EXTERNAL); 5850 VMState state(EXTERNAL);
5850 result = getter(v8::Utils::ToLocal(name_handle), info); 5851 result = getter(v8::Utils::ToLocal(name_handle), info);
5851 } 5852 }
5852 if (!Top::has_scheduled_exception() && !result.IsEmpty()) { 5853 if (Top::has_scheduled_exception()) {
5854 return false;
5855 }
5856 if (!result.IsEmpty()) {
5853 *attributes = NONE; 5857 *attributes = NONE;
5854 return *v8::Utils::OpenHandle(*result); 5858 *result_object = *v8::Utils::OpenHandle(*result);
5859 return true;
5855 } 5860 }
5856 } 5861 }
5857 5862
5858 *attributes = ABSENT; 5863 return false;
5859 return Heap::undefined_value();
5860 } 5864 }
5861 5865
5862 5866
5863 Object* JSObject::GetInterceptorPropertyWithLookupHint( 5867 Object* JSObject::GetInterceptorPropertyWithLookupHint(
5864 JSObject* receiver, 5868 JSObject* receiver,
5865 Smi* lookup_hint, 5869 Smi* lookup_hint,
5866 String* name, 5870 String* name,
5867 PropertyAttributes* attributes) { 5871 PropertyAttributes* attributes) {
5868 HandleScope scope; 5872 HandleScope scope;
5869 Handle<JSObject> receiver_handle(receiver); 5873 Handle<JSObject> receiver_handle(receiver);
5870 Handle<JSObject> holder_handle(this); 5874 Handle<JSObject> holder_handle(this);
5871 Handle<String> name_handle(name); 5875 Handle<String> name_handle(name);
5872 5876
5873 Object* result = GetPropertyWithInterceptorProper(receiver, 5877 Object* result = NULL;
5874 name, 5878 if (GetPropertyWithInterceptorProper(receiver, name, attributes, &result)) {
5875 attributes);
5876 if (*attributes != ABSENT) {
5877 return result; 5879 return result;
5880 } else {
5881 RETURN_IF_SCHEDULED_EXCEPTION();
5878 } 5882 }
5879 RETURN_IF_SCHEDULED_EXCEPTION();
5880 5883
5881 int property_index = lookup_hint->value(); 5884 int property_index = lookup_hint->value();
5882 if (property_index >= 0) { 5885 if (property_index >= 0) {
5883 result = holder_handle->FastPropertyAt(property_index); 5886 result = holder_handle->FastPropertyAt(property_index);
5884 } else { 5887 } else {
5885 switch (property_index) { 5888 switch (property_index) {
5886 case kLookupInPrototype: { 5889 case kLookupInPrototype: {
5887 Object* pt = holder_handle->GetPrototype(); 5890 Object* pt = holder_handle->GetPrototype();
5888 *attributes = ABSENT; 5891 *attributes = ABSENT;
5889 if (pt == Heap::null_value()) return Heap::undefined_value(); 5892 if (pt == Heap::null_value()) return Heap::undefined_value();
(...skipping 24 matching lines...) Expand all
5914 5917
5915 Object* JSObject::GetPropertyWithInterceptor( 5918 Object* JSObject::GetPropertyWithInterceptor(
5916 JSObject* receiver, 5919 JSObject* receiver,
5917 String* name, 5920 String* name,
5918 PropertyAttributes* attributes) { 5921 PropertyAttributes* attributes) {
5919 HandleScope scope; 5922 HandleScope scope;
5920 Handle<JSObject> receiver_handle(receiver); 5923 Handle<JSObject> receiver_handle(receiver);
5921 Handle<JSObject> holder_handle(this); 5924 Handle<JSObject> holder_handle(this);
5922 Handle<String> name_handle(name); 5925 Handle<String> name_handle(name);
5923 5926
5924 Object* result = GetPropertyWithInterceptorProper(receiver, name, attributes); 5927 Object* result = NULL;
5925 if (*attributes != ABSENT) { 5928 if (GetPropertyWithInterceptorProper(receiver, name, attributes, &result)) {
5926 return result; 5929 return result;
5930 } else {
5931 RETURN_IF_SCHEDULED_EXCEPTION();
5927 } 5932 }
5928 RETURN_IF_SCHEDULED_EXCEPTION();
5929 5933
5930 result = holder_handle->GetPropertyPostInterceptor( 5934 result = holder_handle->GetPropertyPostInterceptor(
5931 *receiver_handle, 5935 *receiver_handle,
5932 *name_handle, 5936 *name_handle,
5933 attributes); 5937 attributes);
5934 RETURN_IF_SCHEDULED_EXCEPTION(); 5938 RETURN_IF_SCHEDULED_EXCEPTION();
5935 return result; 5939 return result;
5936 } 5940 }
5937 5941
5938 5942
(...skipping 1767 matching lines...) Expand 10 before | Expand all | Expand 10 after
7706 if (break_point_objects()->IsUndefined()) return 0; 7710 if (break_point_objects()->IsUndefined()) return 0;
7707 // Single beak point. 7711 // Single beak point.
7708 if (!break_point_objects()->IsFixedArray()) return 1; 7712 if (!break_point_objects()->IsFixedArray()) return 1;
7709 // Multiple break points. 7713 // Multiple break points.
7710 return FixedArray::cast(break_point_objects())->length(); 7714 return FixedArray::cast(break_point_objects())->length();
7711 } 7715 }
7712 #endif 7716 #endif
7713 7717
7714 7718
7715 } } // namespace v8::internal 7719 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698