[webkit-reviews] review granted: [Bug 123195] Make JSCells have 32-bit Structure pointers : [Attachment 215667] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Oct 31 13:46:15 PDT 2013
Filip Pizlo <fpizlo at apple.com> has granted Mark Hahnenberg
<mhahnenberg at apple.com>'s request for review:
Bug 123195: Make JSCells have 32-bit Structure pointers
https://bugs.webkit.org/show_bug.cgi?id=123195
Attachment 215667: Patch
https://bugs.webkit.org/attachment.cgi?id=215667&action=review
------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=215667&action=review
> Source/JavaScriptCore/jit/JSInterfaceJIT.h:402
> - ALWAYS_INLINE JSInterfaceJIT::Jump
JSInterfaceJIT::emitJumpIfNotType(RegisterID baseReg, RegisterID scratchReg,
JSType type)
> + ALWAYS_INLINE void JSInterfaceJIT::emitLoadStructure(RegisterID source,
RegisterID dest, RegisterID scratch)
> {
> - loadPtr(Address(baseReg, JSCell::structureOffset()), scratchReg);
> - return branch8(NotEqual, Address(scratchReg,
Structure::typeInfoTypeOffset()), TrustedImm32(type));
> +#if USE(JSVALUE64)
> + load32(MacroAssembler::Address(source, JSCell::structureIDOffset()),
dest);
> + loadPtr(vm()->heap.structureIDTable().base(), scratch);
> + loadPtr(BaseIndex(scratch, dest, TimesEight), dest);
> +#else
> + UNUSED_PARAM(scratch);
> + loadPtr(MacroAssembler::Address(source,
JSCell::structureIDOffset()), dest);
> +#endif
> + }
You could put this into AssemblyHelpers.
> Source/JavaScriptCore/jit/UnusedPointer.h:35
> +#if USE(JSVALUE64)
> +static const uintptr_t unusedPointer = 0x0;
> +#else
> static const uintptr_t unusedPointer = 0xd1e7beef;
> +#endif
Kill if possible.
> Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:304
> +# loadb Structure::m_indexingType[structure], scratch
> +# storeb scratch, JSCell::m_indexingType[cell]
> +#
> +# loadb Structure::m_typeInfo + TypeInfo::m_flags[structure], scratch
> +# storeb scratch, JSCell::m_flags[cell]
> +#
> +# loadb Structure::m_typeInfo + TypeInfo::m_type[structure], scratch
> +# storeb scratch, JSCell::m_type[cell]
> +#
> +# storep structure, JSCell::m_structureID[cell]
Delete.
> Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:229
> +# loadb Structure::m_indexingType[structure], scratch
> +# storeb scratch, JSCell::m_indexingType[cell]
> +#
> +# loadb Structure::m_typeInfo + TypeInfo::m_flags[structure], scratch
> +# storeb scratch, JSCell::m_flags[cell]
> +#
> +# loadb Structure::m_typeInfo + TypeInfo::m_type[structure], scratch
> +# storeb scratch, JSCell::m_type[cell]
> +#
> +# loadi Structure::m_structureID[structure], scratch
> +# storei scratch, JSCell::m_structureID[cell]
Srsly bra
More information about the webkit-reviews
mailing list