Changeset 215471 in webkit
- Timestamp:
- Apr 18, 2017 10:54:26 AM (7 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r215466 r215471 1 2017-04-18 Michael Saboff <msaboff@apple.com> 2 3 REGRESSION(215272): microbenchmark/seal-and-do-work and microbenchmark/freeze-and-do-work are 27x slower 4 https://bugs.webkit.org/show_bug.cgi?id=170881 5 6 Reviewed by Saam Barati. 7 8 * runtime/ObjectConstructor.cpp: 9 (JSC::objectConstructorSeal): 10 (JSC::objectConstructorFreeze): 11 Restored fast paths for final objects that don't have indexed properties. 12 1 13 2017-04-18 Yusuke Suzuki <utatane.tea@gmail.com> 2 14 -
trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
r215272 r215471 609 609 JSObject* object = asObject(obj); 610 610 611 if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) { 612 object->seal(vm); 613 return JSValue::encode(obj); 614 } 615 611 616 bool success = setIntegrityLevel<IntegrityLevel::Sealed>(exec, vm, object); 612 617 RETURN_IF_EXCEPTION(scope, encodedJSValue()); … … 623 628 VM& vm = exec->vm(); 624 629 auto scope = DECLARE_THROW_SCOPE(vm); 630 631 if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) { 632 object->freeze(vm); 633 return object; 634 } 625 635 626 636 bool success = setIntegrityLevel<IntegrityLevel::Frozen>(exec, vm, object); … … 665 675 JSObject* object = asObject(obj); 666 676 677 // Quick check for final objects. 678 if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) 679 return JSValue::encode(jsBoolean(object->isSealed(vm))); 680 667 681 // 2. Return ? TestIntegrityLevel(O, "sealed"). 668 682 return JSValue::encode(jsBoolean(testIntegrityLevel<IntegrityLevel::Sealed>(exec, vm, object))); … … 678 692 return JSValue::encode(jsBoolean(true)); 679 693 JSObject* object = asObject(obj); 694 695 // Quick check for final objects. 696 if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) 697 return JSValue::encode(jsBoolean(object->isFrozen(vm))); 680 698 681 699 // 2. Return ? TestIntegrityLevel(O, "frozen").
Note: See TracChangeset
for help on using the changeset viewer.