WebKit Bugzilla
Attachment 349256 Details for
Bug 189451
: [CSSJIT] Use lshiftPtr instead of mul32
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189451-20180909035959.patch (text/plain), 3.59 KB, created by
Yusuke Suzuki
on 2018-09-08 12:00:00 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2018-09-08 12:00:00 PDT
Size:
3.59 KB
patch
obsolete
>Subversion Revision: 235827 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index dfff4175f9ef5ca37a1147f611d1244cb5c85a80..09eb4bd9c0b452e6f1b00236d6884ccde0b53337 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2018-09-08 Yusuke Suzuki <yusukesuzuki@slowstart.org> >+ >+ [CSSJIT] Use lshiftPtr instead of mul32 >+ https://bugs.webkit.org/show_bug.cgi?id=189451 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Use `value << 4` instead of `value * 16`. In 64bit environment, sizeof(Style::Relation) is 16, >+ so that we can use `value << 4` in CSS JIT. >+ >+ No behavior change. >+ >+ * cssjit/SelectorCompiler.cpp: >+ (WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation): >+ > 2018-09-07 Fujii Hironori <Hironori.Fujii@sony.com> > > [Win][Clang] exceptionShouldTerminateProgram of StructuredExceptionHandlerSuppressor.cpp should take DWORD >diff --git a/Source/WebCore/cssjit/SelectorCompiler.cpp b/Source/WebCore/cssjit/SelectorCompiler.cpp >index 46ada4fe1b697a2c288289fd20fff08ab25517a0..23b5131c46afef4e099a7e417a26efb47467e4c4 100644 >--- a/Source/WebCore/cssjit/SelectorCompiler.cpp >+++ b/Source/WebCore/cssjit/SelectorCompiler.cpp >@@ -2211,6 +2211,18 @@ void SelectorCodeGenerator::generateAddStyleRelation(Assembler::RegisterID check > auto dataAddress = vectorAddress.withOffset(Style::Relations::dataMemoryOffset()); > auto sizeAddress = vectorAddress.withOffset(Style::Relations::sizeMemoryOffset()); > >+ auto getLastRelationPointer = [&] (RegisterID sizeAndTarget) { >+ m_assembler.sub32(Assembler::TrustedImm32(1), sizeAndTarget); >+#if CPU(ADDRESS64) >+ static_assert(sizeof(Style::Relation) == 16, ""); >+ static_assert(1 << 4 == 16, ""); >+ m_assembler.lshiftPtr(Assembler::TrustedImm32(4), sizeAndTarget); >+#else >+ m_assembler.mul32(TrustedImm32(sizeof(Style::Relation)), sizeAndTarget, sizeAndTarget); >+#endif >+ m_assembler.addPtr(dataAddress, sizeAndTarget); >+ }; >+ > // For AffectsNextSibling we just increment the count if the previous added relation was in the same sibling chain. > Assembler::JumpList mergeSuccess; > if (relationType == Style::Relation::AffectsNextSibling) { >@@ -2223,9 +2235,7 @@ void SelectorCodeGenerator::generateAddStyleRelation(Assembler::RegisterID check > mergeFailure.append(m_assembler.branchTest32(Assembler::Zero, lastRelation)); > > // Style::Relation& lastRelation = checkingContext.styleRelations.last(); >- m_assembler.sub32(Assembler::TrustedImm32(1), lastRelation); >- m_assembler.mul32(Assembler::TrustedImm32(sizeof(Style::Relation)), lastRelation, lastRelation); >- m_assembler.addPtr(dataAddress, lastRelation); >+ getLastRelationPointer(lastRelation); > > // if (lastRelation.type == Style::Relation::AffectsNextSibling) > Assembler::Address typeAddress(lastRelation, OBJECT_OFFSETOF(Style::Relation, type)); >@@ -2259,9 +2269,7 @@ void SelectorCodeGenerator::generateAddStyleRelation(Assembler::RegisterID check > > LocalRegister relationPointer(m_registerAllocator); > m_assembler.load32(sizeAddress, relationPointer); >- m_assembler.sub32(Assembler::TrustedImm32(1), relationPointer); >- m_assembler.mul32(Assembler::TrustedImm32(sizeof(Style::Relation)), relationPointer, relationPointer); >- m_assembler.addPtr(dataAddress, relationPointer); >+ getLastRelationPointer(relationPointer); > > Assembler::Address typeAddress(relationPointer, OBJECT_OFFSETOF(Style::Relation, type)); > m_assembler.store32(Assembler::TrustedImm32(relationType), typeAddress);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189451
:
349256
|
349257