Changeset 267489 in webkit for trunk/Source/JavaScriptCore/jit/Repatch.cpp
- Timestamp:
- Sep 23, 2020, 10:19:38 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/jit/Repatch.cpp
r266969 r267489 536 536 static auto appropriateGenericPutByIdFunction(const PutPropertySlot &slot, PutKind putKind) -> decltype(&operationPutByIdDirectStrict) 537 537 { 538 if (slot.isStrictMode()) { 539 if (putKind == Direct) 538 switch (putKind) { 539 case PutKind::NotDirect: 540 if (slot.isStrictMode()) 541 return operationPutByIdStrict; 542 return operationPutByIdNonStrict; 543 case PutKind::Direct: 544 if (slot.isStrictMode()) 540 545 return operationPutByIdDirectStrict; 541 if (putKind == DirectPrivateFieldCreate)542 return operationPutByIdDefinePrivateFieldStrict;543 if (putKind == DirectPrivateFieldPut)544 return operationPutByIdPutPrivateFieldStrict;545 return operationPutByIdStrict;546 }547 if (putKind == Direct)548 546 return operationPutByIdDirectNonStrict; 549 return operationPutByIdNonStrict; 547 case PutKind::DirectPrivateFieldDefine: 548 ASSERT(slot.isStrictMode()); 549 return operationPutByIdDefinePrivateFieldStrict; 550 case PutKind::DirectPrivateFieldSet: 551 ASSERT(slot.isStrictMode()); 552 return operationPutByIdSetPrivateFieldStrict; 553 } 554 // Make win port compiler happy 555 RELEASE_ASSERT_NOT_REACHED(); 556 return nullptr; 550 557 } 551 558 552 559 static auto appropriateOptimizingPutByIdFunction(const PutPropertySlot &slot, PutKind putKind) -> decltype(&operationPutByIdDirectStrictOptimize) 553 560 { 554 if (slot.isStrictMode()) { 555 if (putKind == Direct) 561 switch (putKind) { 562 case PutKind::NotDirect: 563 if (slot.isStrictMode()) 564 return operationPutByIdStrictOptimize; 565 return operationPutByIdNonStrictOptimize; 566 case PutKind::Direct: 567 if (slot.isStrictMode()) 556 568 return operationPutByIdDirectStrictOptimize; 557 if (putKind == DirectPrivateFieldCreate)558 return operationPutByIdDefinePrivateFieldStrictOptimize;559 if (putKind == DirectPrivateFieldPut)560 return operationPutByIdPutPrivateFieldStrictOptimize;561 return operationPutByIdStrictOptimize;562 }563 if (putKind == Direct)564 569 return operationPutByIdDirectNonStrictOptimize; 565 return operationPutByIdNonStrictOptimize; 570 case PutKind::DirectPrivateFieldDefine: 571 ASSERT(slot.isStrictMode()); 572 return operationPutByIdDefinePrivateFieldStrictOptimize; 573 case PutKind::DirectPrivateFieldSet: 574 ASSERT(slot.isStrictMode()); 575 return operationPutByIdSetPrivateFieldStrictOptimize; 576 } 577 // Make win port compiler happy 578 RELEASE_ASSERT_NOT_REACHED(); 579 return nullptr; 566 580 } 567 581 … … 609 623 return GiveUpOnCache; 610 624 } 625 626 if (isProxy && (putKind == PutKind::DirectPrivateFieldSet || putKind == PutKind::DirectPrivateFieldDefine)) 627 return GiveUpOnCache; 611 628 612 629 std::unique_ptr<AccessCase> newCase; … … 670 687 std::unique_ptr<PolyProtoAccessChain> prototypeAccessChain; 671 688 ObjectPropertyConditionSet conditionSet; 672 if (putKind == NotDirect) { 673 ASSERT(putKind != DirectPrivateFieldPut && putKind != DirectPrivateFieldCreate); 689 if (putKind == PutKind::NotDirect) { 674 690 auto cacheStatus = prepareChainForCaching(globalObject, baseCell, nullptr); 675 691 if (!cacheStatus) … … 689 705 } 690 706 691 if (putKind == DirectPrivateFieldCreate) {707 if (putKind == PutKind::DirectPrivateFieldDefine) { 692 708 ASSERT(ident.isPrivateName()); 693 709 conditionSet = generateConditionsForPropertyMiss(vm, codeBlock, globalObject, newStructure, ident.impl()); … … 1522 1538 else if (unoptimizedFunction == operationPutByIdDirectStrict || unoptimizedFunction == operationPutByIdDirectStrictOptimize) 1523 1539 optimizedFunction = operationPutByIdDirectStrictOptimize; 1524 else if (unoptimizedFunction == operationPutById PutPrivateFieldStrict || unoptimizedFunction == operationPutByIdPutPrivateFieldStrictOptimize)1525 optimizedFunction = operationPutById PutPrivateFieldStrictOptimize;1540 else if (unoptimizedFunction == operationPutByIdSetPrivateFieldStrict || unoptimizedFunction == operationPutByIdSetPrivateFieldStrictOptimize) 1541 optimizedFunction = operationPutByIdSetPrivateFieldStrictOptimize; 1526 1542 else if (unoptimizedFunction == operationPutByIdDefinePrivateFieldStrict || unoptimizedFunction == operationPutByIdDefinePrivateFieldStrictOptimize) 1527 1543 optimizedFunction = operationPutByIdDefinePrivateFieldStrictOptimize;
Note:
See TracChangeset
for help on using the changeset viewer.