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

Side by Side Diff: src/objects.h

Issue 10388047: Implement correct checking for inherited readonliness on assignment. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed Michael's comments. Created 8 years, 6 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/ia32/stub-cache-ia32.cc ('k') | src/objects.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 1852 matching lines...) Expand 10 before | Expand all | Expand 10 after
1863 inline int GetInternalFieldCount(); 1863 inline int GetInternalFieldCount();
1864 inline int GetInternalFieldOffset(int index); 1864 inline int GetInternalFieldOffset(int index);
1865 inline Object* GetInternalField(int index); 1865 inline Object* GetInternalField(int index);
1866 inline void SetInternalField(int index, Object* value); 1866 inline void SetInternalField(int index, Object* value);
1867 inline void SetInternalField(int index, Smi* value); 1867 inline void SetInternalField(int index, Smi* value);
1868 1868
1869 // The following lookup functions skip interceptors. 1869 // The following lookup functions skip interceptors.
1870 void LocalLookupRealNamedProperty(String* name, LookupResult* result); 1870 void LocalLookupRealNamedProperty(String* name, LookupResult* result);
1871 void LookupRealNamedProperty(String* name, LookupResult* result); 1871 void LookupRealNamedProperty(String* name, LookupResult* result);
1872 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result); 1872 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result);
1873 void LookupCallbackSetterInPrototypes(String* name, LookupResult* result);
1874 MUST_USE_RESULT MaybeObject* SetElementWithCallbackSetterInPrototypes( 1873 MUST_USE_RESULT MaybeObject* SetElementWithCallbackSetterInPrototypes(
1875 uint32_t index, Object* value, bool* found, StrictModeFlag strict_mode); 1874 uint32_t index, Object* value, bool* found, StrictModeFlag strict_mode);
1876 void LookupCallback(String* name, LookupResult* result); 1875 void LookupCallback(String* name, LookupResult* result);
1877 1876
1878 // Returns the number of properties on this object filtering out properties 1877 // Returns the number of properties on this object filtering out properties
1879 // with the specified attributes (ignoring interceptors). 1878 // with the specified attributes (ignoring interceptors).
1880 int NumberOfLocalProperties(PropertyAttributes filter = NONE); 1879 int NumberOfLocalProperties(PropertyAttributes filter = NONE);
1881 // Fill in details for properties into storage starting at the specified 1880 // Fill in details for properties into storage starting at the specified
1882 // index. 1881 // index.
1883 void GetLocalPropertyNames(FixedArray* storage, int index); 1882 void GetLocalPropertyNames(FixedArray* storage, int index);
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2148 bool check_prototype, 2147 bool check_prototype,
2149 SetPropertyMode set_mode); 2148 SetPropertyMode set_mode);
2150 MUST_USE_RESULT MaybeObject* SetElementWithoutInterceptor( 2149 MUST_USE_RESULT MaybeObject* SetElementWithoutInterceptor(
2151 uint32_t index, 2150 uint32_t index,
2152 Object* value, 2151 Object* value,
2153 PropertyAttributes attributes, 2152 PropertyAttributes attributes,
2154 StrictModeFlag strict_mode, 2153 StrictModeFlag strict_mode,
2155 bool check_prototype, 2154 bool check_prototype,
2156 SetPropertyMode set_mode); 2155 SetPropertyMode set_mode);
2157 2156
2158 // Searches the prototype chain for a callback setter and sets the property 2157 // Searches the prototype chain for property 'name'. If it is found and
2159 // with the setter if it finds one. The '*found' flag indicates whether 2158 // has a setter, invoke it and set '*done' to true. If it is found and is
2160 // a setter was found or not. 2159 // read-only, reject and set '*done' to true. Otherwise, set '*done' to
2161 // This function can cause GC and can return a failure result with 2160 // false. Can cause GC and can return a failure result with '*done==true'.
2162 // '*found==true'. 2161 MUST_USE_RESULT MaybeObject* SetPropertyViaPrototypes(
2163 MUST_USE_RESULT MaybeObject* SetPropertyWithCallbackSetterInPrototypes(
2164 String* name, 2162 String* name,
2165 Object* value, 2163 Object* value,
2166 PropertyAttributes attributes, 2164 PropertyAttributes attributes,
2167 bool* found, 2165 StrictModeFlag strict_mode,
2168 StrictModeFlag strict_mode); 2166 bool* done);
2169 2167
2170 MUST_USE_RESULT MaybeObject* DeletePropertyPostInterceptor(String* name, 2168 MUST_USE_RESULT MaybeObject* DeletePropertyPostInterceptor(String* name,
2171 DeleteMode mode); 2169 DeleteMode mode);
2172 MUST_USE_RESULT MaybeObject* DeletePropertyWithInterceptor(String* name); 2170 MUST_USE_RESULT MaybeObject* DeletePropertyWithInterceptor(String* name);
2173 2171
2174 MUST_USE_RESULT MaybeObject* DeleteElementWithInterceptor(uint32_t index); 2172 MUST_USE_RESULT MaybeObject* DeleteElementWithInterceptor(uint32_t index);
2175 2173
2176 MUST_USE_RESULT MaybeObject* DeleteFastElement(uint32_t index); 2174 MUST_USE_RESULT MaybeObject* DeleteFastElement(uint32_t index);
2177 MUST_USE_RESULT MaybeObject* DeleteDictionaryElement(uint32_t index, 2175 MUST_USE_RESULT MaybeObject* DeleteDictionaryElement(uint32_t index,
2178 DeleteMode mode); 2176 DeleteMode mode);
(...skipping 5542 matching lines...) Expand 10 before | Expand all | Expand 10 after
7721 MUST_USE_RESULT MaybeObject* SetPropertyWithHandler( 7719 MUST_USE_RESULT MaybeObject* SetPropertyWithHandler(
7722 String* name, 7720 String* name,
7723 Object* value, 7721 Object* value,
7724 PropertyAttributes attributes, 7722 PropertyAttributes attributes,
7725 StrictModeFlag strict_mode); 7723 StrictModeFlag strict_mode);
7726 MUST_USE_RESULT MaybeObject* SetElementWithHandler( 7724 MUST_USE_RESULT MaybeObject* SetElementWithHandler(
7727 uint32_t index, 7725 uint32_t index,
7728 Object* value, 7726 Object* value,
7729 StrictModeFlag strict_mode); 7727 StrictModeFlag strict_mode);
7730 7728
7731 // If the handler defines an accessor property, invoke its setter 7729 // If the handler defines an accessor property with a setter, invoke it.
7732 // (or throw if only a getter exists) and set *found to true. Otherwise false. 7730 // If it defines an accessor property without a setter, or a data property
7733 MUST_USE_RESULT MaybeObject* SetPropertyWithHandlerIfDefiningSetter( 7731 // that is read-only, throw. In all these cases set '*done' to true,
7732 // otherwise set it to false.
7733 MUST_USE_RESULT MaybeObject* SetPropertyViaPrototypesWithHandler(
7734 JSObject* receiver,
7734 String* name, 7735 String* name,
7735 Object* value, 7736 Object* value,
7736 PropertyAttributes attributes, 7737 PropertyAttributes attributes,
7737 StrictModeFlag strict_mode, 7738 StrictModeFlag strict_mode,
7738 bool* found); 7739 bool* done);
7739 7740
7740 MUST_USE_RESULT MaybeObject* DeletePropertyWithHandler( 7741 MUST_USE_RESULT MaybeObject* DeletePropertyWithHandler(
7741 String* name, 7742 String* name,
7742 DeleteMode mode); 7743 DeleteMode mode);
7743 MUST_USE_RESULT MaybeObject* DeleteElementWithHandler( 7744 MUST_USE_RESULT MaybeObject* DeleteElementWithHandler(
7744 uint32_t index, 7745 uint32_t index,
7745 DeleteMode mode); 7746 DeleteMode mode);
7746 7747
7747 MUST_USE_RESULT PropertyAttributes GetPropertyAttributeWithHandler( 7748 MUST_USE_RESULT PropertyAttributes GetPropertyAttributeWithHandler(
7748 JSReceiver* receiver, 7749 JSReceiver* receiver,
(...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
8660 } else { 8661 } else {
8661 value &= ~(1 << bit_position); 8662 value &= ~(1 << bit_position);
8662 } 8663 }
8663 return value; 8664 return value;
8664 } 8665 }
8665 }; 8666 };
8666 8667
8667 } } // namespace v8::internal 8668 } } // namespace v8::internal
8668 8669
8669 #endif // V8_OBJECTS_H_ 8670 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/ia32/stub-cache-ia32.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698