WebKit Bugzilla
Attachment 339815 Details for
Bug 185421
: [Win] Enable poisoning in 64bit Windows
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
WIP
bug-185421-20180508230910.patch (text/plain), 5.68 KB, created by
Yusuke Suzuki
on 2018-05-08 07:09:11 PDT
(
hide
)
Description:
WIP
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2018-05-08 07:09:11 PDT
Size:
5.68 KB
patch
obsolete
>Subversion Revision: 231482 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index e69a3cf25d04636ddf2ec1a6bf5751e174860948..f6ea7814f47fe68b5f3951608cfa0da1dcb2782c 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,14 @@ >+2018-05-08 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ [Win] Enable poisoning in 64bit Windows >+ https://bugs.webkit.org/show_bug.cgi?id=185421 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * offlineasm/ast.rb: >+ * offlineasm/settings.rb: >+ * offlineasm/x86.rb: >+ > 2018-05-07 Daniel Bates <dabates@apple.com> > > Check X-Frame-Options and CSP frame-ancestors in network process >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index bc6041bf7ed5b8f9814df3647ef6f4054b41e3c8..41dde4dadad003e03f77670877d66533287ea50b 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,12 @@ >+2018-05-08 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ [Win] Enable poisoning in 64bit Windows >+ https://bugs.webkit.org/show_bug.cgi?id=185421 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * wtf/Platform.h: >+ > 2018-05-07 Yusuke Suzuki <utatane.tea@gmail.com> > > [JSCONLY] Enable ARMv7 DFG >diff --git a/Source/JavaScriptCore/offlineasm/ast.rb b/Source/JavaScriptCore/offlineasm/ast.rb >index 0ccf7b331bbb30ee11c976c08eb6b29660d8de15..1fe222294dcce787a266319f8df141123d77851a 100644 >--- a/Source/JavaScriptCore/offlineasm/ast.rb >+++ b/Source/JavaScriptCore/offlineasm/ast.rb >@@ -1055,8 +1055,8 @@ def self.resetReferenced > > def self.forReferencedExtern() > $referencedExternLabels.each { >- | label | >- yield "#{label.name}" >+ | pair | >+ yield "#{pair[0].name}", pair[1] > } > end > >@@ -1155,9 +1155,9 @@ def extern? > $labelMapping[name].is_a? Label and $labelMapping[name].extern? > end > >- def used >- if !$referencedExternLabels.include?(@label) and extern? >- $referencedExternLabels.push(@label) >+ def used type >+ if !$referencedExternLabels.any? {|pair| pair[0] == @label } and extern? >+ $referencedExternLabels.push([@label, type]) > end > end > >diff --git a/Source/JavaScriptCore/offlineasm/settings.rb b/Source/JavaScriptCore/offlineasm/settings.rb >index eec092584fecf441619bd0f87de9ffa08e797d05..17a89cbe9dac4400e0a34d0ed4a05b237621e0fb 100644 >--- a/Source/JavaScriptCore/offlineasm/settings.rb >+++ b/Source/JavaScriptCore/offlineasm/settings.rb >@@ -221,8 +221,8 @@ def emitCodeInConfiguration(concreteSettings, ast, backend) > File.open("#{File.basename($output.path)}.sym", "w") { > | outp | > Label.forReferencedExtern { >- | name | >- outp.puts "EXTERN #{name[1..-1]} : near" >+ | name, type | >+ outp.puts "EXTERN #{name[1..-1]} : #{type}" > } > } > end >diff --git a/Source/JavaScriptCore/offlineasm/x86.rb b/Source/JavaScriptCore/offlineasm/x86.rb >index a059bc7ef802e650913ea5871423c62d1b79737f..09c788c328c56d0be29e11dd0068e68e74886cf1 100644 >--- a/Source/JavaScriptCore/offlineasm/x86.rb >+++ b/Source/JavaScriptCore/offlineasm/x86.rb >@@ -64,7 +64,7 @@ > # the registers. Also, >8 return types are returned in a weird way. > # > # rax => t0, r0 >-# rcx => a0 >+# rcx => t5, a0 > # rdx => t1, a1, r1 > # r8 => t2, a2 > # r9 => t3, a3 >@@ -283,8 +283,7 @@ def x86GPR > when "t4" > isWin ? "r10" : "r8" > when "t5" >- raise "cannot use register #{name} on X86-64 Windows" unless not isWin >- "r10" >+ isWin ? "ecx" : "r10" > when "csr0" > "ebx" > when "csr1" >@@ -463,10 +462,13 @@ def x86CallOperand(kind) > asmLabel > end > def x86LoadOperand(kind, dst) >- # FIXME: Implement this on platforms that aren't Mach-O. >- # https://bugs.webkit.org/show_bug.cgi?id=175104 >- $asm.puts "movq #{asmLabel}@GOTPCREL(%rip), #{dst.x86Operand(:ptr)}" >- "#{offset}(#{dst.x86Operand(kind)})" >+ if isIntelSyntax >+ $asm.puts "mov #{dst.x86Operand(:ptr)}, #{asmLabel}" >+ else >+ $asm.puts "movq #{asmLabel}@GOTPCREL(%rip), #{dst.x86Operand(:ptr)}" >+ end >+ used(isX64 ? "qword" : "dword") >+ "#{getSizeString(kind)}#{offsetRegister(offset, dst.x86Operand(:ptr))}" > end > end > >@@ -584,7 +586,7 @@ def x86Bytes(kind) > > def emitX86Lea(src, dst, kind) > if src.is_a? LabelReference >- $asm.puts "movq #{src.asmLabel}@GOTPCREL(%rip), #{dst.x86Operand(:ptr)}" >+ src.x86LoadOperand(kind, dst) > else > $asm.puts "lea#{x86Suffix(kind)} #{orderOperands(src.x86AddressOperand(kind), dst.x86Operand(kind))}" > end >@@ -1356,7 +1358,7 @@ def lowerX86Common > end > op = operands[0].x86CallOperand(:ptr) > if operands[0].is_a? LabelReference >- operands[0].used >+ operands[0].used("near") > end > $asm.puts "call #{op}" > when "ret" >diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h >index da8444f5d565e15ae5064f7bafcd655655c9c127..cb0fa38aefb743e2b9d1bbe8fc70116cb1e329d6 100644 >--- a/Source/WTF/wtf/Platform.h >+++ b/Source/WTF/wtf/Platform.h >@@ -1005,8 +1005,8 @@ > #endif > > #define ENABLE_POISON 1 >-/* Not currently supported for 32-bit or OS(WINDOWS) builds (because of missing llint support). Make sure it's disabled. */ >-#if USE(JSVALUE32_64) || OS(WINDOWS) >+/* Not currently supported for 32-bit builds (because of missing llint support). Make sure it's disabled. */ >+#if USE(JSVALUE32_64) > #undef ENABLE_POISON > #define ENABLE_POISON 0 > #endif
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 185421
:
339815
|
339959
|
339983
|
339986