Changeset 295008 in webkit for trunk/Source/JavaScriptCore/jit
- Timestamp:
- May 28, 2022, 8:23:06 PM (3 years ago)
- Location:
- trunk/Source/JavaScriptCore/jit
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
r294794 r295008 333 333 const Structure* structurePtr = reinterpret_cast<const Structure*>(structure.m_value); 334 334 #if USE(JSVALUE64) 335 jit.store64(TrustedImm64(structurePtr->idBlob()), MacroAssembler::Address(dest, JSCell::structureIDOffset())); 335 jit.store32(TrustedImm32(structurePtr->id().bits()), MacroAssembler::Address(dest, JSCell::structureIDOffset())); 336 jit.store32(TrustedImm32(structurePtr->typeInfoBlob()), MacroAssembler::Address(dest, JSCell::indexingTypeAndMiscOffset())); 336 337 if (ASSERT_ENABLED) { 337 338 Jump correctStructure = jit.branch32(Equal, MacroAssembler::Address(dest, JSCell::structureIDOffset()), TrustedImm32(structurePtr->id().bits())); … … 353 354 #else 354 355 // Do a 32-bit wide store to initialize the cell's fields. 355 jit.store32(TrustedImm32(structurePtr-> objectInitializationBlob()), MacroAssembler::Address(dest, JSCell::indexingTypeAndMiscOffset()));356 jit.store32(TrustedImm32(structurePtr->typeInfoBlob()), MacroAssembler::Address(dest, JSCell::indexingTypeAndMiscOffset())); 356 357 jit.storePtr(structure, MacroAssembler::Address(dest, JSCell::structureIDOffset())); 357 358 #endif … … 427 428 load32(MacroAssembler::Address(source, JSCell::structureIDOffset()), dest); 428 429 emitNonNullDecodeZeroExtendedStructureID(dest, dest); 430 } 431 432 void AssemblyHelpers::emitEncodeStructureID(RegisterID source, RegisterID dest) 433 { 434 #if ENABLE(STRUCTURE_ID_WITH_SHIFT) 435 urshift64(source, TrustedImm32(StructureID::encodeShiftAmount), dest); 436 #elif CPU(ADDRESS64) 437 move(source, dest); 438 static_assert(StructureID::structureIDMask <= UINT32_MAX); 439 and64(TrustedImm32(static_cast<uint32_t>(StructureID::structureIDMask)), dest); 440 #else 441 move(source, dest); 442 #endif 429 443 } 430 444 -
trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h
r294965 r295008 1614 1614 void emitLoadStructure(VM&, RegisterID source, RegisterID dest); 1615 1615 void emitLoadPrototype(VM&, GPRReg objectGPR, JSValueRegs resultRegs, JumpList& slowPath); 1616 void emitEncodeStructureID(RegisterID source, RegisterID dest); 1616 1617 1617 1618 void emitStoreStructureWithTypeInfo(TrustedImmPtr structure, RegisterID dest, RegisterID) … … 1622 1623 void emitStoreStructureWithTypeInfo(RegisterID structure, RegisterID dest, RegisterID scratch) 1623 1624 { 1624 #if USE(JSVALUE64) 1625 load64(MacroAssembler::Address(structure, Structure::structureIDOffset()), scratch); 1626 store64(scratch, MacroAssembler::Address(dest, JSCell::structureIDOffset())); 1627 #else 1625 // Store the StructureID 1626 #if USE(JSVALUE64) 1627 emitEncodeStructureID(structure, scratch); 1628 store32(scratch, MacroAssembler::Address(dest, JSCell::structureIDOffset())); 1629 #else 1630 storePtr(structure, MacroAssembler::Address(dest, JSCell::structureIDOffset())); 1631 #endif 1628 1632 // Store all the info flags using a single 32-bit wide load and store. 1629 1633 load32(MacroAssembler::Address(structure, Structure::indexingModeIncludingHistoryOffset()), scratch); 1630 1634 store32(scratch, MacroAssembler::Address(dest, JSCell::indexingTypeAndMiscOffset())); 1631 1632 // Store the StructureID1633 storePtr(structure, MacroAssembler::Address(dest, JSCell::structureIDOffset()));1634 #endif1635 1635 } 1636 1636 … … 1915 1915 storeTrustedValue(JSValue(), Address(butterflyGPR, -sizeof(IndexingHeader) - (i + 1) * sizeof(EncodedJSValue))); 1916 1916 } 1917 1917 1918 void loadCompactPtr(Address address, GPRReg dest) 1919 { 1920 #if HAVE(36BIT_ADDRESS) 1921 load32(address, dest); 1922 lshift64(TrustedImm32(4), dest); 1923 #else 1924 loadPtr(address, dest); 1925 #endif 1926 } 1927 1928 Jump branchCompactPtr(RelationalCondition cond, GPRReg left, Address right, GPRReg scratch) 1929 { 1930 #if HAVE(36BIT_ADDRESS) 1931 ASSERT(left != scratch); 1932 load32(right, scratch); 1933 lshift64(TrustedImm32(4), scratch); 1934 return branchPtr(cond, left, Address(scratch)); 1935 #else 1936 UNUSED_PARAM(scratch); 1937 return branchPtr(cond, left, right); 1938 #endif 1939 } 1940 1918 1941 #if USE(JSVALUE64) 1919 1942 void wangsInt64Hash(GPRReg inputAndResult, GPRReg scratch); -
trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp
r294873 r295008 1741 1741 jit.loadPtr(Address(metadataGPR, OpGetFromScope::Metadata::offsetOfStructure()), scratchGPR); 1742 1742 slowCase.append(jit.branchTestPtr(Zero, scratchGPR)); 1743 jit. load32(Address(scratchGPR, Structure::structureIDOffset()), scratchGPR);1743 jit.emitEncodeStructureID(scratchGPR, scratchGPR); 1744 1744 slowCase.append(jit.branch32(NotEqual, Address(scopeGPR, JSCell::structureIDOffset()), scratchGPR)); 1745 1745 … … 1914 1914 emitGetVirtualRegisterPayload(scope, scopeGPR); 1915 1915 addSlowCase(branchTestPtr(Zero, scratchGPR1)); 1916 load32(Address(scratchGPR1, Structure::structureIDOffset()), scratchGPR1);1916 emitEncodeStructureID(scratchGPR1, scratchGPR1); 1917 1917 addSlowCase(branch32(NotEqual, Address(scopeGPR, JSCell::structureIDOffset()), scratchGPR1)); 1918 1918
Note:
See TracChangeset
for help on using the changeset viewer.