<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[225632] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/225632">225632</a></dd>
<dt>Author</dt> <dd>mark.lam@apple.com</dd>
<dt>Date</dt> <dd>2017-12-07 10:49:51 -0800 (Thu, 07 Dec 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Re-landing <a href="http://trac.webkit.org/projects/webkit/changeset/225620">r225620</a>] Refactoring: Rename ScrambledPtr to Poisoned.
https://bugs.webkit.org/show_bug.cgi?id=180514

Reviewed by Saam Barati and JF Bastien.

Re-landing <a href="http://trac.webkit.org/projects/webkit/changeset/225620">r225620</a> with speculative build fix for GCC 7.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSObjectRef.cpp:
(classInfoPrivate):
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::value const):
(JSC::FunctionPtr::executableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr::poisonedPtr const):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::MacroAssemblerCodePtr::scrambledPtr const): Deleted.
* b3/B3LowerMacros.cpp:
* b3/testb3.cpp:
(JSC::B3::testInterpreter):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter64.asm:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCPoisonedPtr.cpp: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp.
(JSC::initializePoison):
(JSC::initializeScrambledPtrKeys): Deleted.
* runtime/JSCPoisonedPtr.h: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.h.
* runtime/JSCScrambledPtr.cpp: Removed.
* runtime/JSCScrambledPtr.h: Removed.
* runtime/JSDestructibleObject.h:
(JSC::JSDestructibleObject::classInfo const):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::classInfo const):
* runtime/Structure.h:
* runtime/VM.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
(WTF::makePoison):
(WTF::makeScrambledPtrKey): Deleted.
* wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
(WTF::PoisonedImpl::PoisonedImpl):
(WTF::PoisonedImpl::assertIsPoisoned const):
(WTF::PoisonedImpl::assertIsNotPoisoned const):
(WTF::PoisonedImpl::unpoisoned const):
(WTF::PoisonedImpl::operator-> const):
(WTF::PoisonedImpl::bits const):
(WTF::PoisonedImpl::operator! const):
(WTF::PoisonedImpl::operator bool const):
(WTF::PoisonedImpl::operator== const):
(WTF::PoisonedImpl::operator==):
(WTF::PoisonedImpl::operator=):
(WTF::PoisonedImpl::poison):
(WTF::PoisonedImpl::unpoison):
(WTF::ScrambledPtr::ScrambledPtr): Deleted.
(WTF::ScrambledPtr::assertIsScrambled const): Deleted.
(WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
(WTF::ScrambledPtr::descrambled const): Deleted.
(WTF::ScrambledPtr::operator-> const): Deleted.
(WTF::ScrambledPtr::bits const): Deleted.
(WTF::ScrambledPtr::operator! const): Deleted.
(WTF::ScrambledPtr::operator bool const): Deleted.
(WTF::ScrambledPtr::operator== const): Deleted.
(WTF::ScrambledPtr::operator==): Deleted.
(WTF::ScrambledPtr::operator=): Deleted.
(WTF::ScrambledPtr::scramble): Deleted.
(WTF::ScrambledPtr::descramble): Deleted.
* wtf/ScrambledPtr.cpp: Removed.
* wtf/ScrambledPtr.h: Removed.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjecth">trunk/Source/JavaScriptCore/API/JSCallbackObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSObjectRefcpp">trunk/Source/JavaScriptCore/API/JSObjectRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreSourcestxt">trunk/Source/JavaScriptCore/Sources.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerMacroAssemblerCodeRefh">trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3B3LowerMacroscpp">trunk/Source/JavaScriptCore/b3/B3LowerMacros.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3testb3cpp">trunk/Source/JavaScriptCore/b3/testb3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitAssemblyHelpersh">trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitSpecializedThunkJITh">trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitThunkGeneratorscpp">trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreter64asm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeInitializeThreadingcpp">trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSDestructibleObjecth">trunk/Source/JavaScriptCore/runtime/JSDestructibleObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSSegmentedVariableObjecth">trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureh">trunk/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMh">trunk/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFxcodeprojprojectpbxproj">trunk/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWTFwtfCMakeListstxt">trunk/Source/WTF/wtf/CMakeLists.txt</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCPoisonedPtrcpp">trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCPoisonedPtrh">trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.h</a></li>
<li><a href="#trunkSourceWTFwtfPoisonedcpp">trunk/Source/WTF/wtf/Poisoned.cpp</a></li>
<li><a href="#trunkSourceWTFwtfPoisonedh">trunk/Source/WTF/wtf/Poisoned.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCScrambledPtrcpp">trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCScrambledPtrh">trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.h</a></li>
<li><a href="#trunkSourceWTFwtfScrambledPtrcpp">trunk/Source/WTF/wtf/ScrambledPtr.cpp</a></li>
<li><a href="#trunkSourceWTFwtfScrambledPtrh">trunk/Source/WTF/wtf/ScrambledPtr.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObject.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObject.h       2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObject.h  2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #ifndef JSCallbackObject_h
</span><span class="cx"> #define JSCallbackObject_h
</span><span class="cx"> 
</span><del>-#include "JSCScrambledPtr.h"
</del><ins>+#include "JSCPoisonedPtr.h"
</ins><span class="cx"> #include "JSObjectRef.h"
</span><span class="cx"> #include "JSValueRef.h"
</span><span class="cx"> #include "JSObject.h"
</span><span class="lines">@@ -234,7 +234,7 @@
</span><span class="cx">     static EncodedJSValue callbackGetter(ExecState*, EncodedJSValue, PropertyName);
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr<JSCallbackObjectData> m_callbackObjectData;
</span><del>-    ClassInfoScrambledPtr m_classInfo;
</del><ins>+    PoisonedClassInfoPtr m_classInfo;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSObjectRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSObjectRef.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSObjectRef.cpp  2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/API/JSObjectRef.cpp     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -431,7 +431,7 @@
</span><span class="cx">     if (vm.currentlyDestructingCallbackObject != jsObject)
</span><span class="cx">         return jsObject->classInfo(vm);
</span><span class="cx"> 
</span><del>-    return vm.currentlyDestructingCallbackObjectClassInfo.descrambled();
</del><ins>+    return vm.currentlyDestructingCallbackObjectClassInfo.unpoisoned();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void* JSObjectGetPrivate(JSObjectRef object)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/ChangeLog       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+2017-12-07  Mark Lam  <mark.lam@apple.com>
+
+        [Re-landing r225620] Refactoring: Rename ScrambledPtr to Poisoned.
+        https://bugs.webkit.org/show_bug.cgi?id=180514
+
+        Reviewed by Saam Barati and JF Bastien.
+
+        Re-landing r225620 with speculative build fix for GCC 7.
+
+        * API/JSCallbackObject.h:
+        * API/JSObjectRef.cpp:
+        (classInfoPrivate):
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * Sources.txt:
+        * assembler/MacroAssemblerCodeRef.h:
+        (JSC::FunctionPtr::FunctionPtr):
+        (JSC::FunctionPtr::value const):
+        (JSC::FunctionPtr::executableAddress const):
+        (JSC::ReturnAddressPtr::ReturnAddressPtr):
+        (JSC::ReturnAddressPtr::value const):
+        (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
+        (JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
+        (JSC::MacroAssemblerCodePtr::poisonedPtr const):
+        (JSC::MacroAssemblerCodePtr:: const):
+        (JSC::MacroAssemblerCodePtr::operator! const):
+        (JSC::MacroAssemblerCodePtr::operator== const):
+        (JSC::MacroAssemblerCodePtr::emptyValue):
+        (JSC::MacroAssemblerCodePtr::deletedValue):
+        (JSC::MacroAssemblerCodePtr::scrambledPtr const): Deleted.
+        * b3/B3LowerMacros.cpp:
+        * b3/testb3.cpp:
+        (JSC::B3::testInterpreter):
+        * dfg/DFGSpeculativeJIT.cpp:
+        (JSC::DFG::SpeculativeJIT::checkArray):
+        (JSC::DFG::SpeculativeJIT::compileCheckSubClass):
+        (JSC::DFG::SpeculativeJIT::compileNewStringObject):
+        (JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
+        * jit/AssemblyHelpers.h:
+        (JSC::AssemblyHelpers::emitAllocateDestructibleObject):
+        * jit/SpecializedThunkJIT.h:
+        (JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
+        * jit/ThunkGenerators.cpp:
+        (JSC::virtualThunkFor):
+        (JSC::boundThisNoArgsFunctionCallGenerator):
+        * llint/LLIntSlowPaths.cpp:
+        (JSC::LLInt::handleHostCall):
+        (JSC::LLInt::setUpCall):
+        * llint/LowLevelInterpreter64.asm:
+        * runtime/InitializeThreading.cpp:
+        (JSC::initializeThreading):
+        * runtime/JSCPoisonedPtr.cpp: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp.
+        (JSC::initializePoison):
+        (JSC::initializeScrambledPtrKeys): Deleted.
+        * runtime/JSCPoisonedPtr.h: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.h.
+        * runtime/JSCScrambledPtr.cpp: Removed.
+        * runtime/JSCScrambledPtr.h: Removed.
+        * runtime/JSDestructibleObject.h:
+        (JSC::JSDestructibleObject::classInfo const):
+        * runtime/JSSegmentedVariableObject.h:
+        (JSC::JSSegmentedVariableObject::classInfo const):
+        * runtime/Structure.h:
+        * runtime/VM.h:
+
</ins><span class="cx"> 2017-12-07  Michael Catanzaro  <mcatanzaro@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r225620
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj     2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1720,7 +1720,7 @@
</span><span class="cx">          FE1C0FFD1B193E9800B53FCA /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = FE1C0FFC1B193E9800B53FCA /* Exception.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          FE20CE9E15F04A9500DF3430 /* LLIntCLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          FE2A87601F02381600EB31B2 /* MinimumReservedZoneSize.h in Headers */ = {isa = PBXBuildFile; fileRef = FE2A875F1F02381600EB31B2 /* MinimumReservedZoneSize.h */; };
</span><del>-               FE2B0B691FD227E00075DA5F /* JSCScrambledPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = FE2B0B671FD0D2960075DA5F /* JSCScrambledPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                FE2B0B691FD227E00075DA5F /* JSCPoisonedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = FE2B0B671FD0D2960075DA5F /* JSCPoisonedPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">           FE3022D31E3D73A500BAC493 /* SigillCrashAnalyzer.h in Headers */ = {isa = PBXBuildFile; fileRef = FE3022D11E3D739600BAC493 /* SigillCrashAnalyzer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          FE3022D71E42857300BAC493 /* VMInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = FE3022D51E42856700BAC493 /* VMInspector.h */; };
</span><span class="cx">          FE318FE01CAC982F00DFCC54 /* ECMAScriptSpecInternalFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = FE318FDE1CAC8C5300DFCC54 /* ECMAScriptSpecInternalFunctions.h */; };
</span><span class="lines">@@ -4598,8 +4598,8 @@
</span><span class="cx">          FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntCLoop.cpp; path = llint/LLIntCLoop.cpp; sourceTree = "<group>"; };
</span><span class="cx">          FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCLoop.h; path = llint/LLIntCLoop.h; sourceTree = "<group>"; };
</span><span class="cx">          FE2A875F1F02381600EB31B2 /* MinimumReservedZoneSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MinimumReservedZoneSize.h; sourceTree = "<group>"; };
</span><del>-               FE2B0B671FD0D2960075DA5F /* JSCScrambledPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCScrambledPtr.h; sourceTree = "<group>"; };
-               FE2B0B681FD0D2970075DA5F /* JSCScrambledPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCScrambledPtr.cpp; sourceTree = "<group>"; };
</del><ins>+                FE2B0B671FD0D2960075DA5F /* JSCPoisonedPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCPoisonedPtr.h; sourceTree = "<group>"; };
+               FE2B0B681FD0D2970075DA5F /* JSCPoisonedPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCPoisonedPtr.cpp; sourceTree = "<group>"; };
</ins><span class="cx">           FE2E6A7A1D6EA5FE0060F896 /* ThrowScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThrowScope.cpp; sourceTree = "<group>"; };
</span><span class="cx">          FE3022D01E3D739600BAC493 /* SigillCrashAnalyzer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SigillCrashAnalyzer.cpp; sourceTree = "<group>"; };
</span><span class="cx">          FE3022D11E3D739600BAC493 /* SigillCrashAnalyzer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SigillCrashAnalyzer.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -6543,8 +6543,8 @@
</span><span class="cx">                          F692A8870255597D01FF60F7 /* JSCJSValue.cpp */,
</span><span class="cx">                          14ABB36E099C076400E2A24F /* JSCJSValue.h */,
</span><span class="cx">                          865A30F0135007E100CDB49E /* JSCJSValueInlines.h */,
</span><del>-                               FE2B0B681FD0D2970075DA5F /* JSCScrambledPtr.cpp */,
-                               FE2B0B671FD0D2960075DA5F /* JSCScrambledPtr.h */,
</del><ins>+                                FE2B0B681FD0D2970075DA5F /* JSCPoisonedPtr.cpp */,
+                               FE2B0B671FD0D2960075DA5F /* JSCPoisonedPtr.h */,
</ins><span class="cx">                           72AAF7CB1D0D318B005E60BE /* JSCustomGetterSetterFunction.cpp */,
</span><span class="cx">                          72AAF7CC1D0D318B005E60BE /* JSCustomGetterSetterFunction.h */,
</span><span class="cx">                          0F2B66BD17B6B5AB00A7AE3F /* JSDataView.cpp */,
</span><span class="lines">@@ -8155,7 +8155,7 @@
</span><span class="cx">                          0FEC852A1BDACDAC0080FF74 /* B3PhaseScope.h in Headers */,
</span><span class="cx">                          0F37308D1C0BD29100052BFA /* B3PhiChildren.h in Headers */,
</span><span class="cx">                          0FEC852C1BDACDAC0080FF74 /* B3Procedure.h in Headers */,
</span><del>-                               FE2B0B691FD227E00075DA5F /* JSCScrambledPtr.h in Headers */,
</del><ins>+                                FE2B0B691FD227E00075DA5F /* JSCPoisonedPtr.h in Headers */,
</ins><span class="cx">                           0FEC852D1BDACDAC0080FF74 /* B3ProcedureInlines.h in Headers */,
</span><span class="cx">                          0F725CAA1C503DED00AD943A /* B3PureCSE.h in Headers */,
</span><span class="cx">                          43422A671C16267800E2EB98 /* B3ReduceDoubleToFloat.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreSourcestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Sources.txt (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Sources.txt  2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/Sources.txt     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -772,7 +772,7 @@
</span><span class="cx"> runtime/JSAsyncGeneratorFunction.cpp
</span><span class="cx"> runtime/JSBoundFunction.cpp
</span><span class="cx"> runtime/JSCJSValue.cpp
</span><del>-runtime/JSCScrambledPtr.cpp
</del><ins>+runtime/JSCPoisonedPtr.cpp
</ins><span class="cx"> runtime/JSCallee.cpp
</span><span class="cx"> runtime/JSCell.cpp
</span><span class="cx"> runtime/JSCustomGetterSetterFunction.cpp
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerMacroAssemblerCodeRefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include "ExecutableAllocator.h"
</span><del>-#include "JSCScrambledPtr.h"
</del><ins>+#include "JSCPoisonedPtr.h"
</ins><span class="cx"> #include <wtf/DataLog.h>
</span><span class="cx"> #include <wtf/PrintStream.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)())
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1, argType2))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1, argType2, argType3))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1, argType2, argType3, argType4))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1, argType2, argType3, argType4, argType5))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx">     FunctionPtr(returnType(*value)(argType1, argType2, argType3, argType4, argType5, argType6))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> // MSVC doesn't seem to treat functions with different calling conventions as
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx">     FunctionPtr(returnType (CDECL *value)())
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx">     FunctionPtr(returnType (CDECL *value)(argType1))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">     FunctionPtr(returnType (CDECL *value)(argType1, argType2))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx">     FunctionPtr(returnType (CDECL *value)(argType1, argType2, argType3))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx">     FunctionPtr(returnType (CDECL *value)(argType1, argType2, argType3, argType4))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">     FunctionPtr(returnType (FASTCALL *value)())
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     FunctionPtr(returnType (FASTCALL *value)(argType1))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     FunctionPtr(returnType (FASTCALL *value)(argType1, argType2))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">     FunctionPtr(returnType (FASTCALL *value)(argType1, argType2, argType3))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx">     FunctionPtr(returnType (FASTCALL *value)(argType1, argType2, argType3, argType4))
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx">         // (I guess on RVTC function pointers have a different constness to GCC/MSVC?)
</span><span class="cx">         : m_value((void*)value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -221,12 +221,12 @@
</span><span class="cx"> 
</span><span class="cx">     void* value() const
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         return m_value;
</span><span class="cx">     }
</span><span class="cx">     void* executableAddress() const
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         return m_value;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx">     explicit ReturnAddressPtr(void* value)
</span><span class="cx">         : m_value(value)
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -254,13 +254,13 @@
</span><span class="cx">     explicit ReturnAddressPtr(FunctionPtr function)
</span><span class="cx">         : m_value(function.value())
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void* value() const
</span><span class="cx">     {
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">         return m_value;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -288,7 +288,7 @@
</span><span class="cx">         : m_value(value)
</span><span class="cx"> #endif
</span><span class="cx">     {
</span><del>-        m_value.assertIsScrambled();
</del><ins>+        m_value.assertIsPoisoned();
</ins><span class="cx">         ASSERT(value);
</span><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="lines">@@ -298,8 +298,8 @@
</span><span class="cx">         ASSERT(value);
</span><span class="cx">         ASSERT_VALID_CODE_POINTER(value);
</span><span class="cx">         MacroAssemblerCodePtr result;
</span><del>-        result.m_value = MasmScrambledPtr(value);
-        result.m_value.assertIsScrambled();
</del><ins>+        result.m_value = PoisonedMasmPtr(value);
+        result.m_value.assertIsPoisoned();
</ins><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -309,17 +309,17 @@
</span><span class="cx">         : m_value(ra.value())
</span><span class="cx">     {
</span><span class="cx">         ASSERT(ra.value());
</span><del>-        m_value.assertIsScrambled();
</del><ins>+        m_value.assertIsPoisoned();
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    MasmScrambledPtr scrambledPtr() const { return m_value; }
</del><ins>+    PoisonedMasmPtr poisonedPtr() const { return m_value; }
</ins><span class="cx"> 
</span><span class="cx">     template<typename T = void*>
</span><span class="cx">     T executableAddress() const
</span><span class="cx">     {
</span><del>-        m_value.assertIsScrambled();
-        return m_value ? m_value.descrambled<T>() : static_cast<T>(0);
</del><ins>+        m_value.assertIsPoisoned();
+        return m_value.unpoisoned<T>();
</ins><span class="cx">     }
</span><span class="cx"> #if CPU(ARM_THUMB2)
</span><span class="cx">     // To use this pointer as a data address remove the decoration.
</span><span class="lines">@@ -326,25 +326,25 @@
</span><span class="cx">     template<typename T = void*>
</span><span class="cx">     T dataLocation() const
</span><span class="cx">     {
</span><del>-        m_value.assertIsScrambled();
</del><ins>+        m_value.assertIsPoisoned();
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><del>-        return bitwise_cast<T>(m_value ? m_value.descrambled<char*>() - 1 : nullptr);
</del><ins>+        return bitwise_cast<T>(m_value ? m_value.unpoisoned<char*>() - 1 : nullptr);
</ins><span class="cx">     }
</span><span class="cx"> #else
</span><span class="cx">     template<typename T = void*>
</span><span class="cx">     T dataLocation() const
</span><span class="cx">     {
</span><del>-        m_value.assertIsScrambled();
</del><ins>+        m_value.assertIsPoisoned();
</ins><span class="cx">         ASSERT_VALID_CODE_POINTER(m_value);
</span><del>-        return m_value ? m_value.descrambled<T>() : static_cast<T>(0);
</del><ins>+        return m_value.unpoisoned<T>();
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool operator!() const
</span><span class="cx">     {
</span><del>-#if ENABLE(SCRAMBLED_PTR_ASSERTS)
</del><ins>+#if ENABLE(POISON_ASSERTS)
</ins><span class="cx">         if (!isEmptyValue() && !isDeletedValue())
</span><del>-            m_value.assertIsScrambled();
</del><ins>+            m_value.assertIsPoisoned();
</ins><span class="cx"> #endif
</span><span class="cx">         return !m_value;
</span><span class="cx">     }
</span><span class="lines">@@ -352,17 +352,17 @@
</span><span class="cx">     
</span><span class="cx">     bool operator==(const MacroAssemblerCodePtr& other) const
</span><span class="cx">     {
</span><del>-#if ENABLE(SCRAMBLED_PTR_ASSERTS)
</del><ins>+#if ENABLE(POISON_ASSERTS)
</ins><span class="cx">         if (!isEmptyValue() && !isDeletedValue())
</span><del>-            m_value.assertIsScrambled();
</del><ins>+            m_value.assertIsPoisoned();
</ins><span class="cx">         if (!other.isEmptyValue() && !other.isDeletedValue())
</span><del>-            other.m_value.assertIsScrambled();
</del><ins>+            other.m_value.assertIsPoisoned();
</ins><span class="cx"> #endif
</span><span class="cx">         return m_value == other.m_value;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Disallow any casting operations (except for booleans). Instead, the client
</span><del>-    // should be asking for scrambledPtr() or executableAddress() explicitly.
</del><ins>+    // should be asking for poisonedPtr() or executableAddress() explicitly.
</ins><span class="cx">     template<typename T, typename = std::enable_if_t<!std::is_same<T, bool>::value>>
</span><span class="cx">     operator T() = delete;
</span><span class="cx"> 
</span><span class="lines">@@ -389,10 +389,10 @@
</span><span class="cx">     static void initialize();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static MasmScrambledPtr emptyValue() { return MasmScrambledPtr(1); }
-    static MasmScrambledPtr deletedValue() { return MasmScrambledPtr(2); }
</del><ins>+    static PoisonedMasmPtr emptyValue() { return PoisonedMasmPtr(1); }
+    static PoisonedMasmPtr deletedValue() { return PoisonedMasmPtr(2); }
</ins><span class="cx"> 
</span><del>-    MasmScrambledPtr m_value;
</del><ins>+    PoisonedMasmPtr m_value;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> struct MacroAssemblerCodePtrHash {
</span><span class="lines">@@ -479,7 +479,7 @@
</span><span class="cx"> inline FunctionPtr::FunctionPtr(MacroAssemblerCodePtr ptr)
</span><span class="cx">     : m_value(ptr.executableAddress())
</span><span class="cx"> {
</span><del>-    MasmScrambledPtr::assertIsNotScrambled(m_value);
</del><ins>+    PoisonedMasmPtr::assertIsNotPoisoned(m_value);
</ins><span class="cx">     ASSERT_VALID_CODE_POINTER(m_value);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3B3LowerMacroscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/B3LowerMacros.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/B3LowerMacros.cpp 2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/b3/B3LowerMacros.cpp    2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -505,12 +505,12 @@
</span><span class="cx">                         
</span><span class="cx">                         GPRReg index = params[0].gpr();
</span><span class="cx">                         GPRReg scratch = params.gpScratch(0);
</span><del>-                        GPRReg descramblerKey = params.gpScratch(1);
</del><ins>+                        GPRReg poisonScratch = params.gpScratch(1);
</ins><span class="cx"> 
</span><del>-                        jit.move(CCallHelpers::TrustedImm64(g_masmScrambledPtrKey), descramblerKey);
</del><ins>+                        jit.move(CCallHelpers::TrustedImm64(g_masmPoison), poisonScratch);
</ins><span class="cx">                         jit.move(CCallHelpers::TrustedImmPtr(jumpTable), scratch);
</span><span class="cx">                         jit.load64(CCallHelpers::BaseIndex(scratch, index, CCallHelpers::timesPtr()), scratch);
</span><del>-                        jit.xor64(descramblerKey, scratch);
</del><ins>+                        jit.xor64(poisonScratch, scratch);
</ins><span class="cx">                         jit.jump(scratch);
</span><span class="cx"> 
</span><span class="cx">                         // These labels are guaranteed to be populated before either late paths or
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3testb3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/testb3.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/testb3.cpp        2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/b3/testb3.cpp   2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -13030,12 +13030,12 @@
</span><span class="cx">                 params.proc().addDataSection(sizeof(MacroAssemblerCodePtr) * labels.size()));
</span><span class="cx"> 
</span><span class="cx">             GPRReg scratch = params.gpScratch(0);
</span><del>-            GPRReg descramblerKey = params.gpScratch(1);
</del><ins>+            GPRReg poisonScratch = params.gpScratch(1);
</ins><span class="cx"> 
</span><span class="cx">             jit.move(CCallHelpers::TrustedImmPtr(jumpTable), scratch);
</span><del>-            jit.move(CCallHelpers::TrustedImm64(g_masmScrambledPtrKey), descramblerKey);
</del><ins>+            jit.move(CCallHelpers::TrustedImm64(g_masmPoison), poisonScratch);
</ins><span class="cx">             jit.load64(CCallHelpers::BaseIndex(scratch, params[0].gpr(), CCallHelpers::timesPtr()), scratch);
</span><del>-            jit.xor64(descramblerKey, scratch);
</del><ins>+            jit.xor64(poisonScratch, scratch);
</ins><span class="cx">             jit.jump(scratch);
</span><span class="cx"> 
</span><span class="cx">             jit.addLinkTask(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -868,7 +868,7 @@
</span><span class="cx">         m_jit.branchPtr(
</span><span class="cx">             MacroAssembler::NotEqual,
</span><span class="cx">             MacroAssembler::Address(temp.gpr(), Structure::classInfoOffset()),
</span><del>-            TrustedImmPtr(ClassInfoScrambledPtr(expectedClassInfo).bits())));
</del><ins>+            TrustedImmPtr(PoisonedClassInfoPtr(expectedClassInfo).bits())));
</ins><span class="cx"> 
</span><span class="cx">     noResult(m_currentNode);
</span><span class="cx"> }
</span><span class="lines">@@ -8706,7 +8706,7 @@
</span><span class="cx">         m_jit.emitLoadStructure(*m_jit.vm(), baseGPR, otherGPR, specifiedGPR);
</span><span class="cx">         m_jit.loadPtr(CCallHelpers::Address(otherGPR, Structure::classInfoOffset()), otherGPR);
</span><span class="cx"> #if USE(JSVALUE64)
</span><del>-        m_jit.move(CCallHelpers::TrustedImm64(g_classInfoScrambledPtrKey), specifiedGPR);
</del><ins>+        m_jit.move(CCallHelpers::TrustedImm64(g_classInfoPoison), specifiedGPR);
</ins><span class="cx">         m_jit.xor64(specifiedGPR, otherGPR);
</span><span class="cx"> #endif
</span><span class="cx">         m_jit.move(CCallHelpers::TrustedImmPtr(node->classInfo()), specifiedGPR);
</span><span class="lines">@@ -9003,7 +9003,7 @@
</span><span class="cx">         slowPath);
</span><span class="cx">     
</span><span class="cx">     m_jit.storePtr(
</span><del>-        TrustedImmPtr(ClassInfoScrambledPtr(StringObject::info()).bits()),
</del><ins>+        TrustedImmPtr(PoisonedClassInfoPtr(StringObject::info()).bits()),
</ins><span class="cx">         JITCompiler::Address(resultGPR, JSDestructibleObject::classInfoOffset()));
</span><span class="cx"> #if USE(JSVALUE64)
</span><span class="cx">     m_jit.store64(
</span><span class="lines">@@ -9774,7 +9774,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SpeculativeJIT::emitSwitchIntJump(
</span><del>-    SwitchData* data, GPRReg value, GPRReg scratch, GPRReg descramblerKeyScratch)
</del><ins>+    SwitchData* data, GPRReg value, GPRReg scratch, GPRReg poisonScratch)
</ins><span class="cx"> {
</span><span class="cx">     SimpleJumpTable& table = m_jit.codeBlock()->switchJumpTable(data->switchTableIndex);
</span><span class="cx">     table.ensureCTITable();
</span><span class="lines">@@ -9782,15 +9782,15 @@
</span><span class="cx">     addBranch(
</span><span class="cx">         m_jit.branch32(JITCompiler::AboveOrEqual, value, Imm32(table.ctiOffsets.size())),
</span><span class="cx">         data->fallThrough.block);
</span><del>-    UNUSED_PARAM(descramblerKeyScratch); // Placate the 32-bit build.
</del><ins>+    UNUSED_PARAM(poisonScratch); // Placate the 32-bit build.
</ins><span class="cx"> #if USE(JSVALUE64)
</span><del>-    m_jit.move(TrustedImm64(g_masmScrambledPtrKey), descramblerKeyScratch);
</del><ins>+    m_jit.move(TrustedImm64(g_masmPoison), poisonScratch);
</ins><span class="cx"> #endif
</span><span class="cx">     m_jit.move(TrustedImmPtr(table.ctiOffsets.begin()), scratch);
</span><span class="cx">     m_jit.loadPtr(JITCompiler::BaseIndex(scratch, value, JITCompiler::timesPtr()), scratch);
</span><span class="cx">     
</span><span class="cx"> #if USE(JSVALUE64)
</span><del>-    m_jit.xor64(descramblerKeyScratch, scratch);
</del><ins>+    m_jit.xor64(poisonScratch, scratch);
</ins><span class="cx"> #endif
</span><span class="cx">     m_jit.jump(scratch);
</span><span class="cx">     data->didUseJumpTable = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -5010,7 +5010,7 @@
</span><span class="cx">         LBasicBlock lastNext = m_out.insertNewBlocksBefore(slowCase);
</span><span class="cx"> 
</span><span class="cx">         LValue fastResultValue = allocateObject<StringObject>(structure, m_out.intPtrZero, slowCase);
</span><del>-        m_out.storePtr(m_out.constIntPtr(ClassInfoScrambledPtr(StringObject::info()).bits()), fastResultValue, m_heaps.JSDestructibleObject_classInfo);
</del><ins>+        m_out.storePtr(m_out.constIntPtr(PoisonedClassInfoPtr(StringObject::info()).bits()), fastResultValue, m_heaps.JSDestructibleObject_classInfo);
</ins><span class="cx">         m_out.store64(string, fastResultValue, m_heaps.JSWrapperObject_internalValue);
</span><span class="cx">         mutatorFence();
</span><span class="cx">         ValueFromBlock fastResult = m_out.anchor(fastResultValue);
</span><span class="lines">@@ -11170,8 +11170,8 @@
</span><span class="cx">             LBasicBlock continuation = m_out.newBlock();
</span><span class="cx"> 
</span><span class="cx">             LValue structure = loadStructure(cell);
</span><del>-            LValue scrambledClassInfo = m_out.loadPtr(structure, m_heaps.Structure_classInfo);
-            LValue classInfo = m_out.bitXor(scrambledClassInfo, m_out.constInt64(g_classInfoScrambledPtrKey));
</del><ins>+            LValue poisonedClassInfo = m_out.loadPtr(structure, m_heaps.Structure_classInfo);
+            LValue classInfo = m_out.bitXor(poisonedClassInfo, m_out.constInt64(g_classInfoPoison));
</ins><span class="cx">             ValueFromBlock otherAtStart = m_out.anchor(classInfo);
</span><span class="cx">             m_out.jump(loop);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitAssemblyHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h        2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h   2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1625,7 +1625,7 @@
</span><span class="cx">     void emitAllocateDestructibleObject(VM& vm, GPRReg resultGPR, Structure* structure, GPRReg scratchGPR1, GPRReg scratchGPR2, JumpList& slowPath)
</span><span class="cx">     {
</span><span class="cx">         emitAllocateJSObject<ClassType>(vm, resultGPR, TrustedImmPtr(structure), TrustedImmPtr(0), scratchGPR1, scratchGPR2, slowPath);
</span><del>-        storePtr(TrustedImmPtr(ClassInfoScrambledPtr(structure->classInfo()).bits()), Address(resultGPR, JSDestructibleObject::classInfoOffset()));
</del><ins>+        storePtr(TrustedImmPtr(PoisonedClassInfoPtr(structure->classInfo()).bits()), Address(resultGPR, JSDestructibleObject::classInfoOffset()));
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     void emitInitializeInlineStorage(GPRReg baseGPR, unsigned inlineCapacity)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitSpecializedThunkJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">         {
</span><span class="cx">             loadCellArgument(argument, dst);
</span><span class="cx">             emitLoadStructure(*vm(), dst, scratch, dst);
</span><del>-            appendFailure(branchPtr(NotEqual, Address(scratch, Structure::classInfoOffset()), TrustedImmPtr(ClassInfoScrambledPtr(classInfo).bits())));
</del><ins>+            appendFailure(branchPtr(NotEqual, Address(scratch, Structure::classInfoOffset()), TrustedImmPtr(PoisonedClassInfoPtr(classInfo).bits())));
</ins><span class="cx">             // We have to reload the argument since emitLoadStructure clobbered it.
</span><span class="cx">             loadCellArgument(argument, dst);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitThunkGeneratorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx">     // Now we know that we have a CodeBlock, and we're committed to making a fast
</span><span class="cx">     // call.
</span><span class="cx"> #if USE(JSVALUE64)
</span><del>-    jit.move(CCallHelpers::TrustedImm64(g_masmScrambledPtrKey), GPRInfo::regT1);
</del><ins>+    jit.move(CCallHelpers::TrustedImm64(g_masmPoison), GPRInfo::regT1);
</ins><span class="cx">     jit.xor64(GPRInfo::regT1, GPRInfo::regT4);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1163,7 +1163,7 @@
</span><span class="cx">     CCallHelpers::Jump noCode = jit.branchTestPtr(CCallHelpers::Zero, GPRInfo::regT0);
</span><span class="cx">     
</span><span class="cx"> #if USE(JSVALUE64)
</span><del>-    jit.move(CCallHelpers::TrustedImm64(g_masmScrambledPtrKey), GPRInfo::regT1);
</del><ins>+    jit.move(CCallHelpers::TrustedImm64(g_masmPoison), GPRInfo::regT1);
</ins><span class="cx">     jit.xor64(GPRInfo::regT1, GPRInfo::regT0);
</span><span class="cx"> #endif
</span><span class="cx">     emitPointerValidation(jit, GPRInfo::regT0);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp     2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1303,7 +1303,7 @@
</span><span class="cx">             execCallee->setCallee(asObject(callee));
</span><span class="cx">             vm.hostCallReturnValue = JSValue::decode(callData.native.function(execCallee));
</span><span class="cx">             
</span><del>-            MasmScrambledPtr::assertIsNotScrambled(LLInt::getCodePtr(getHostCallReturnValue));
</del><ins>+            PoisonedMasmPtr::assertIsNotPoisoned(LLInt::getCodePtr(getHostCallReturnValue));
</ins><span class="cx">             LLINT_CALL_RETURN(execCallee, execCallee, LLInt::getCodePtr(getHostCallReturnValue));
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -1327,7 +1327,7 @@
</span><span class="cx">         execCallee->setCallee(asObject(callee));
</span><span class="cx">         vm.hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee));
</span><span class="cx"> 
</span><del>-        MasmScrambledPtr::assertIsNotScrambled(LLInt::getCodePtr(getHostCallReturnValue));
</del><ins>+        PoisonedMasmPtr::assertIsNotPoisoned(LLInt::getCodePtr(getHostCallReturnValue));
</ins><span class="cx">         LLINT_CALL_RETURN(execCallee, execCallee, LLInt::getCodePtr(getHostCallReturnValue));
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -1368,7 +1368,7 @@
</span><span class="cx">                 callLinkInfo->machineCodeTarget = codePtr;
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            MasmScrambledPtr::assertIsNotScrambled(codePtr.executableAddress());
</del><ins>+            PoisonedMasmPtr::assertIsNotPoisoned(codePtr.executableAddress());
</ins><span class="cx">             LLINT_CALL_RETURN(exec, execCallee, codePtr.executableAddress());
</span><span class="cx">         }
</span><span class="cx">         throwScope.release();
</span><span class="lines">@@ -1419,7 +1419,7 @@
</span><span class="cx">             codeBlock->linkIncomingCall(exec, callLinkInfo);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    MasmScrambledPtr::assertIsNotScrambled(codePtr.executableAddress());
</del><ins>+    PoisonedMasmPtr::assertIsNotPoisoned(codePtr.executableAddress());
</ins><span class="cx">     LLINT_CALL_RETURN(exec, execCallee, codePtr.executableAddress());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreter64asm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1950,7 +1950,7 @@
</span><span class="cx">         prepareCall(LLIntCallLinkInfo::machineCodeTarget[t1], t2, t3, t4)
</span><span class="cx">         callTargetFunction(LLIntCallLinkInfo::machineCodeTarget[t1])
</span><span class="cx">     else
</span><del>-        loadp _g_masmScrambledPtrKey, t2
</del><ins>+        loadp _g_masmPoison, t2
</ins><span class="cx">         xorp LLIntCallLinkInfo::machineCodeTarget[t1], t2
</span><span class="cx">         prepareCall(t2, t1, t3, t4)
</span><span class="cx">         callTargetFunction(t2)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInitializeThreadingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> 
</span><span class="cx">     std::call_once(initializeThreadingOnceFlag, []{
</span><span class="cx">         WTF::initializeThreading();
</span><del>-        initializeScrambledPtrKeys();
</del><ins>+        initializePoison();
</ins><span class="cx">         Options::initialize();
</span><span class="cx"> #if ENABLE(WRITE_BARRIER_PROFILING)
</span><span class="cx">         WriteBarrierCounters::initialize();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCPoisonedPtrcppfromrev225631trunkSourceJavaScriptCoreruntimeJSCScrambledPtrcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp (from rev 225631, trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp) (0 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp                           (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp      2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSCPoisonedPtr.h"
+
+namespace JSC {
+
+uintptr_t g_classInfoPoison;
+uintptr_t g_masmPoison;
+
+void initializePoison()
+{
+    static std::once_flag initializeOnceFlag;
+    std::call_once(initializeOnceFlag, [] {
+        g_classInfoPoison = makePoison();
+        g_masmPoison = makePoison();
+    });
+}
+
+} // namespace JSC
+
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCPoisonedPtrhfromrev225631trunkSourceJavaScriptCoreruntimeJSCScrambledPtrh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.h (from rev 225631, trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.h) (0 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.h                             (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/JSCPoisonedPtr.h        2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/Poisoned.h>
+
+namespace JSC {
+
+extern "C" JS_EXPORTDATA uintptr_t g_classInfoPoison;
+extern "C" JS_EXPORTDATA uintptr_t g_masmPoison;
+
+struct ClassInfo;
+
+using PoisonedClassInfoPtr = Poisoned<g_classInfoPoison, const ClassInfo*>;
+using PoisonedMasmPtr = Poisoned<g_masmPoison, void*>;
+
+void initializePoison();
+
+} // namespace JSC
+
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCScrambledPtrcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp  2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,44 +0,0 @@
</span><del>-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "JSCScrambledPtr.h"
-
-namespace JSC {
-
-uintptr_t g_classInfoScrambledPtrKey;
-uintptr_t g_masmScrambledPtrKey;
-
-void initializeScrambledPtrKeys()
-{
-    static std::once_flag initializeOnceFlag;
-    std::call_once(initializeOnceFlag, [] {
-        g_classInfoScrambledPtrKey = makeScrambledPtrKey();
-        g_masmScrambledPtrKey = makeScrambledPtrKey();
-    });
-}
-
-} // namespace JSC
-
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCScrambledPtrh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.h    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/JSCScrambledPtr.h       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,43 +0,0 @@
</span><del>-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include <wtf/ScrambledPtr.h>
-
-namespace JSC {
-
-extern "C" JS_EXPORTDATA uintptr_t g_classInfoScrambledPtrKey;
-extern "C" JS_EXPORTDATA uintptr_t g_masmScrambledPtrKey;
-
-struct ClassInfo;
-
-using ClassInfoScrambledPtr = ScrambledPtr<const ClassInfo*, g_classInfoScrambledPtrKey>;
-using MasmScrambledPtr = ScrambledPtr<void*, g_masmScrambledPtrKey>;
-
-void initializeScrambledPtrKeys();
-
-} // namespace JSC
-
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSDestructibleObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSDestructibleObject.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSDestructibleObject.h       2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/JSDestructibleObject.h  2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">         return &vm.destructibleObjectSpace;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const ClassInfo* classInfo() const { return m_classInfo.descrambled(); }
</del><ins>+    const ClassInfo* classInfo() const { return m_classInfo.unpoisoned(); }
</ins><span class="cx">     
</span><span class="cx">     static ptrdiff_t classInfoOffset() { return OBJECT_OFFSETOF(JSDestructibleObject, m_classInfo); }
</span><span class="cx"> 
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    ClassInfoScrambledPtr m_classInfo;
</del><ins>+    PoisonedClassInfoPtr m_classInfo;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSSegmentedVariableObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h  2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">         return &vm.segmentedVariableObjectSpace;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    const ClassInfo* classInfo() const { return m_classInfo.descrambled(); }
</del><ins>+    const ClassInfo* classInfo() const { return m_classInfo.unpoisoned(); }
</ins><span class="cx">     
</span><span class="cx"> protected:
</span><span class="cx">     JSSegmentedVariableObject(VM&, Structure*, JSScope*);
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">     SegmentedVector<WriteBarrier<Unknown>, 16> m_variables;
</span><span class="cx">     ConcurrentJSLock m_lock;
</span><span class="cx">     bool m_alreadyDestroyed { false }; // We use these assertions to check that we aren't doing ancient hacks that result in this being destroyed more than once.
</span><del>-    ClassInfoScrambledPtr m_classInfo;
</del><ins>+    PoisonedClassInfoPtr m_classInfo;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.h  2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/Structure.h     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -468,7 +468,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setObjectToStringValue(ExecState*, VM&, JSString* value, PropertySlot toStringTagSymbolSlot);
</span><span class="cx"> 
</span><del>-    const ClassInfo* classInfo() const { return m_classInfo.descrambled(); }
</del><ins>+    const ClassInfo* classInfo() const { return m_classInfo.unpoisoned(); }
</ins><span class="cx"> 
</span><span class="cx">     static ptrdiff_t structureIDOffset()
</span><span class="cx">     {
</span><span class="lines">@@ -798,7 +798,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr<UniquedStringImpl> m_nameInPrevious;
</span><span class="cx"> 
</span><del>-    ClassInfoScrambledPtr m_classInfo;
</del><ins>+    PoisonedClassInfoPtr m_classInfo;
</ins><span class="cx"> 
</span><span class="cx">     StructureTransitionTable m_transitionTable;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.h 2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/JavaScriptCore/runtime/VM.h    2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -414,7 +414,7 @@
</span><span class="cx">     std::unique_ptr<PromiseDeferredTimer> promiseDeferredTimer;
</span><span class="cx">     
</span><span class="cx">     JSCell* currentlyDestructingCallbackObject;
</span><del>-    ClassInfoScrambledPtr currentlyDestructingCallbackObjectClassInfo;
</del><ins>+    PoisonedClassInfoPtr currentlyDestructingCallbackObjectClassInfo;
</ins><span class="cx"> 
</span><span class="cx">     AtomicStringTable* m_atomicStringTable;
</span><span class="cx">     WTF::SymbolRegistry m_symbolRegistry;
</span></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog       2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/WTF/ChangeLog  2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,3 +1,47 @@
</span><ins>+2017-12-07  Mark Lam  <mark.lam@apple.com>
+
+        [Re-landing r225620] Refactoring: Rename ScrambledPtr to Poisoned.
+        https://bugs.webkit.org/show_bug.cgi?id=180514
+
+        Reviewed by Saam Barati and JF Bastien.
+
+        Re-landing r225620 with speculative build fix for GCC 7.
+
+        * WTF.xcodeproj/project.pbxproj:
+        * wtf/CMakeLists.txt:
+        * wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
+        (WTF::makePoison):
+        (WTF::makeScrambledPtrKey): Deleted.
+        * wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
+        (WTF::PoisonedImpl::PoisonedImpl):
+        (WTF::PoisonedImpl::assertIsPoisoned const):
+        (WTF::PoisonedImpl::assertIsNotPoisoned const):
+        (WTF::PoisonedImpl::unpoisoned const):
+        (WTF::PoisonedImpl::operator-> const):
+        (WTF::PoisonedImpl::bits const):
+        (WTF::PoisonedImpl::operator! const):
+        (WTF::PoisonedImpl::operator bool const):
+        (WTF::PoisonedImpl::operator== const):
+        (WTF::PoisonedImpl::operator==):
+        (WTF::PoisonedImpl::operator=):
+        (WTF::PoisonedImpl::poison):
+        (WTF::PoisonedImpl::unpoison):
+        (WTF::ScrambledPtr::ScrambledPtr): Deleted.
+        (WTF::ScrambledPtr::assertIsScrambled const): Deleted.
+        (WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
+        (WTF::ScrambledPtr::descrambled const): Deleted.
+        (WTF::ScrambledPtr::operator-> const): Deleted.
+        (WTF::ScrambledPtr::bits const): Deleted.
+        (WTF::ScrambledPtr::operator! const): Deleted.
+        (WTF::ScrambledPtr::operator bool const): Deleted.
+        (WTF::ScrambledPtr::operator== const): Deleted.
+        (WTF::ScrambledPtr::operator==): Deleted.
+        (WTF::ScrambledPtr::operator=): Deleted.
+        (WTF::ScrambledPtr::scramble): Deleted.
+        (WTF::ScrambledPtr::descramble): Deleted.
+        * wtf/ScrambledPtr.cpp: Removed.
+        * wtf/ScrambledPtr.h: Removed.
+
</ins><span class="cx"> 2017-12-07  Michael Catanzaro  <mcatanzaro@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r225620
</span></span></pre></div>
<a id="trunkSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj   2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj      2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">          E38D6E271F5522E300A75CC4 /* StringBuilderJSON.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38D6E261F5522E300A75CC4 /* StringBuilderJSON.cpp */; };
</span><span class="cx">          E4A0AD391A96245500536DF6 /* WorkQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4A0AD371A96245500536DF6 /* WorkQueue.cpp */; };
</span><span class="cx">          E4A0AD3D1A96253C00536DF6 /* WorkQueueCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4A0AD3C1A96253C00536DF6 /* WorkQueueCocoa.cpp */; };
</span><del>-               FE85416E1FBE285D008DA5DA /* ScrambledPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE85416C1FBE285B008DA5DA /* ScrambledPtr.cpp */; };
</del><ins>+                FE85416E1FBE285D008DA5DA /* Poisoned.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE85416C1FBE285B008DA5DA /* Poisoned.cpp */; };
</ins><span class="cx">           FEDACD3D1630F83F00C69634 /* StackStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEDACD3B1630F83F00C69634 /* StackStats.cpp */; };
</span><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="lines">@@ -610,8 +610,8 @@
</span><span class="cx">          EF7D6CD59D8642A8A0DA86AD /* StackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackTrace.h; sourceTree = "<group>"; };
</span><span class="cx">          F72BBDB107FA424886178B9E /* SymbolImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolImpl.cpp; sourceTree = "<group>"; };
</span><span class="cx">          FE8225301B2A1E5B00BA68FD /* NakedPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NakedPtr.h; sourceTree = "<group>"; };
</span><del>-               FE85416C1FBE285B008DA5DA /* ScrambledPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrambledPtr.cpp; sourceTree = "<group>"; };
-               FE85416D1FBE285C008DA5DA /* ScrambledPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrambledPtr.h; sourceTree = "<group>"; };
</del><ins>+                FE85416C1FBE285B008DA5DA /* Poisoned.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Poisoned.cpp; sourceTree = "<group>"; };
+               FE85416D1FBE285C008DA5DA /* Poisoned.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Poisoned.h; sourceTree = "<group>"; };
</ins><span class="cx">           FE86A8741E59440200111BBF /* ForbidHeapAllocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ForbidHeapAllocation.h; sourceTree = "<group>"; };
</span><span class="cx">          FE8925AF1D00DAEC0046907E /* Indenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Indenter.h; sourceTree = "<group>"; };
</span><span class="cx">          FEDACD3B1630F83F00C69634 /* StackStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackStats.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -965,6 +965,8 @@
</span><span class="cx">                          A876DBD7151816E500DADB95 /* Platform.h */,
</span><span class="cx">                          E3200AB41E9A536D003B59D2 /* PlatformRegisters.h */,
</span><span class="cx">                          0FF860941BCCBD740045127F /* PointerComparison.h */,
</span><ins>+                               FE85416C1FBE285B008DA5DA /* Poisoned.cpp */,
+                               FE85416D1FBE285C008DA5DA /* Poisoned.h */,
</ins><span class="cx">                           0F9D335D165DBA73005AD387 /* PrintStream.cpp */,
</span><span class="cx">                          0F9D335E165DBA73005AD387 /* PrintStream.h */,
</span><span class="cx">                          53EC253C1E95AD30000831B9 /* PriorityQueue.h */,
</span><span class="lines">@@ -1001,8 +1003,6 @@
</span><span class="cx">                          1469419516EAAFF80024E146 /* SchedulePairMac.mm */,
</span><span class="cx">                          1A3524AA1D63A2FF0031729B /* Scope.h */,
</span><span class="cx">                          0FEC84B01BDACD390080FF74 /* ScopedLambda.h */,
</span><del>-                               FE85416C1FBE285B008DA5DA /* ScrambledPtr.cpp */,
-                               FE85416D1FBE285C008DA5DA /* ScrambledPtr.h */,
</del><span class="cx">                           0F66B2841DC97BAB004A1D3F /* Seconds.cpp */,
</span><span class="cx">                          0F66B2851DC97BAB004A1D3F /* Seconds.h */,
</span><span class="cx">                          A8A47306151A825B004123FF /* SegmentedVector.h */,
</span><span class="lines">@@ -1462,7 +1462,7 @@
</span><span class="cx">                          1469419316EAAF6D0024E146 /* RunLoopTimerCF.cpp in Sources */,
</span><span class="cx">                          1469419916EAB0410024E146 /* SchedulePairCF.cpp in Sources */,
</span><span class="cx">                          1469419716EAAFF80024E146 /* SchedulePairMac.mm in Sources */,
</span><del>-                               FE85416E1FBE285D008DA5DA /* ScrambledPtr.cpp in Sources */,
</del><ins>+                                FE85416E1FBE285D008DA5DA /* Poisoned.cpp in Sources */,
</ins><span class="cx">                           0F66B28E1DC97BAB004A1D3F /* Seconds.cpp in Sources */,
</span><span class="cx">                          A8A47421151A825B004123FF /* SHA1.cpp in Sources */,
</span><span class="cx">                          5311BD531EA71CAD00525281 /* Signals.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CMakeLists.txt (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CMakeLists.txt      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/WTF/wtf/CMakeLists.txt 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -107,6 +107,7 @@
</span><span class="cx">     ParkingLot.h
</span><span class="cx">     Platform.h
</span><span class="cx">     PlatformRegisters.h
</span><ins>+    Poisoned.h
</ins><span class="cx">     PrintStream.h
</span><span class="cx">     ProcessID.h
</span><span class="cx">     RAMSize.h
</span><span class="lines">@@ -130,7 +131,6 @@
</span><span class="cx">     SharedTask.h
</span><span class="cx">     SaturatedArithmetic.h
</span><span class="cx">     ScopedLambda.h
</span><del>-    ScrambledPtr.h
</del><span class="cx">     Seconds.h
</span><span class="cx">     SegmentedVector.h
</span><span class="cx">     SmallPtrSet.h
</span><span class="lines">@@ -258,6 +258,7 @@
</span><span class="cx">     ParallelHelperPool.cpp
</span><span class="cx">     ParallelJobsGeneric.cpp
</span><span class="cx">     ParkingLot.cpp
</span><ins>+    Poisoned.cpp
</ins><span class="cx">     PrintStream.cpp
</span><span class="cx">     RAMSize.cpp
</span><span class="cx">     RandomDevice.cpp
</span><span class="lines">@@ -266,7 +267,6 @@
</span><span class="cx">     RefCountedLeakCounter.cpp
</span><span class="cx">     RunLoop.cpp
</span><span class="cx">     SHA1.cpp
</span><del>-    ScrambledPtr.cpp
</del><span class="cx">     Seconds.cpp
</span><span class="cx">     SixCharacterHash.cpp
</span><span class="cx">     StackBounds.cpp
</span></span></pre></div>
<a id="trunkSourceWTFwtfPoisonedcppfromrev225631trunkSourceWTFwtfScrambledPtrcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/Poisoned.cpp (from rev 225631, trunk/Source/WTF/wtf/ScrambledPtr.cpp) (0 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Poisoned.cpp                                (rev 0)
+++ trunk/Source/WTF/wtf/Poisoned.cpp   2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "Poisoned.h"
+
+#include <wtf/CryptographicallyRandomNumber.h>
+
+namespace WTF {
+
+uintptr_t makePoison()
+{
+    uintptr_t key = cryptographicallyRandomNumber();
+#if USE(JSVALUE64) && !OS(WINDOWS)
+    key = (key << 32) ^ (static_cast<uintptr_t>(cryptographicallyRandomNumber()) << 3);
+    // Ensure that the poisoned bits (pointer ^ key) do not make a valid pointer and
+    // cannot be 0. We ensure that it is zero so that the poisoned bits can also be
+    // used for a notmal zero check without needing to decoded first.
+    key |= (static_cast<uintptr_t>(0x1) << 63);
+#else
+    key = 0; // Poisoning is not supported on 32-bit or non-darwin platforms yet.
+#endif
+    return key;
+}
+
+} // namespace WTF
+
</ins></span></pre></div>
<a id="trunkSourceWTFwtfPoisonedhfromrev225631trunkSourceWTFwtfScrambledPtrh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/Poisoned.h (from rev 225631, trunk/Source/WTF/wtf/ScrambledPtr.h) (0 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Poisoned.h                          (rev 0)
+++ trunk/Source/WTF/wtf/Poisoned.h     2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -0,0 +1,140 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/Assertions.h>
+
+#define ENABLE_POISON_ASSERTS 0
+
+// 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)
+#undef ENABLE_POISON_ASSERTS
+#define ENABLE_POISON_ASSERTS 0
+#endif
+
+namespace WTF {
+
+using PoisonedBits = uintptr_t;
+
+template<typename KeyType, KeyType key, typename T, typename = std::enable_if_t<std::is_pointer<T>::value>>
+class PoisonedImpl {
+public:
+    PoisonedImpl() { }
+
+    explicit PoisonedImpl(T ptr)
+        : m_poisonedBits(poison(ptr))
+    {
+        ASSERT(ptr && m_poisonedBits);
+    }
+
+    PoisonedImpl(const PoisonedImpl&) = default;
+
+    explicit PoisonedImpl(PoisonedBits poisonedBits)
+        : m_poisonedBits(poisonedBits)
+    {
+        ASSERT(m_poisonedBits);
+    }
+
+#if ENABLE(POISON_ASSERTS)
+    template<typename U = void*>
+    static bool isPoisoned(U value) { return !value || (reinterpret_cast<uintptr_t>(value) & 0xffff000000000000); }
+    template<typename U = void*>
+    static void assertIsPoisoned(U value) { RELEASE_ASSERT(isPoisoned(value)); }
+    template<typename U = void*>
+    static void assertIsNotPoisoned(U value) { RELEASE_ASSERT(!isPoisoned(value)); }
+#else
+    template<typename U = void*> static void assertIsPoisoned(U) { }
+    template<typename U = void*> static void assertIsNotPoisoned(U) { }
+#endif
+    void assertIsPoisoned() const { assertIsPoisoned(m_poisonedBits); }
+    void assertIsNotPoisoned() const { assertIsNotPoisoned(m_poisonedBits); }
+
+    template<typename U = T>
+    U unpoisoned() const { return unpoison<U>(m_poisonedBits); }
+
+    ALWAYS_INLINE T operator->() const { return unpoison<T>(m_poisonedBits); }
+
+    template<typename U = PoisonedBits>
+    U bits() const { return bitwise_cast<U>(m_poisonedBits); }
+
+    bool operator!() const { return !m_poisonedBits; }
+    explicit operator bool() const { return !!m_poisonedBits; }
+
+    bool operator==(const PoisonedImpl& b) const
+    {
+        return m_poisonedBits == b.m_poisonedBits;
+    }
+
+    template<typename PtrType = void*, typename = typename std::enable_if<std::is_pointer<PtrType>::value>::type>
+    bool operator==(const PtrType b)
+    {
+        return unpoisoned<PtrType>() == b;
+    }
+
+    PoisonedImpl& operator=(T ptr)
+    {
+        m_poisonedBits = poison(ptr);
+        return *this;
+    }
+    PoisonedImpl& operator=(const PoisonedImpl&) = default;
+
+private:
+#if USE(JSVALUE64)
+    template<typename U>
+    ALWAYS_INLINE static PoisonedBits poison(U ptr) { return ptr ? bitwise_cast<PoisonedBits>(ptr) ^ key : 0; }
+    template<typename U>
+    ALWAYS_INLINE static U unpoison(PoisonedBits poisonedBits) { return poisonedBits ? bitwise_cast<U>(poisonedBits ^ key) : bitwise_cast<U>(0ll); }
+#else
+    template<typename U>
+    ALWAYS_INLINE static PoisonedBits poison(U ptr) { return bitwise_cast<PoisonedBits>(ptr); }
+    template<typename U>
+    ALWAYS_INLINE static U unpoison(PoisonedBits poisonedBits) { return bitwise_cast<U>(poisonedBits); }
+#endif
+
+    PoisonedBits m_poisonedBits { 0 };
+};
+
+template<uintptr_t& key, typename T>
+using Poisoned = PoisonedImpl<uintptr_t&, key, T>;
+
+#if USE(JSVALUE64)
+template<uint32_t key, typename T>
+using Int32Poisoned = PoisonedImpl<uintptr_t, static_cast<uintptr_t>(key) << 32, T>;
+#else
+template<uint32_t, typename T>
+using Int32Poisoned = PoisonedImpl<uintptr_t, 0, T>;
+#endif
+
+WTF_EXPORT_PRIVATE uintptr_t makePoison();
+
+} // namespace WTF
+
+using WTF::Int32Poisoned;
+using WTF::Poisoned;
+using WTF::PoisonedBits;
+using WTF::makePoison;
+
</ins></span></pre></div>
<a id="trunkSourceWTFwtfScrambledPtrcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WTF/wtf/ScrambledPtr.cpp (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/ScrambledPtr.cpp    2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/WTF/wtf/ScrambledPtr.cpp       2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,49 +0,0 @@
</span><del>-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "ScrambledPtr.h"
-
-#include <wtf/CryptographicallyRandomNumber.h>
-
-namespace WTF {
-
-uintptr_t makeScrambledPtrKey()
-{
-    uintptr_t key = cryptographicallyRandomNumber();
-#if USE(JSVALUE64) && !OS(WINDOWS)
-    key = (key << 32) ^ (static_cast<uintptr_t>(cryptographicallyRandomNumber()) << 3);
-    // Ensure that the scrambled bits (pointer ^ key) do not make a valid pointer and
-    // cannot be 0. We ensure that it is zero so that the scrambled bits can also be
-    // used for a notmal zero check without needing to descramble first.
-    key |= (static_cast<uintptr_t>(0x1) << 63);
-#else
-    key = 0; // Scrambling is not supported on 32-bit or non-darwin platforms yet.
-#endif
-    return key;
-}
-
-} // namespace WTF
-
</del></span></pre></div>
<a id="trunkSourceWTFwtfScrambledPtrh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WTF/wtf/ScrambledPtr.h (225631 => 225632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/ScrambledPtr.h      2017-12-07 18:15:32 UTC (rev 225631)
+++ trunk/Source/WTF/wtf/ScrambledPtr.h 2017-12-07 18:49:51 UTC (rev 225632)
</span><span class="lines">@@ -1,129 +0,0 @@
</span><del>-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include <wtf/Assertions.h>
-
-#define ENABLE_SCRAMBLED_PTR_ASSERTS 0
-
-// 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)
-#undef ENABLE_SCRAMBLED_PTR_ASSERTS
-#define ENABLE_SCRAMBLED_PTR_ASSERTS 0
-#endif
-
-namespace WTF {
-
-using ScrambledPtrBits = uintptr_t;
-
-template<typename T, uintptr_t& key, typename = std::enable_if_t<std::is_pointer<T>::value>>
-class ScrambledPtr {
-public:
-    ScrambledPtr() { }
-
-    explicit ScrambledPtr(T ptr)
-        : m_scrambledBits(scramble(ptr))
-    {
-        ASSERT(ptr && m_scrambledBits);
-    }
-
-    ScrambledPtr(const ScrambledPtr&) = default;
-
-    explicit ScrambledPtr(ScrambledPtrBits scrambledBits)
-        : m_scrambledBits(scrambledBits)
-    {
-        ASSERT(m_scrambledBits);
-    }
-
-#if ENABLE(SCRAMBLED_PTR_ASSERTS)
-    template<typename U = void*>
-    static bool isScrambled(U value) { return !value || (reinterpret_cast<uintptr_t>(value) & 0xffff000000000000); }
-    template<typename U = void*>
-    static void assertIsScrambled(U value) { RELEASE_ASSERT(isScrambled(value)); }
-    template<typename U = void*>
-    static void assertIsNotScrambled(U value) { RELEASE_ASSERT(!isScrambled(value)); }
-#else
-    template<typename U = void*> static void assertIsScrambled(U) { }
-    template<typename U = void*> static void assertIsNotScrambled(U) { }
-#endif
-    void assertIsScrambled() const { assertIsScrambled(m_scrambledBits); }
-    void assertIsNotScrambled() const { assertIsNotScrambled(m_scrambledBits); }
-
-    template<typename U = T>
-    U descrambled() const { return descramble<U>(m_scrambledBits); }
-
-    ALWAYS_INLINE T operator->() const { return descramble<T>(m_scrambledBits); }
-
-    template<typename U = ScrambledPtrBits>
-    U bits() const { return bitwise_cast<U>(m_scrambledBits); }
-
-    bool operator!() const { return !m_scrambledBits; }
-    explicit operator bool() const { return !!m_scrambledBits; }
-
-    bool operator==(const ScrambledPtr& b) const
-    {
-        return m_scrambledBits == b.m_scrambledBits;
-    }
-
-    template<typename PtrType = void*, typename = typename std::enable_if<std::is_pointer<PtrType>::value>::type>
-    bool operator==(const PtrType b)
-    {
-        return descrambled<PtrType>() == b;
-    }
-
-    ScrambledPtr& operator=(T ptr)
-    {
-        m_scrambledBits = ptr ? scramble(ptr) : 0;
-        return *this;
-    }
-    ScrambledPtr& operator=(const ScrambledPtr&) = default;
-
-private:
-#if USE(JSVALUE64)
-    template<typename U>
-    ALWAYS_INLINE static ScrambledPtrBits scramble(U ptr) { return bitwise_cast<ScrambledPtrBits>(ptr) ^ key; }
-    template<typename U>
-    ALWAYS_INLINE static U descramble(ScrambledPtrBits scrambledBits) { return bitwise_cast<U>(scrambledBits ^ key); }
-#else
-    template<typename U>
-    ALWAYS_INLINE static ScrambledPtrBits scramble(U ptr) { return bitwise_cast<ScrambledPtrBits>(ptr); }
-    template<typename U>
-    ALWAYS_INLINE static U descramble(ScrambledPtrBits scrambledBits) { return bitwise_cast<U>(scrambledBits); }
-#endif
-
-    ScrambledPtrBits m_scrambledBits { 0 };
-};
-
-void initializeScrambledPtr();
-WTF_EXPORT_PRIVATE uintptr_t makeScrambledPtrKey();
-
-} // namespace WTF
-
-using WTF::ScrambledPtr;
-using WTF::ScrambledPtrBits;
-using WTF::makeScrambledPtrKey;
-
</del></span></pre>
</div>
</div>

</body>
</html>