Changeset 197412 in webkit for trunk/Source/JavaScriptCore/runtime/JSObject.h
- Timestamp:
- Mar 1, 2016, 1:45:16 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/JSObject.h
r197391 r197412 616 616 JS_EXPORT_PRIVATE void freeze(VM&); 617 617 JS_EXPORT_PRIVATE static bool preventExtensions(JSObject*, ExecState*); 618 JS_EXPORT_PRIVATE static bool isExtensible(JSObject*, ExecState*); 618 619 bool isSealed(VM& vm) { return structure(vm)->isSealed(vm); } 619 620 bool isFrozen(VM& vm) { return structure(vm)->isFrozen(vm); } 620 bool isExtensible() { return structure()->isExtensible(); } 621 private: 622 ALWAYS_INLINE bool isExtensibleImpl() { return isStructureExtensible(); } 623 public: 624 // You should only call isStructureExtensible() when: 625 // - Performing this check in a way that isn't described in the specification 626 // as calling the virtual [[IsExtensible]] trap. 627 // - When you're guaranteed that object->methodTable()->isExtensible isn't 628 // overridden. 629 ALWAYS_INLINE bool isStructureExtensible() { return structure()->isStructureExtensible(); } 630 // You should call this when performing [[IsExtensible]] trap in a place 631 // that is described in the specification. This performs the fully virtual 632 // [[IsExtensible]] trap. 633 ALWAYS_INLINE bool isExtensibleInline(ExecState* exec) 634 { 635 VM& vm = exec->vm(); 636 auto isExtensibleMethod = methodTable(vm)->isExtensible; 637 if (LIKELY(isExtensibleMethod == JSObject::isExtensible)) 638 return isExtensibleImpl(); 639 640 return isExtensibleMethod(this, exec); 641 } 621 642 bool indexingShouldBeSparse() 622 643 { 623 return !is Extensible()644 return !isStructureExtensible() 624 645 || structure()->typeInfo().interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero(); 625 646 } … … 1273 1294 } 1274 1295 1275 if ((mode == PutModePut) && !is Extensible())1296 if ((mode == PutModePut) && !isStructureExtensible()) 1276 1297 return false; 1277 1298 … … 1338 1359 } 1339 1360 1340 if ((mode == PutModePut) && !is Extensible())1361 if ((mode == PutModePut) && !isStructureExtensible()) 1341 1362 return false; 1342 1363
Note:
See TracChangeset
for help on using the changeset viewer.