| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 friend class v8::ImplementationUtilities; | 160 friend class v8::ImplementationUtilities; |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 | 163 |
| 164 // ---------------------------------------------------------------------------- | 164 // ---------------------------------------------------------------------------- |
| 165 // Handle operations. | 165 // Handle operations. |
| 166 // They might invoke garbage collection. The result is an handle to | 166 // They might invoke garbage collection. The result is an handle to |
| 167 // an object of expected type, or the handle is an error if running out | 167 // an object of expected type, or the handle is an error if running out |
| 168 // of space or encountering an internal error. | 168 // of space or encountering an internal error. |
| 169 | 169 |
| 170 void NormalizeProperties(Handle<JSObject> object, | |
| 171 PropertyNormalizationMode mode, | |
| 172 int expected_additional_properties); | |
| 173 Handle<NumberDictionary> NormalizeElements(Handle<JSObject> object); | |
| 174 void TransformToFastProperties(Handle<JSObject> object, | |
| 175 int unused_property_fields); | |
| 176 MUST_USE_RESULT Handle<NumberDictionary> NumberDictionarySet( | |
| 177 Handle<NumberDictionary> dictionary, | |
| 178 uint32_t index, | |
| 179 Handle<Object> value, | |
| 180 PropertyDetails details); | |
| 181 | |
| 182 // Flattens a string. | 170 // Flattens a string. |
| 183 void FlattenString(Handle<String> str); | 171 void FlattenString(Handle<String> str); |
| 184 | 172 |
| 185 // Flattens a string and returns the underlying external or sequential | 173 // Flattens a string and returns the underlying external or sequential |
| 186 // string. | 174 // string. |
| 187 Handle<String> FlattenGetString(Handle<String> str); | 175 Handle<String> FlattenGetString(Handle<String> str); |
| 188 | 176 |
| 189 Handle<Object> SetProperty(Handle<JSReceiver> object, | |
| 190 Handle<String> key, | |
| 191 Handle<Object> value, | |
| 192 PropertyAttributes attributes, | |
| 193 StrictModeFlag strict_mode); | |
| 194 | |
| 195 Handle<Object> SetProperty(Handle<Object> object, | 177 Handle<Object> SetProperty(Handle<Object> object, |
| 196 Handle<Object> key, | 178 Handle<Object> key, |
| 197 Handle<Object> value, | 179 Handle<Object> value, |
| 198 PropertyAttributes attributes, | 180 PropertyAttributes attributes, |
| 199 StrictModeFlag strict_mode); | 181 StrictModeFlag strict_mode); |
| 200 | 182 |
| 201 Handle<Object> ForceSetProperty(Handle<JSObject> object, | 183 Handle<Object> ForceSetProperty(Handle<JSObject> object, |
| 202 Handle<Object> key, | 184 Handle<Object> key, |
| 203 Handle<Object> value, | 185 Handle<Object> value, |
| 204 PropertyAttributes attributes); | 186 PropertyAttributes attributes); |
| 205 | 187 |
| 206 Handle<Object> SetNormalizedProperty(Handle<JSObject> object, | |
| 207 Handle<String> key, | |
| 208 Handle<Object> value, | |
| 209 PropertyDetails details); | |
| 210 | |
| 211 Handle<Object> ForceDeleteProperty(Handle<JSObject> object, | 188 Handle<Object> ForceDeleteProperty(Handle<JSObject> object, |
| 212 Handle<Object> key); | 189 Handle<Object> key); |
| 213 | 190 |
| 214 Handle<Object> SetLocalPropertyIgnoreAttributes( | |
| 215 Handle<JSObject> object, | |
| 216 Handle<String> key, | |
| 217 Handle<Object> value, | |
| 218 PropertyAttributes attributes); | |
| 219 | |
| 220 // Used to set local properties on the object we totally control | |
| 221 // and which therefore has no accessors and alikes. | |
| 222 void SetLocalPropertyNoThrow(Handle<JSObject> object, | |
| 223 Handle<String> key, | |
| 224 Handle<Object> value, | |
| 225 PropertyAttributes attributes = NONE); | |
| 226 | |
| 227 MUST_USE_RESULT Handle<Object> SetElement(Handle<JSObject> object, | |
| 228 uint32_t index, | |
| 229 Handle<Object> value, | |
| 230 StrictModeFlag strict_mode); | |
| 231 | |
| 232 Handle<Object> SetOwnElement(Handle<JSObject> object, | |
| 233 uint32_t index, | |
| 234 Handle<Object> value, | |
| 235 StrictModeFlag strict_mode); | |
| 236 | |
| 237 Handle<Object> TransitionElementsKind(Handle<JSObject> object, | |
| 238 ElementsKind to_kind); | |
| 239 | |
| 240 Handle<Object> GetProperty(Handle<JSReceiver> obj, | 191 Handle<Object> GetProperty(Handle<JSReceiver> obj, |
| 241 const char* name); | 192 const char* name); |
| 242 | 193 |
| 243 Handle<Object> GetProperty(Handle<Object> obj, | 194 Handle<Object> GetProperty(Handle<Object> obj, |
| 244 Handle<Object> key); | 195 Handle<Object> key); |
| 245 | 196 |
| 246 Handle<Object> GetPropertyWithInterceptor(Handle<JSObject> receiver, | 197 Handle<Object> GetPropertyWithInterceptor(Handle<JSObject> receiver, |
| 247 Handle<JSObject> holder, | 198 Handle<JSObject> holder, |
| 248 Handle<String> name, | 199 Handle<String> name, |
| 249 PropertyAttributes* attributes); | 200 PropertyAttributes* attributes); |
| 250 | 201 |
| 251 Handle<Object> GetPrototype(Handle<Object> obj); | |
| 252 | |
| 253 Handle<Object> SetPrototype(Handle<JSObject> obj, Handle<Object> value); | 202 Handle<Object> SetPrototype(Handle<JSObject> obj, Handle<Object> value); |
| 254 | 203 |
| 255 // Sets a hidden property on an object. Returns obj on success, undefined | |
| 256 // if trying to set the property on a detached proxy. | |
| 257 Handle<Object> SetHiddenProperty(Handle<JSObject> obj, | |
| 258 Handle<String> key, | |
| 259 Handle<Object> value); | |
| 260 | |
| 261 int GetIdentityHash(Handle<JSReceiver> obj); | |
| 262 | |
| 263 Handle<Object> DeleteElement(Handle<JSObject> obj, uint32_t index); | |
| 264 Handle<Object> DeleteProperty(Handle<JSObject> obj, Handle<String> prop); | |
| 265 | |
| 266 Handle<Object> LookupSingleCharacterStringFromCode(uint32_t index); | 204 Handle<Object> LookupSingleCharacterStringFromCode(uint32_t index); |
| 267 | 205 |
| 268 Handle<JSObject> Copy(Handle<JSObject> obj); | 206 Handle<JSObject> Copy(Handle<JSObject> obj); |
| 269 | 207 |
| 270 Handle<Object> SetAccessor(Handle<JSObject> obj, Handle<AccessorInfo> info); | 208 Handle<Object> SetAccessor(Handle<JSObject> obj, Handle<AccessorInfo> info); |
| 271 | 209 |
| 272 Handle<FixedArray> AddKeysFromJSArray(Handle<FixedArray>, | 210 Handle<FixedArray> AddKeysFromJSArray(Handle<FixedArray>, |
| 273 Handle<JSArray> array); | 211 Handle<JSArray> array); |
| 274 | 212 |
| 275 // Get the JS object corresponding to the given script; create it | 213 // Get the JS object corresponding to the given script; create it |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 // Computes the union of keys and return the result. | 247 // Computes the union of keys and return the result. |
| 310 // Used for implementing "for (n in object) { }" | 248 // Used for implementing "for (n in object) { }" |
| 311 Handle<FixedArray> UnionOfKeys(Handle<FixedArray> first, | 249 Handle<FixedArray> UnionOfKeys(Handle<FixedArray> first, |
| 312 Handle<FixedArray> second); | 250 Handle<FixedArray> second); |
| 313 | 251 |
| 314 Handle<String> SubString(Handle<String> str, | 252 Handle<String> SubString(Handle<String> str, |
| 315 int start, | 253 int start, |
| 316 int end, | 254 int end, |
| 317 PretenureFlag pretenure = NOT_TENURED); | 255 PretenureFlag pretenure = NOT_TENURED); |
| 318 | 256 |
| 319 | |
| 320 // Sets the expected number of properties for the function's instances. | 257 // Sets the expected number of properties for the function's instances. |
| 321 void SetExpectedNofProperties(Handle<JSFunction> func, int nof); | 258 void SetExpectedNofProperties(Handle<JSFunction> func, int nof); |
| 322 | 259 |
| 323 // Sets the prototype property for a function instance. | 260 // Sets the prototype property for a function instance. |
| 324 void SetPrototypeProperty(Handle<JSFunction> func, Handle<JSObject> value); | 261 void SetPrototypeProperty(Handle<JSFunction> func, Handle<JSObject> value); |
| 325 | 262 |
| 326 // Sets the expected number of properties based on estimate from compiler. | 263 // Sets the expected number of properties based on estimate from compiler. |
| 327 void SetExpectedNofPropertiesFromEstimate(Handle<SharedFunctionInfo> shared, | 264 void SetExpectedNofPropertiesFromEstimate(Handle<SharedFunctionInfo> shared, |
| 328 int estimate); | 265 int estimate); |
| 329 | 266 |
| 330 | 267 |
| 331 Handle<JSGlobalProxy> ReinitializeJSGlobalProxy( | 268 Handle<JSGlobalProxy> ReinitializeJSGlobalProxy( |
| 332 Handle<JSFunction> constructor, | 269 Handle<JSFunction> constructor, |
| 333 Handle<JSGlobalProxy> global); | 270 Handle<JSGlobalProxy> global); |
| 334 | 271 |
| 335 Handle<Object> SetPrototype(Handle<JSFunction> function, | 272 Handle<Object> SetPrototype(Handle<JSFunction> function, |
| 336 Handle<Object> prototype); | 273 Handle<Object> prototype); |
| 337 | 274 |
| 338 Handle<Object> PreventExtensions(Handle<JSObject> object); | |
| 339 | |
| 340 Handle<ObjectHashSet> ObjectHashSetAdd(Handle<ObjectHashSet> table, | 275 Handle<ObjectHashSet> ObjectHashSetAdd(Handle<ObjectHashSet> table, |
| 341 Handle<Object> key); | 276 Handle<Object> key); |
| 342 | 277 |
| 343 Handle<ObjectHashSet> ObjectHashSetRemove(Handle<ObjectHashSet> table, | 278 Handle<ObjectHashSet> ObjectHashSetRemove(Handle<ObjectHashSet> table, |
| 344 Handle<Object> key); | 279 Handle<Object> key); |
| 345 | 280 |
| 346 Handle<ObjectHashTable> PutIntoObjectHashTable(Handle<ObjectHashTable> table, | 281 Handle<ObjectHashTable> PutIntoObjectHashTable(Handle<ObjectHashTable> table, |
| 347 Handle<Object> key, | 282 Handle<Object> key, |
| 348 Handle<Object> value); | 283 Handle<Object> value); |
| 349 | 284 |
| 350 class NoHandleAllocation BASE_EMBEDDED { | 285 class NoHandleAllocation BASE_EMBEDDED { |
| 351 public: | 286 public: |
| 352 #ifndef DEBUG | 287 #ifndef DEBUG |
| 353 NoHandleAllocation() {} | 288 NoHandleAllocation() {} |
| 354 ~NoHandleAllocation() {} | 289 ~NoHandleAllocation() {} |
| 355 #else | 290 #else |
| 356 inline NoHandleAllocation(); | 291 inline NoHandleAllocation(); |
| 357 inline ~NoHandleAllocation(); | 292 inline ~NoHandleAllocation(); |
| 358 private: | 293 private: |
| 359 int level_; | 294 int level_; |
| 360 #endif | 295 #endif |
| 361 }; | 296 }; |
| 362 | 297 |
| 363 } } // namespace v8::internal | 298 } } // namespace v8::internal |
| 364 | 299 |
| 365 #endif // V8_HANDLES_H_ | 300 #endif // V8_HANDLES_H_ |
| OLD | NEW |