Unreviewed, check in some files for a blog post.
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 11 Apr 2020 05:09:15 +0000 (05:09 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 11 Apr 2020 05:09:15 +0000 (05:09 +0000)
* blog-files/speculation-in-jsc: Added.
* blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle: Added.
* blog-files/speculation-in-jsc/ai-check-elimination-examples.svg: Added.
* blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle: Added.
* blog-files/speculation-in-jsc/bigger-data-flow-graph.svg: Added.
* blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle: Added.
* blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.svg: Added.
* blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle: Added.
* blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.svg: Added.
* blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle: Added.
* blog-files/speculation-in-jsc/dfg-and-ftl-architecture.svg: Added.
* blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle: Added.
* blog-files/speculation-in-jsc/dfg-arithadd-explainer.svg: Added.
* blog-files/speculation-in-jsc/dfg-pipeline.graffle: Added.
* blog-files/speculation-in-jsc/dfg-pipeline.svg: Added.
* blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle: Added.
* blog-files/speculation-in-jsc/dfg-threaded-cps-example.svg: Added.
* blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle: Added.
* blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.svg: Added.
* blog-files/speculation-in-jsc/example-data-flow-graph.graffle: Added.
* blog-files/speculation-in-jsc/example-data-flow-graph.svg: Added.
* blog-files/speculation-in-jsc/five-parts-of-speculation.graffle: Added.
* blog-files/speculation-in-jsc/five-parts-of-speculation.svg: Added.
* blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle: Added.
* blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.svg: Added.
* blog-files/speculation-in-jsc/ftl-pipeline.graffle: Added.
* blog-files/speculation-in-jsc/ftl-pipeline.svg: Added.
* blog-files/speculation-in-jsc/ftl-stackmaps.graffle: Added.
* blog-files/speculation-in-jsc/ftl-stackmaps.svg: Added.
* blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle: Added.
* blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.svg: Added.
* blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle: Added.
* blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.svg: Added.
* blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle: Added.
* blog-files/speculation-in-jsc/int32-add-diamond-speculation.svg: Added.
* blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle: Added.
* blog-files/speculation-in-jsc/int32-add-osr-speculation.svg: Added.
* blog-files/speculation-in-jsc/jsc-tier-architecture.graffle: Added.
* blog-files/speculation-in-jsc/jsc-tier-architecture.svg: Added.
* blog-files/speculation-in-jsc/jsc-tiers.graffle: Added.
* blog-files/speculation-in-jsc/jsc-tiers.svg: Added.
* blog-files/speculation-in-jsc/object-model.graffle: Added.
* blog-files/speculation-in-jsc/object-model.svg: Added.
* blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle: Added.
* blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.svg: Added.
* blog-files/speculation-in-jsc/optimization-workflow-js.graffle: Added.
* blog-files/speculation-in-jsc/optimization-workflow-js.svg: Added.
* blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle: Added.
* blog-files/speculation-in-jsc/osr-exit-bytecode-example.svg: Added.
* blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle: Added.
* blog-files/speculation-in-jsc/osr-stack-register-shuffle.svg: Added.
* blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.graffle: Added.
* blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.svg: Added.
* blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.graffle: Added.
* blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.svg: Added.
* blog-files/speculation-in-jsc/prediction-propagation-rules-add.graffle: Added.
* blog-files/speculation-in-jsc/prediction-propagation-rules-add.svg: Added.
* blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.graffle: Added.
* blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.svg: Added.
* blog-files/speculation-in-jsc/sample-property-lookup.graffle: Added.
* blog-files/speculation-in-jsc/sample-property-lookup.svg: Added.
* blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.graffle: Added.
* blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.svg: Added.
* blog-files/speculation-in-jsc/speculated-types.graffle: Added.
* blog-files/speculation-in-jsc/speculated-types.svg: Added.
* blog-files/speculation-in-jsc/xy-objects-as-maps.graffle: Added.
* blog-files/speculation-in-jsc/xy-objects-as-maps.svg: Added.
* blog-files/speculation-in-jsc/xy-objects-with-structures.graffle: Added.
* blog-files/speculation-in-jsc/xy-objects-with-structures.svg: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@259920 268f45cc-cd09-0410-ab3c-d52691b4dbfc

69 files changed:
Websites/webkit.org/ChangeLog
Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/object-model.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/object-model.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-rules-add.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-rules-add.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/sample-property-lookup.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/sample-property-lookup.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/speculated-types.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/speculated-types.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/xy-objects-as-maps.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/xy-objects-as-maps.svg [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/xy-objects-with-structures.graffle [new file with mode: 0644]
Websites/webkit.org/blog-files/speculation-in-jsc/xy-objects-with-structures.svg [new file with mode: 0644]

index 75f76ca..b8cfd4e 100644 (file)
@@ -1,3 +1,77 @@
+2020-04-10  Filip Pizlo  <fpizlo@apple.com>
+
+        Unreviewed, check in some files for a blog post.
+
+        * blog-files/speculation-in-jsc: Added.
+        * blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle: Added.
+        * blog-files/speculation-in-jsc/ai-check-elimination-examples.svg: Added.
+        * blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle: Added.
+        * blog-files/speculation-in-jsc/bigger-data-flow-graph.svg: Added.
+        * blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle: Added.
+        * blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.svg: Added.
+        * blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle: Added.
+        * blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.svg: Added.
+        * blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle: Added.
+        * blog-files/speculation-in-jsc/dfg-and-ftl-architecture.svg: Added.
+        * blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle: Added.
+        * blog-files/speculation-in-jsc/dfg-arithadd-explainer.svg: Added.
+        * blog-files/speculation-in-jsc/dfg-pipeline.graffle: Added.
+        * blog-files/speculation-in-jsc/dfg-pipeline.svg: Added.
+        * blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle: Added.
+        * blog-files/speculation-in-jsc/dfg-threaded-cps-example.svg: Added.
+        * blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/example-data-flow-graph.graffle: Added.
+        * blog-files/speculation-in-jsc/example-data-flow-graph.svg: Added.
+        * blog-files/speculation-in-jsc/five-parts-of-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/five-parts-of-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle: Added.
+        * blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.svg: Added.
+        * blog-files/speculation-in-jsc/ftl-pipeline.graffle: Added.
+        * blog-files/speculation-in-jsc/ftl-pipeline.svg: Added.
+        * blog-files/speculation-in-jsc/ftl-stackmaps.graffle: Added.
+        * blog-files/speculation-in-jsc/ftl-stackmaps.svg: Added.
+        * blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle: Added.
+        * blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.svg: Added.
+        * blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle: Added.
+        * blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.svg: Added.
+        * blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/int32-add-diamond-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/int32-add-osr-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/jsc-tier-architecture.graffle: Added.
+        * blog-files/speculation-in-jsc/jsc-tier-architecture.svg: Added.
+        * blog-files/speculation-in-jsc/jsc-tiers.graffle: Added.
+        * blog-files/speculation-in-jsc/jsc-tiers.svg: Added.
+        * blog-files/speculation-in-jsc/object-model.graffle: Added.
+        * blog-files/speculation-in-jsc/object-model.svg: Added.
+        * blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle: Added.
+        * blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.svg: Added.
+        * blog-files/speculation-in-jsc/optimization-workflow-js.graffle: Added.
+        * blog-files/speculation-in-jsc/optimization-workflow-js.svg: Added.
+        * blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle: Added.
+        * blog-files/speculation-in-jsc/osr-exit-bytecode-example.svg: Added.
+        * blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle: Added.
+        * blog-files/speculation-in-jsc/osr-stack-register-shuffle.svg: Added.
+        * blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/polyvariant-inline-cache-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.graffle: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-and-value-profiling.svg: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-rules-add.graffle: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-rules-add.svg: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.graffle: Added.
+        * blog-files/speculation-in-jsc/prediction-propagation-rules-getbyval.svg: Added.
+        * blog-files/speculation-in-jsc/sample-property-lookup.graffle: Added.
+        * blog-files/speculation-in-jsc/sample-property-lookup.svg: Added.
+        * blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.graffle: Added.
+        * blog-files/speculation-in-jsc/single-monomorphic-inline-cache-speculation.svg: Added.
+        * blog-files/speculation-in-jsc/speculated-types.graffle: Added.
+        * blog-files/speculation-in-jsc/speculated-types.svg: Added.
+        * blog-files/speculation-in-jsc/xy-objects-as-maps.graffle: Added.
+        * blog-files/speculation-in-jsc/xy-objects-as-maps.svg: Added.
+        * blog-files/speculation-in-jsc/xy-objects-with-structures.graffle: Added.
+        * blog-files/speculation-in-jsc/xy-objects-with-structures.svg: Added.
+
 2020-04-01  Jon Davis  <jond@apple.com>
 
         Removed the update nag from the old WebKit Nightly start page
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle
new file mode 100644 (file)
index 0000000..e37d230
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/ai-check-elimination-examples.svg
new file mode 100644 (file)
index 0000000..156e0dc
--- /dev/null
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 46 777.1905 310.08095" width="777.1905" height="310.08095">
+  <defs>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1071.4286" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Thin"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-08 01:11:04 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="0" y="46" width="777.1905" height="310.08095"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="32.5" y="171" width="120" height="129" fill="white"/>
+        <rect x="32.5" y="171" width="120" height="129" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(37.5 211.49805)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="44.001953">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <rect x="286.84524" y="50" width="120" height="97" fill="white"/>
+        <rect x="286.84524" y="50" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(291.84524 90.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <rect x="212.59524" y="203" width="120" height="97" fill="white"/>
+        <rect x="212.59524" y="203" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(217.59524 243.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="361.59524" y="203" width="120" height="97" fill="white"/>
+        <rect x="361.59524" y="203" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(366.59524 243.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Line_30">
+        <line x1="323.30847" y1="147" x2="300.45432" y2="194.0934" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_31">
+        <line x1="370.5405" y1="147" x2="393.55414" y2="194.10485" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_32">
+        <rect x="509.1905" y="50" width="120" height="97" fill="white"/>
+        <rect x="509.1905" y="50" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(514.1905 90.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="656.6905" y="50" width="120" height="97" fill="white"/>
+        <rect x="656.6905" y="50" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(661.6905 90.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <rect x="583.6905" y="203" width="120" height="97" fill="white"/>
+        <rect x="583.6905" y="203" width="120" height="97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(588.6905 243.49902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x=".9912109" y="12">Check(Int32:@x)</tspan>
+        </text>
+      </g>
+      <g id="Line_35">
+        <line x1="592.8065" y1="147" x2="615.7404" y2="194.09912" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_36">
+        <line x1="693.54995" y1="147" x2="671.09414" y2="194.06492" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_37">
+        <line x1="217.84524" y1="251" x2="326.09524" y2="251" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_38">
+        <line x1="272.59524" y1="251.5" x2="266.2671" y2="256.5703" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_39">
+        <line x1="262.59524" y1="251" x2="263.59133" y2="250.4453" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_40">
+        <line x1="38.75" y1="251" x2="144.25" y2="251" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_41">
+        <line x1="368.84524" y1="251" x2="474.34524" y2="251" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_42">
+        <line x1="590.9405" y1="251" x2="696.4405" y2="251" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_43">
+        <text transform="translate(5 318.29695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x=".497" y="13">(a) Eliminating checks in the </tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="51.45" y="29.392">same block</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <text transform="translate(259.34524 318.29695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="11.907" y="13">(b) Eliminating checks in </tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="39.375" y="29.392">different blocks</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <text transform="translate(517.1905 318.29695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="21.801" y="13">(c) Eliminating checks by merging </tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="4.098" y="29.392">information from multiple predecessors</tspan>
+        </text>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(37.5 176)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <text transform="translate(217.59524 208)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <text transform="translate(366.59524 208)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#4</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <text transform="translate(291.84524 55)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#2</tspan>
+        </text>
+      </g>
+      <g id="Graphic_50">
+        <text transform="translate(514.1905 55)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#5</tspan>
+        </text>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(661.6905 51)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#6</tspan>
+        </text>
+      </g>
+      <g id="Graphic_52">
+        <text transform="translate(588.6905 208)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="14">BB#</tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="300" fill="black" y="14">7</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle
new file mode 100644 (file)
index 0000000..2317ec2
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/bigger-data-flow-graph.svg
new file mode 100644 (file)
index 0000000..b266fda
--- /dev/null
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="180.43 158.5 238.64 368" width="238.64" height="368">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-10 01:09:34 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="180.43" y="158.5" width="238.64" height="368"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <circle cx="301.5" cy="283.75" r="25.0000399475475" fill="white"/>
+        <circle cx="301.5" cy="283.75" r="25.0000399475475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(286.6995 267.3729)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Arith</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="2.405" y="29.37709">Add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <circle cx="275" cy="184" r="25.0000399475474" fill="white"/>
+        <circle cx="275" cy="184" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(261.337 175.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="46362914e-20" y="13">arg1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <circle cx="358" cy="215" r="25.0000399475474" fill="white"/>
+        <circle cx="358" cy="215" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(344.337 206.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="46362914e-20" y="13">arg1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <circle cx="393.57" cy="343" r="25.0000399475475" fill="white"/>
+        <circle cx="393.57" cy="343" r="25.0000399475475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(379.907 334.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="46362914e-20" y="13">arg3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <circle cx="336.57" cy="401.5" r="25.0000399475475" fill="white"/>
+        <circle cx="336.57" cy="401.5" r="25.0000399475475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(321.7695 385.1229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Arith</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="2.405" y="29.37709">Add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <circle cx="329.57" cy="501" r="25.0000399475474" fill="white"/>
+        <circle cx="329.57" cy="501" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(308.5035 492.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="8100187e-19" y="13">Return</tspan>
+        </text>
+      </g>
+      <g id="Line_9">
+        <line x1="331.3245" y1="476.06125" x2="334.12075" y2="436.31434" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_10">
+        <line x1="329.43255" y1="377.5355" x2="311.46334" y2="317.2026" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_11">
+        <line x1="354.01663" y1="383.59425" x2="369.2145" y2="367.99642" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_12">
+        <line x1="317.3741" y1="264.43417" x2="335.8402" y2="241.96436" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_13">
+        <line x1="295.08" y1="259.58412" x2="283.9619" y2="217.73399" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_14">
+        <text transform="translate(226.93 175.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">24:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_15">
+        <text transform="translate(309.93 206.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">25:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <text transform="translate(255 275.56145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">26:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <text transform="translate(345.5 334.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">29:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <text transform="translate(290.535 393.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">30:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_19">
+        <text transform="translate(281.5 492.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">33:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <circle cx="233.5" cy="334.5" r="25.0000399475474" fill="white"/>
+        <circle cx="233.5" cy="334.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(220.253 318.1229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Mov</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x=".611" y="29.37709">Hint</tspan>
+        </text>
+      </g>
+      <g id="Line_21">
+        <line x1="253.53788" y1="319.54526" x2="273.52814" y2="304.62606" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_22">
+        <text transform="translate(185.43 326.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">27:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <circle cx="253.07" cy="453" r="25.0000399475474" fill="white"/>
+        <circle cx="253.07" cy="453" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(239.823 436.6229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Mov</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x=".611" y="29.37709">Hint</tspan>
+        </text>
+      </g>
+      <g id="Line_24">
+        <line x1="274.35313" y1="439.8733" x2="306.86065" y2="419.82373" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_25">
+        <text transform="translate(205 444.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">31:</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle
new file mode 100644 (file)
index 0000000..04e869a
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-dfg-ir-lowering-with-osr-phases.svg
new file mode 100644 (file)
index 0000000..82b6df2
--- /dev/null
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="197 75.14389 769.5 405.3561" width="769.5" height="405.3561">
+  <defs>
+    <font-face font-family="Monaco" font-size="14" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-857.1429" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="937.5" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-08 02:43:18 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="197" y="75.14389" width="769.5" height="405.3561"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="197.5" y="231.348" width="112" height="25" fill="#ccc"/>
+        <rect x="197.5" y="231.348" width="112" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(202.5 234.26353)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">foo</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="197.5" y="256.348" width="112" height="25" fill="#ccc"/>
+        <rect x="197.5" y="256.348" width="112" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(202.5 259.26353)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">wat</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="197.5" y="281.348" width="112" height="25" fill="#ccc"/>
+        <rect x="197.5" y="281.348" width="112" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(202.5 284.26353)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">bar</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="429.5" y="105" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="105" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 107.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">CheckStructure</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="429.5" y="130" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="130" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 132.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">GetThingy</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="429.5" y="155" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="155" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 157.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">Foo</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="429.5" y="180" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="180" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 182.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">MovHint</tspan>
+        </text>
+      </g>
+      <g id="Graphic_12">
+        <rect x="429.5" y="230" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="230" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 232.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">CheckArray</tspan>
+        </text>
+      </g>
+      <g id="Graphic_11">
+        <rect x="429.5" y="255" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="255" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 257.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">Wat</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <rect x="429.5" y="280" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="280" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 282.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">Stuff</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="429.5" y="305" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="305" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 307.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">Derp</tspan>
+        </text>
+      </g>
+      <g id="Graphic_13">
+        <rect x="429.5" y="355" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="355" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 357.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">StartBar</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <rect x="429.5" y="380" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="380" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 382.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">MovHint</tspan>
+        </text>
+      </g>
+      <g id="Graphic_15">
+        <rect x="429.5" y="405" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="405" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 407.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">FinishBar</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <rect x="429.5" y="430" width="196" height="25" fill="#ffa2a1"/>
+        <rect x="429.5" y="430" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 432.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">MovHint</tspan>
+        </text>
+      </g>
+      <g id="Line_17">
+        <line x1="309.5" y1="231.348" x2="429.5" y2="105" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_18">
+        <line x1="309.5" y1="256.348" x2="429.5" y2="205" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_19">
+        <line x1="309.5" y1="281.348" x2="429.5" y2="330" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_20">
+        <line x1="309.5" y1="306.348" x2="429.5" y2="455" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Graphic_21">
+        <text transform="translate(555.414 158.608)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <text transform="translate(555.414 260)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <text transform="translate(555.414 337.088)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <text transform="translate(555.414 335.696)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <text transform="translate(555.414 410)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <text transform="translate(221.892 205.348)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="17053026e-20" y="15">Bytecode</tspan>
+        </text>
+      </g>
+      <g id="Graphic_28">
+        <text transform="translate(503.196 80.14389)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="8526513e-20" y="15">DFG IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <rect x="429.5" y="205" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="205" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 207.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">InvalidationPoint</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <rect x="429.5" y="330" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="330" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 332.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">InvalidationPoint</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <rect x="429.5" y="455" width="196" height="25" fill="#c0c0ff"/>
+        <rect x="429.5" y="455" width="196" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(434.5 457.91553)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">InvalidationPoint</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <text transform="translate(556.414 284.956)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <text transform="translate(556.414 310.348)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(555.414 359.608)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <rect x="667" y="347" width="299" height="133" fill="white"/>
+        <path d="M 667 347 L 966 347 L 966 480 L 667 480 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+        <text transform="translate(672 352)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="119.444" y="15">Legend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <text transform="translate(740 399.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Speculation phase (exitOK == true)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <text transform="translate(740 444.304)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Effect phase (exitOK == false)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_42">
+        <rect x="685" y="395.5" width="34.824" height="25" fill="#c0c0ff"/>
+        <rect x="685" y="395.5" width="34.824" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_43">
+        <rect x="685" y="440" width="34.824" height="25" fill="#ffa2a1"/>
+        <rect x="685" y="440" width="34.824" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_44">
+        <text transform="translate(523.256 183.652)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has OSR effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <text transform="translate(523.256 383.608)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has OSR effects</tspan>
+        </text>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(524.256 434.26)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">has OSR effects</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle
new file mode 100644 (file)
index 0000000..7fb58fe
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/bytecode-to-ssa-conversion-with-osr.svg
new file mode 100644 (file)
index 0000000..294bece
--- /dev/null
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="98 -35 626 397" width="626" height="397">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Medium"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="16" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="15" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-800" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1153.8462" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="15" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-05 23:03:56 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="98" y="-35" width="626" height="397"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_4">
+        <rect x="98.5" y="205.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="205.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 210.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="98.5" y="231.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="231.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 236.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc4</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="98.5" y="257.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="257.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 262.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc5</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="98.5" y="283.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="283.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 288.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc6</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="98.5" y="309.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="309.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc7</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="98.5" y="335.5" width="145" height="26" fill="white"/>
+        <rect x="98.5" y="335.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 340.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc8</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <text transform="translate(132 50.42)" fill="black">
+          <tspan font-family="Monaco" font-size="16" font-weight="400" fill="black" x="0" y="16">[  42] add loc7, loc4, loc8</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <text transform="translate(181.7161 81.75594)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="300" fill="black" x="0" y="14">live after: loc3, loc4, loc7</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <text transform="translate(181.7161 23)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="300" fill="black" x="0" y="14">live before: loc3, loc4, loc8</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <rect x="98.5" y="179.5" width="145" height="26" fill="#ccc"/>
+        <rect x="98.5" y="179.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(103.5 184.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="21.675" y="13">Virtual Register</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="243.5" y="179.5" width="145" height="26" fill="#ccc"/>
+        <rect x="243.5" y="179.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 184.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="5.7175" y="13">Value </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" y="13">(name: opcode)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="243.5" y="205.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="205.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 210.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="32.4585" y="13">s: GetScope</tspan>
+        </text>
+      </g>
+      <g id="Graphic_28">
+        <rect x="243.5" y="231.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="231.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 236.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="17.2875" y="13">a: JSConstant(42)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <rect x="243.5" y="257.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="257.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 262.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <rect x="243.5" y="283.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="283.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 288.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <rect x="243.5" y="309.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="309.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <rect x="243.5" y="335.5" width="145" height="26" fill="white"/>
+        <rect x="243.5" y="335.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(248.5 340.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="26.2055" y="13">b: GetByOffset</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <text transform="translate(103.5 157.08)" fill="black">
+          <tspan font-family="Monaco" font-size="15" font-weight="400" fill="black" x="58.68664" y="15">stackMap</tspan>
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="300" fill="black" y="15"> before bc#42</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <rect x="433" y="205.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="205.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 210.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <rect x="433" y="231.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="231.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 236.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc4</tspan>
+        </text>
+      </g>
+      <g id="Graphic_46">
+        <rect x="433" y="257.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="257.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 262.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc5</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <rect x="433" y="283.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="283.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 288.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc6</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <rect x="433" y="309.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="309.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc7</tspan>
+        </text>
+      </g>
+      <g id="Graphic_43">
+        <rect x="433" y="335.5" width="145" height="26" fill="white"/>
+        <rect x="433" y="335.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 340.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="54.851" y="13">loc8</tspan>
+        </text>
+      </g>
+      <g id="Graphic_42">
+        <rect x="433" y="179.5" width="145" height="26" fill="#ccc"/>
+        <rect x="433" y="179.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(438 184.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="21.675" y="13">Virtual Register</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <rect x="578" y="179.5" width="145" height="26" fill="#ccc"/>
+        <rect x="578" y="179.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 184.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="5.7175" y="13">Value </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" y="13">(name: opcode)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <rect x="578" y="205.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="205.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 210.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="32.4585" y="13">s: GetScope</tspan>
+        </text>
+      </g>
+      <g id="Graphic_39">
+        <rect x="578" y="231.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="231.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 236.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="17.2875" y="13">a: JSConstant(42)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <rect x="578" y="257.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="257.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 262.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <rect x="578" y="283.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="283.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 288.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(438 157.08)" fill="black">
+          <tspan font-family="Monaco" font-size="15" font-weight="400" fill="black" x="64.80664" y="15">stackMap</tspan>
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="300" fill="black" y="15"> after bc#42</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <rect x="578" y="335.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="335.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 340.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="53.6485" y="13">dead</tspan>
+        </text>
+      </g>
+      <g id="Graphic_50">
+        <rect x="578" y="309.5" width="145" height="26" fill="white"/>
+        <rect x="578" y="309.5" width="145" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="36.196" y="13">c: ArithAdd</tspan>
+        </text>
+      </g>
+      <g id="Graphic_61">
+        <circle cx="555.576" cy="115" r="25.0000399475474" fill="white"/>
+        <circle cx="555.576" cy="115" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(540.576 98.62291)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x=".1995" y="13">Arith</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="2.6045" y="29.37709">Add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_60">
+        <circle cx="504.576" cy="29.5" r="25.0000399475474" fill="white"/>
+        <circle cx="504.576" cy="29.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(489.576 21.818)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="7.772" y="12">42</tspan>
+        </text>
+      </g>
+      <g id="Line_59">
+        <line x1="542.766" y1="93.52441" x2="522.45756" y2="59.477906" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_58">
+        <circle cx="598.576" cy="-9.5" r="25.0000399475474" fill="white"/>
+        <circle cx="598.576" cy="-9.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(581.128 -24.848083)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="700" fill="black" x="31974423e-20" y="12">GetBy</tspan>
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="700" fill="black" x=".186" y="27.348083">Offset</tspan>
+        </text>
+      </g>
+      <g id="Line_57">
+        <line x1="563.7393" y1="91.36435" x2="587.18074" y2="23.493247" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_54">
+        <text transform="translate(464.215 21.311455)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">a:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_53">
+        <text transform="translate(557.5 -17.688545)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="930811e-18" y="13">b:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_52">
+        <text transform="translate(515.215 106.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">c:</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle
new file mode 100644 (file)
index 0000000..236db1e
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-and-ftl-architecture.svg
new file mode 100644 (file)
index 0000000..a55f778
--- /dev/null
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="334.5 122.5649 486 333.7071" width="486" height="333.7071">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="15" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-style="italic" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-MediumItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-04 21:57:05 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="334.5" y="122.5649" width="486" height="333.7071"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_83">
+        <rect x="434.5" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(439.3165 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Bytecode Parser</tspan>
+        </text>
+      </g>
+      <g id="Graphic_85">
+        <rect x="434.5" y="212" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="212" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(459.655 217)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_86">
+        <rect x="434.5" y="249.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="249.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(461.9365 254.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="2060574e-19" y="12">DFG Backend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_87">
+        <text transform="translate(487.195 127.5649)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="500" fill="black" x="29132252e-20" y="15">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_89">
+        <rect x="579" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="579" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583.8165 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Bytecode Parser</tspan>
+        </text>
+      </g>
+      <g id="Graphic_88">
+        <text transform="translate(634.0405 127.5649)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="15" font-style="italic" font-weight="500" fill="black" x="7283063e-19" y="15">FTL</tspan>
+        </text>
+      </g>
+      <g id="Graphic_91">
+        <rect x="579" y="310.228" width="137" height="25" fill="white"/>
+        <rect x="579" y="310.228" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(597.0665 315.046)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Lower DFG to B3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_92">
+        <rect x="579" y="340.364" width="137" height="25" fill="white"/>
+        <rect x="579" y="340.364" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(609.579 345.182)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="27000624e-20" y="12">B3 Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_93">
+        <rect x="579" y="370.5" width="137" height="25" fill="white"/>
+        <rect x="579" y="370.5" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(590.924 375.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Instruction Selector</tspan>
+        </text>
+      </g>
+      <g id="Graphic_94">
+        <rect x="579" y="400.636" width="137" height="25" fill="white"/>
+        <rect x="579" y="400.636" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(609.826 405.454)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="881073e-18" y="12">Air Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_95">
+        <rect x="579" y="430.772" width="137" height="25" fill="white"/>
+        <rect x="579" y="430.772" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(612.1075 435.59)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Air Backend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_97">
+        <text transform="translate(480.712 154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="34816594e-20" y="13">Fast JIT</tspan>
+        </text>
+      </g>
+      <g id="Graphic_96">
+        <text transform="translate(612.8035 154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">Powerful JIT</tspan>
+        </text>
+      </g>
+      <g id="Line_98">
+        <line x1="335" y1="243.5" x2="820" y2="243.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Graphic_99">
+        <rect x="579" y="249.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="579" y="249.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(589.114 254.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4121148e-19" y="12">DFG SSA Converter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_100">
+        <rect x="579" y="279.864" width="136.5" height="25.363998" fill="white"/>
+        <rect x="579" y="279.864" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(589.712 284.864)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="45474735e-20" y="12">DFG SSA Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_101">
+        <rect x="579" y="212" width="136.5" height="25.363998" fill="white"/>
+        <rect x="579" y="212" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(604.155 217)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_102">
+        <text transform="translate(377.4495 201)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="16839863e-19" y="13">DFG IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_103">
+        <text transform="translate(731 201)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">DFG IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_104">
+        <text transform="translate(731 283.8509)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">DFG SSA IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_105">
+        <text transform="translate(731 345.364)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">B3 IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_106">
+        <text transform="translate(731 404.94746)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Assembly IR</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle
new file mode 100644 (file)
index 0000000..17a8125
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-arithadd-explainer.svg
new file mode 100644 (file)
index 0000000..633a07d
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="-10.702296 34.99359 720.7023 218.7606" width="720.7023" height="218.7606">
+  <defs>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1153.8462" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-05 02:04:45 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="-10.702296" y="34.99359" width="720.7023" height="218.7606"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_56">
+        <text transform="translate(199.20793 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">ArithAdd(</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(-5.702296 106.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="18.55" y="13">The name of the </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="1.559" y="29.37709">variable defined by this </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="10.854" y="45.75418">instruction. We can </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="9.645" y="62.13127">refer to the resulting </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="24.79" y="78.50836">value as @25.</tspan>
+        </text>
+      </g>
+      <g id="Line_36">
+        <line x1="114.71698" y1="151.62264" x2="155.15613" y2="155.94728" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_37">
+        <text transform="translate(117.5 210.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="19.5595" y="13">The opcode.</tspan>
+        </text>
+      </g>
+      <g id="Line_38">
+        <line x1="186.96456" y1="205.5" x2="226.8904" y2="170.8908" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_39">
+        <text transform="translate(167 83.37709)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="1.305" y="13">The operands (children).</tspan>
+        </text>
+      </g>
+      <g id="Line_40">
+        <line x1="250.47793" y1="104.75418" x2="293.18173" y2="137.92673" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_41">
+        <line x1="264.56332" y1="104.75418" x2="347.8873" y2="140.13103" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_43">
+        <text transform="translate(393 210.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="7.961" y="13">The variables used by </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="29.0015" y="29.37709">the operands.</tspan>
+        </text>
+      </g>
+      <g id="Line_44">
+        <line x1="413.01693" y1="205.5" x2="335.07646" y2="169.65598" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_45">
+        <line x1="440.34213" y1="205.5" x2="410.21267" y2="171.88039" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(224 216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="18.6035" y="13">The type speculations </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="6.923" y="29.37709">chosen for this instruction.</tspan>
+        </text>
+      </g>
+      <g id="Line_47">
+        <line x1="297.2168" y1="211" x2="289.94495" y2="174.70707" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_48">
+        <line x1="323.88284" y1="211" x2="363.84064" y2="172.83766" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_49">
+        <text transform="translate(351 67)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x=".7395" y="13">Flag indicating additional </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="9.768" y="29.37709">speculation decision.</tspan>
+        </text>
+      </g>
+      <g id="Line_50">
+        <line x1="435.8972" y1="104.75418" x2="467.82346" y2="141.85168" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(550 202.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="8.572" y="13">Flag indicating that this </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="2.15" y="29.37709">instruction may OSR exit.</tspan>
+        </text>
+      </g>
+      <g id="Line_52">
+        <line x1="593.07354" y1="197.31145" x2="561.7255" y2="172.19082" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_53">
+        <text transform="translate(520.5 39.99359)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="10.311" y="13">The semantic and exit origin of </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x=".288" y="29.37709">this instruction (two separate fields </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="8.543" y="45.75418">displayed as one because they </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="36.09" y="62.13127">happen to be equal).</tspan>
+        </text>
+      </g>
+      <g id="Line_54">
+        <line x1="604.9518" y1="110.50195" x2="599.0026" y2="139.30466" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_55">
+        <text transform="translate(170.60059 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">25:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_57">
+        <text transform="translate(264.55074 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">Int32:@23,</tspan>
+        </text>
+      </g>
+      <g id="Graphic_58">
+        <text transform="translate(343.4287 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">Int32:@24,</tspan>
+        </text>
+      </g>
+      <g id="Graphic_59">
+        <text transform="translate(422.61024 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">CheckOverflow,</tspan>
+        </text>
+      </g>
+      <g id="Graphic_60">
+        <text transform="translate(530.59646 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">Exits,</tspan>
+        </text>
+      </g>
+      <g id="Graphic_61">
+        <text transform="translate(581.0674 150)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">bc#7)</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.graffle
new file mode 100644 (file)
index 0000000..6fe92c7
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-pipeline.svg
new file mode 100644 (file)
index 0000000..50b26d2
--- /dev/null
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="113 77 573 544" width="573" height="544">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-09 16:21:27 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="113" y="77" width="573" height="544"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="114" y="131" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="131" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 137.20564)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="33.7245" y="12">Live Catch Variable Preservation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="114" y="162.68118" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="162.68118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 168.88682)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="114" y="194.36236" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="194.36236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 200.568)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="96.5665" y="12">Unification</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="114" y="226.04354" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="226.04354" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 232.24918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.7625" y="12">Prediction Injection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="114" y="257.72472" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="257.72472" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 263.93036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="28.297" y="12">Static Execution Count Estimation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="114" y="289.4059" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="289.4059" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 295.61154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="57.924" y="12">Backwards Propagation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="114" y="321.08708" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="321.08708" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 327.29272)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="60.927" y="12">Prediction Propagation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="114" y="352.76826" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="352.76826" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 358.9739)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="111.4905" y="12">Fixup</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <rect x="114" y="384.44944" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="384.44944" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 390.6551)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="52.984" y="12">InvalidationPoint Injection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_11">
+        <rect x="114" y="416.1306" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="416.1306" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 422.33626)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="67.6675" y="12">Type Check Hoisting</tspan>
+        </text>
+      </g>
+      <g id="Graphic_12">
+        <rect x="114" y="447.8118" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="447.8118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 454.01744)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.1515" y="12">Strength Reduction</tspan>
+        </text>
+      </g>
+      <g id="Graphic_13">
+        <rect x="114" y="479.493" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="479.493" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 485.6986)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <rect x="114" y="511.17416" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="511.17416" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 517.3798)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_15">
+        <rect x="114" y="542.85534" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="542.85534" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 549.061)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <rect x="114" y="574.5365" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="574.5365" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 580.74216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="73.212" y="12">CFG Simplification</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <rect x="420" y="99.31882" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="99.31882" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 105.52446)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.4485" y="12">Local Common Subexpression Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <rect x="420" y="131" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="131" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 137.20564)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_19">
+        <rect x="420" y="162.68118" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="162.68118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 168.88682)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.236" y="12">Varargs Forwarding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <rect x="420" y="194.36236" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="194.36236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 200.568)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <rect x="420" y="226.04354" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="226.04354" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 232.24918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <rect x="420" y="257.72472" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="257.72472" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 263.93036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="59.484" y="12">Tier Up Check Injection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <rect x="420" y="289.4059" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="289.4059" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 295.61154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="49.6235" y="12">Fast Store Barrier Insertion</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <rect x="420" y="321.08708" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="321.08708" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 327.29272)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="59.497" y="12">Store Barrier Clustering</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <rect x="420" y="352.76826" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="352.76826" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 358.9739)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="100.4145" y="12">Clean Up</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="420" y="384.44944" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="384.44944" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 390.6551)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="420" y="416.1306" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="416.1306" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 422.33626)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="60.9205" y="12">Dead Code Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_28">
+        <rect x="420" y="447.8118" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="447.8118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 454.01744)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="74.4015" y="12">Phantom Insertion</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <rect x="420" y="479.493" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="479.493" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 485.6986)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="89.332" y="12">Stack Layout</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <rect x="420" y="511.17416" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="511.17416" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 517.3798)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="53.114" y="12">Virtual Register Allocation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <rect x="420" y="542.85534" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="542.85534" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 549.061)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="63.4555" y="12">Watchpoint Collection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <rect x="420" y="574.5365" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="420" y="574.5365" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(425 580.74216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="26.7305" y="12">DFG Speculative JIT (the backend)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="114" y="99.31882" width="265" height="27.77528" fill="#76d6ff"/>
+        <rect x="114" y="99.31882" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 105.52446)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="20.601" y="12">DFG Byte Code Parser (the frontend)</tspan>
+        </text>
+      </g>
+      <g id="Line_34">
+        <path d="M 246.5 602.3118 L 246.5 620 L 399.5 620 L 399.5 78 L 552.5 78 L 552.5 89.41882" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle
new file mode 100644 (file)
index 0000000..9562de3
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/dfg-threaded-cps-example.svg
new file mode 100644 (file)
index 0000000..5cc4eee
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="57 -94 744 650" width="744" height="650">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="#ff7e79">
+      <g>
+        <path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black">
+      <g>
+        <path d="M 4.8 0 L 0 0 M 0 -1.8 L 4.8 0 L 0 1.8" fill="none" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="#ff7e79">
+      <g>
+        <path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="937.5" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-857.1429" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-09 04:00:42 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="57" y="-94" width="744" height="650"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="228" y="134.5" width="185" height="255.5" fill="white"/>
+        <rect x="228" y="134.5" width="185" height="255.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_3">
+        <circle cx="320.5" cy="269" r="25.0000399475475" fill="#ffc0ff"/>
+        <circle cx="320.5" cy="269" r="25.0000399475475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(305.6995 252.6229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="0" y="13">Arith</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="2.405" y="29.37709">Add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <circle cx="276.5" cy="219" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="276.5" cy="219" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(259.535 202.6229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.0125" y="13">Get</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <circle cx="354.5" cy="193.5" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="354.5" cy="193.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(337.535 177.1229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.0125" y="13">Get</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <circle cx="320.5" cy="344.5" r="25.0000399475475" fill="#ffc0ff"/>
+        <circle cx="320.5" cy="344.5" r="25.0000399475475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(303.535 328.1229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.7275" y="13">Set</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <circle cx="276.5" cy="132.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="276.5" cy="132.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(266.633 124.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <path d="M 242.5 42.5 L 57.5 42.5 L 57.5 -51.9 C 113 -40.1 187 -87.3 242.5 -63.7 Z" fill="white"/>
+        <path d="M 242.5 42.5 L 57.5 42.5 L 57.5 -51.9 C 113 -40.1 187 -87.3 242.5 -63.7 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_10">
+        <circle cx="111" cy="-2.5" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="111" cy="-2.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(94.035 -18.87709)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.7275" y="13">Set</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Line_11">
+        <path d="M 274.08605 107.6161 C 270.52087 93.43107 262.096 77.30329 242.5 71.234375 C 204.53713 59.47722 179.7546 111.88932 142.5 91 C 123.5449 80.37154 115.72387 56.353666 112.61392 35.322857" marker-end="url(#FilledArrow_Marker)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_12">
+        <path d="M 514.5 42.5 L 329.5 42.5 L 329.5 -51.9 C 385 -40.1 459 -87.3 514.5 -63.7 Z" fill="white"/>
+        <path d="M 514.5 42.5 L 329.5 42.5 L 329.5 -51.9 C 385 -40.1 459 -87.3 514.5 -63.7 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_13">
+        <line x1="186.0879" y1="42.5" x2="235.62944" y2="123.49535" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_14">
+        <line x1="400.5166" y1="42.5" x2="371.43076" y2="122.37857" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_8">
+        <circle cx="332" cy="132.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="332" cy="132.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(322.133 124.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Line_15">
+        <path d="M 322.45346 109.38745 C 314.44 93.24774 301.04216 71.992775 281 57 C 244.45365 29.661067 232.18042 71.55478 203 36 C 188.1697 17.93008 181.95636 -8.764435 179.43181 -30.649654" marker-end="url(#FilledArrow_Marker)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_16">
+        <circle cx="178" cy="-68.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="178" cy="-68.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(168.133 -76.688545)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <circle cx="465.5" cy="-2.5" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="465.5" cy="-2.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(448.535 -18.87709)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.7275" y="13">Set</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <circle cx="388" cy="-50.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="388" cy="-50.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(378.133 -58.688545)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Line_19">
+        <path d="M 332.5608 107.50624 C 334.67405 91.40904 340.98464 72.0411 358.4453 64 C 390.7421 49.12649 415.67087 98.83978 446 80 C 460.16694 71.19981 465.3536 52.6203 466.85844 35.317553" marker-end="url(#FilledArrow_Marker_2)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_20">
+        <path d="M 277.90133 107.53906 C 280.19522 87.53487 286.15013 59.79744 301.5 41 C 327.989 8.561577 345.4941 43.92241 370 18 C 378.57507 8.929258 383.35296 -2.1807988 385.94112 -12.79233" marker-end="url(#FilledArrow_Marker_2)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_21">
+        <line x1="276.5" y1="193.99999" x2="276.5" y2="167.40001" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_22">
+        <line x1="345.84637" y1="170.03905" x2="344.07964" y2="165.24925" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_23">
+        <line x1="303.98374" y1="250.23153" x2="299.55647" y2="245.20054" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_24">
+        <line x1="330.76817" y1="246.19863" x2="340.16674" y2="225.32828" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_25">
+        <line x1="320.5" y1="319.5" x2="320.5" y2="303.9" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_26">
+        <path d="M 98.5 437.5 L 283.5 437.5 L 283.5 531.9 C 228 520.1 154 567.3 98.5 543.7 Z" fill="white"/>
+        <path d="M 98.5 437.5 L 283.5 437.5 L 283.5 531.9 C 228 520.1 154 567.3 98.5 543.7 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_27">
+        <path d="M 358.5 437.5 L 543.5 437.5 L 543.5 531.9 C 488 520.1 414 567.3 358.5 543.7 Z" fill="white"/>
+        <path d="M 358.5 437.5 L 543.5 437.5 L 543.5 531.9 C 488 520.1 414 567.3 358.5 543.7 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_28">
+        <line x1="249.8762" y1="390" x2="229.8581" y2="426.2103" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_29">
+        <line x1="391.66916" y1="390" x2="411.8532" y2="426.23075" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_30">
+        <circle cx="169.5" cy="439.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="169.5" cy="439.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(159.633 431.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Line_31">
+        <path d="M 165.24516 414.86264 C 166.6394 406.33047 172.16687 398.11967 187 395 C 222.69643 387.4924 257.67878 427.3069 295.5 413 C 310.83117 407.20057 317.841 394.8472 320.75656 382.20623" marker-end="url(#FilledArrow_Marker_2)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_32">
+        <circle cx="179.5" cy="511.5" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="179.5" cy="511.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(162.535 495.1229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.0125" y="13">Get</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Line_33">
+        <line x1="176.0606" y1="486.7363" x2="174.30133" y2="474.06957" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_34">
+        <circle cx="422" cy="507" r="25.0000399475474" fill="#ffc0ff"/>
+        <circle cx="422" cy="507" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(405.035 490.6229)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="6.0125" y="13">Get</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="14566126e-20" y="29.37709">Local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <circle cx="456" cy="439.5" r="25.0000399475474" fill="#ffc0c0"/>
+        <circle cx="456" cy="439.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(446.133 431.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="18829382e-20" y="13">Phi</tspan>
+        </text>
+      </g>
+      <g id="Line_36">
+        <line x1="433.2495" y1="484.66645" x2="440.2969" y2="470.67524" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_37">
+        <path d="M 435.73 424.86057 C 418.4996 409.8844 395.0112 382.8264 385 341 C 368.285 271.16532 412.01517 252.0691 397 193 C 390.9114 169.04775 379.0729 154.57274 367.1487 145.82742" marker-end="url(#FilledArrow_Marker_2)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_42">
+        <rect x="586.5" y="378.5" width="214" height="177" fill="white"/>
+        <path d="M 586.5 378.5 L 800.5 378.5 L 800.5 555.5 L 586.5 555.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+        <text transform="translate(591.5 383.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="76.944" y="15">Legend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <text transform="translate(687.245 475.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Local data flow</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <text transform="translate(687.245 520)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Global data flow</tspan>
+        </text>
+      </g>
+      <g id="Graphic_43">
+        <circle cx="621" cy="483.696" r="15.0000239685284" fill="#ffc0ff"/>
+        <circle cx="621" cy="483.696" r="15.0000239685284" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_44">
+        <line x1="636" y1="483.696" x2="660.1" y2="483.696" marker-end="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_46">
+        <circle cx="621" cy="528.196" r="15.0000239685285" fill="#ffc0c0"/>
+        <circle cx="621" cy="528.196" r="15.0000239685285" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_45">
+        <line x1="636" y1="528.196" x2="657.1" y2="528.196" marker-end="url(#FilledArrow_Marker)" stroke="#ff7e79" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_48">
+        <rect x="606" y="424.196" width="30" height="30" fill="white"/>
+        <rect x="606" y="424.196" width="30" height="30" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_47">
+        <line x1="636" y1="439.196" x2="657.1" y2="439.196" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Graphic_49">
+        <text transform="translate(687.245 431.304)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Control flow</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle
new file mode 100644 (file)
index 0000000..f819fe1
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/double-monomorphic-inline-cache-speculation.svg
new file mode 100644 (file)
index 0000000..b647a1f
--- /dev/null
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="160.2928 87.71104 624.2782 344.54314" width="624.2782" height="344.54314">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="8" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="11" panose-1="2 0 2 6 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="1363.6364" x-height="520" cap-height="722" ascent="930.9998" descent="-212.99744" font-style="italic" font-weight="200">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-UltraLightItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="10" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1153.8462" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-02 19:21:22 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="160.2928" y="87.71104" width="624.2782" height="344.54314"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_21">
+        <rect x="173" y="112.5" width="113.6138" height="263" fill="white"/>
+        <rect x="173" y="112.5" width="113.6138" height="263" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(178 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="28.328904" y="13">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="496.5" y="112.5" width="113.6138" height="263" fill="white"/>
+        <rect x="496.5" y="112.5" width="113.6138" height="263" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(501.5 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="39.047404" y="13">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <rect x="181" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="181" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(186 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">jmp Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <rect x="334.75" y="112.5" width="113.6138" height="263" fill="white"/>
+        <rect x="334.75" y="112.5" width="113.6138" height="263" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(339.75 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="28.328904" y="13">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="342.75" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="342.75" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(347.75 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">cmp S1, (%rax)</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">jnz Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">mov 10(%rax), %rax</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <rect x="658.25" y="112.5" width="113.6138" height="263" fill="white"/>
+        <rect x="658.25" y="112.5" width="113.6138" height="263" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(663.25 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="41.211904" y="13">FTL</tspan>
+        </text>
+      </g>
+      <g id="Line_38">
+        <line x1="471.9319" y1="88.21104" x2="471.9319" y2="399.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_39">
+        <line x1="310.1819" y1="88.21104" x2="310.1819" y2="399.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_40">
+        <line x1="633.6819" y1="88.21104" x2="633.6819" y2="399.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Graphic_43">
+        <text transform="translate(183 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">var f = o.f</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <text transform="translate(344.09946 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">var f = o.f</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <text transform="translate(501.5 190.38502)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="10">CheckStructure(@o, S1)</tspan>
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="22.29007">GetByOffset(@o, …)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_54">
+        <text transform="translate(165.2928 394.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.2301" y="13">Step 1: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">Baseline code </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="12.5761" y="29.37709">with uninitialized IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_55">
+        <text transform="translate(327.0428 394.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.2301" y="13">Step 2: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">Baseline code </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="11.4646" y="29.37709">after IC repartching.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_56">
+        <text transform="translate(488.4348 394.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="1.7081" y="13">Step 3: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">DFG code with </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="38.3096" y="29.37709">inlined IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_57">
+        <text transform="translate(650.1848 394.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.3536" y="13">Step 4: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">FTL code with </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="38.3096" y="29.37709">inlined IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_60">
+        <text transform="translate(663.8138 190.38502)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="10">CheckStructure(@o, S1)</tspan>
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="22.29007">GetByOffset(@o, …)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_66">
+        <rect x="181" y="284" width="99.5" height="62" fill="white"/>
+        <rect x="181" y="284" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(186 289)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">jmp Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_65">
+        <rect x="342.75" y="284" width="99.5" height="62" fill="white"/>
+        <rect x="342.75" y="284" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(347.75 289)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">cmp S1, (%rax)</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">jnz Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">mov 18(%rax), %rax</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_64">
+        <text transform="translate(183 269.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">var g = o.g</tspan>
+        </text>
+      </g>
+      <g id="Graphic_63">
+        <text transform="translate(344.09946 269.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">var g = o.g</tspan>
+        </text>
+      </g>
+      <g id="Graphic_62">
+        <text transform="translate(501.5 294.885)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="10">CheckStructure(@o, S1)</tspan>
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="22.29007">GetByOffset(@o, …)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_61">
+        <text transform="translate(663.8138 294.885)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="10">CheckStructure(@o, S1)</tspan>
+          <tspan font-family="Helvetica Neue" font-size="10" font-weight="300" fill="black" x="0" y="22.29007">GetByOffset(@o, …)</tspan>
+        </text>
+      </g>
+      <g id="Line_69">
+        <line x1="499.5" y1="301.5" x2="605" y2="301.5" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+      <g id="Line_70">
+        <line x1="661.3638" y1="301.5" x2="766.8638" y2="301.5" stroke="#941100" stroke-opacity=".8" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.graffle
new file mode 100644 (file)
index 0000000..f27ec94
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/example-data-flow-graph.svg
new file mode 100644 (file)
index 0000000..e10242e
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="432.43 -103.5 172.57 263" width="172.57" height="263">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-04 21:48:05 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="432.43" y="-103.5" width="172.57" height="263"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_76">
+        <circle cx="536.5" cy="46.5" r="25.0000399475474" fill="white"/>
+        <circle cx="536.5" cy="46.5" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(521.5 38.311455)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="2.6045" y="13">Add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_77">
+        <circle cx="485.5" cy="-39" r="25.0000399475474" fill="white"/>
+        <circle cx="485.5" cy="-39" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(470.5 -47.188545)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="1.337" y="13">arg1</tspan>
+        </text>
+      </g>
+      <g id="Line_81">
+        <line x1="523.69" y1="25.024407" x2="503.38156" y2="-9.022094" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_92">
+        <circle cx="579.5" cy="-78" r="25.0000399475474" fill="white"/>
+        <circle cx="579.5" cy="-78" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(564.5 -86.18855)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="1.337" y="13">arg2</tspan>
+        </text>
+      </g>
+      <g id="Line_93">
+        <line x1="544.6633" y1="22.864347" x2="568.10474" y2="-45.006753" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_94">
+        <circle cx="536.5" cy="134" r="25.0000399475474" fill="white"/>
+        <circle cx="536.5" cy="134" r="25.0000399475474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(515.4335 125.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="8100187e-19" y="13">Return</tspan>
+        </text>
+      </g>
+      <g id="Line_95">
+        <line x1="536.5" y1="108.99999" x2="536.5" y2="81.40001" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_96">
+        <text transform="translate(437.43 -47.188545)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">23:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_97">
+        <text transform="translate(531.43 -86.18855)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">24:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_98">
+        <text transform="translate(488.43 38.311455)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">25:</tspan>
+        </text>
+      </g>
+      <g id="Graphic_99">
+        <text transform="translate(488.43 125.81145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="0" y="13">28:</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.graffle
new file mode 100644 (file)
index 0000000..fff1f78
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/five-parts-of-speculation.svg
new file mode 100644 (file)
index 0000000..ab1e2c6
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="175.5 179 220 166.5" width="220" height="166.5">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Medium"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 01:25:20 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="175.5" y="179" width="220" height="166.5"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_3">
+        <rect x="176" y="179.5" width="219" height="36" fill="white"/>
+        <rect x="176" y="179.5" width="219" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 189.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="75.718" y="13">Bytecode</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <rect x="176" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="176" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 271.8729)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="18.0565" y="13">Profiling</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="31.427" y="29.37709">Tier</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <rect x="299.5" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="299.5" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(304.5 271.8729)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="10.484" y="13">Optimizing</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="31.427" y="29.37709">Tier</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <path d="M 232 264.12705 L 232 244.87295 L 278.5664 244.87295 L 278.5664 236.5 L 297 254.5 L 278.5664 272.5 L 278.5664 264.12705 Z" fill="white"/>
+        <path d="M 232 264.12705 L 232 244.87295 L 278.5664 244.87295 L 278.5664 236.5 L 297 254.5 L 278.5664 272.5 L 278.5664 264.12705 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(237 246.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="5.465" y="13">Control</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <path d="M 330 312.87295 L 330 332.12705 L 291.9336 332.12705 L 291.9336 340.5 L 273.5 322.5 L 291.9336 304.5 L 291.9336 312.87295 Z" fill="white"/>
+        <path d="M 330 312.87295 L 330 332.12705 L 291.9336 332.12705 L 291.9336 340.5 L 273.5 322.5 L 291.9336 304.5 L 291.9336 312.87295 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(278.5 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="9.522" y="13">OSR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <path d="M 210.6836 218 L 236.8164 218 L 236.8164 221.82422 L 241.75 221.82422 L 223.75 229 L 205.75 221.82422 L 210.6836 221.82422 Z" fill="white"/>
+        <path d="M 210.6836 218 L 236.8164 218 L 236.8164 221.82422 L 241.75 221.82422 L 223.75 229 L 205.75 221.82422 L 210.6836 221.82422 Z" stroke="#666" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_25">
+        <path d="M 334.1836 218 L 360.3164 218 L 360.3164 221.82422 L 365.25 221.82422 L 347.25 229 L 329.25 221.82422 L 334.1836 221.82422 Z" fill="white"/>
+        <path d="M 334.1836 218 L 360.3164 218 L 360.3164 221.82422 L 365.25 221.82422 L 347.25 229 L 329.25 221.82422 L 334.1836 221.82422 Z" stroke="#666" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle
new file mode 100644 (file)
index 0000000..613ac6e
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-dfg-ir-to-bytecode-osr-exit.svg
new file mode 100644 (file)
index 0000000..1a8f964
--- /dev/null
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="543 234.7456 775.8369 138.01562" width="775.8369" height="138.01562">
+  <defs>
+    <font-face font-family="Monaco" font-size="14" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Thin"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-10 22:41:57 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="543" y="234.7456" width="775.8369" height="138.01562"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_7">
+        <text transform="translate(1112.2041 294.16895)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">12] add loc6, loc6, arg3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <text transform="translate(1087 265.9091)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">[</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <text transform="translate(1087 294.16895)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">[</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <text transform="translate(1087 322.4288)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">[</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <text transform="translate(1120.6055 265.9091)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">7] add loc6, arg1, arg2</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <text transform="translate(1112.2041 322.4288)" fill="black">
+          <tspan font-family="Monaco" font-size="14" font-weight="400" fill="black" x="0" y="14">17] ret loc6</tspan>
+        </text>
+      </g>
+      <g id="Line_10">
+        <line x1="839.1892" y1="280.4054" x2="1076.1189" y2="265.7331" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_11">
+        <line x1="847.2973" y1="327.7027" x2="1076.195" y2="295.7622" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_12">
+        <text transform="translate(896.7001 260.84967) rotate(-3)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="300" fill="black" x="43.014" y="12">OSR exit</tspan>
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="300" fill="black" x="14210855e-20" y="27.348083">live state: arg1, arg2, arg3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_13">
+        <text transform="translate(922.9454 301.08742) rotate(-7.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="300" fill="black" x="28.05" y="12">OSR exit</tspan>
+          <tspan font-family="Helvetica Neue" font-size="12" font-weight="300" fill="black" x="19184654e-20" y="27.348083">live state: loc6, arg3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <text transform="translate(548 239.7456)" fill="#666">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="12">24: GetLocal(arg1, bc#7)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="28.001953">25: GetLocal(arg2, bc#7)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="44.003906">26: ArithAdd(Int32:@24, Int32:@25, bc#7)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="60.00586">27: MovHint(Untyped:@26, loc6)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="76.00781">29: GetLocal(arg3, bc#12)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="92.00977">30: ArithAdd(Int32:@26, Int32:@29, bc#12)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="108.01172">31: MovHint(Untyped:@30, loc6)</tspan>
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="0" y="124.01367">33: Return(Untyped:@3, bc#17)</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.graffle
new file mode 100644 (file)
index 0000000..f84233d
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-pipeline.svg
new file mode 100644 (file)
index 0000000..04c0fe7
--- /dev/null
@@ -0,0 +1,756 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="113 77 881 1120" width="881" height="1120">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#00e7ff"/>
+      <stop offset="1" stop-color="#acc2ff"/>
+    </linearGradient>
+    <linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(246.5 859.6671) rotate(90) scale(27.77528)"/>
+    <linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#acc2ff"/>
+      <stop offset="1" stop-color="#ffc1ff"/>
+    </linearGradient>
+    <linearGradient id="Obj_Gradient_2" xl:href="#Gradient_2" gradientTransform="translate(553.5 1018.073) rotate(90) scale(27.77528)"/>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <linearGradient x1="0" x2="1" id="Gradient_3" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#ffc1ff"/>
+      <stop offset="1" stop-color="#fecbd2"/>
+    </linearGradient>
+    <linearGradient id="Obj_Gradient_3" xl:href="#Gradient_3" gradientTransform="translate(860.5 606.2177) rotate(90) scale(27.77528)"/>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="937.5" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-857.1429" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-11 01:07:50 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="113" y="77" width="881" height="1120"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="114" y="131" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="131" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 137.20564)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="33.7245" y="12">Live Catch Variable Preservation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="114" y="162.68118" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="162.68118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 168.88682)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="114" y="194.36236" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="194.36236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 200.568)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="96.5665" y="12">Unification</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="114" y="226.04354" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="226.04354" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 232.24918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.7625" y="12">Prediction Injection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="114" y="257.72472" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="257.72472" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 263.93036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="28.297" y="12">Static Execution Count Estimation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="114" y="289.4059" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="289.4059" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 295.61154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="57.924" y="12">Backwards Propagation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="114" y="321.08708" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="321.08708" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 327.29272)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="60.927" y="12">Prediction Propagation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="114" y="352.76826" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="352.76826" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 358.9739)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="111.4905" y="12">Fixup</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <rect x="114" y="384.44944" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="384.44944" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 390.6551)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="52.984" y="12">InvalidationPoint Injection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_11">
+        <rect x="114" y="416.1306" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="416.1306" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 422.33626)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="67.6675" y="12">Type Check Hoisting</tspan>
+        </text>
+      </g>
+      <g id="Graphic_12">
+        <rect x="114" y="447.8118" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="447.8118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 454.01744)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.1515" y="12">Strength Reduction</tspan>
+        </text>
+      </g>
+      <g id="Graphic_13">
+        <rect x="114" y="479.493" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="479.493" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 485.6986)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <rect x="114" y="511.17416" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="511.17416" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 517.3798)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_15">
+        <rect x="114" y="542.85534" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="542.85534" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 549.061)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <rect x="114" y="574.5365" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="574.5365" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 580.74216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="73.212" y="12">CFG Simplification</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <rect x="114" y="606.2177" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="606.2177" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 612.42334)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.4485" y="12">Local Common Subexpression Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <rect x="114" y="637.8989" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="637.8989" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 644.1045)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <rect x="114" y="669.58006" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="669.58006" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 675.7857)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <rect x="114" y="701.2612" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="701.2612" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 707.4669)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="114" y="99.31882" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="99.31882" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 105.52446)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="20.601" y="12">DFG Byte Code Parser (the frontend)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <rect x="114" y="732.9424" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="732.9424" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 739.1481)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="100.4145" y="12">Clean Up</tspan>
+        </text>
+      </g>
+      <g id="Graphic_36">
+        <rect x="114" y="764.6236" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="764.6236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 770.8292)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="62.981" y="12">Critical Edge Breaking</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <rect x="114" y="796.3048" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="796.3048" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 802.5104)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="51.658" y="12">Loop Pre Header Creation</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <rect x="114" y="827.986" width="265" height="27.77528" fill="#00e7ff"/>
+        <rect x="114" y="827.986" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 834.1916)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.3005" y="12">CPS Rethreading</tspan>
+        </text>
+      </g>
+      <g id="Graphic_39">
+        <rect x="114" y="859.6671" width="265" height="27.77528" fill="url(#Obj_Gradient)"/>
+        <rect x="114" y="859.6671" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 865.8728)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="80.076" y="12">SSA Conversion</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <rect x="114" y="891.3483" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="891.3483" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 897.554)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="86.342" y="12">SSA Lowering</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <rect x="114" y="923.0295" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="923.0295" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 929.2351)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="62.422" y="12">Arguments Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_42">
+        <rect x="114" y="954.7107" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="954.7107" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 960.9163)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="75.968" y="12">Put Stack Sinking</tspan>
+        </text>
+      </g>
+      <g id="Graphic_43">
+        <rect x="114" y="986.3919" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="986.3919" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 992.5975)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="75.253" y="12">Constant Hoisting</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <rect x="114" y="1018.073" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="1018.073" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 1024.2787)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="1.322" y="12">Global Common Subexpression Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <rect x="114" y="1049.7542" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="114" y="1049.7542" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(119 1055.9599)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_46">
+        <rect x="421" y="99.31882" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="99.31882" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 105.52446)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <rect x="421" y="131" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="131" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 137.20564)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <rect x="421" y="162.68118" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="162.68118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 168.88682)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="100.4145" y="12">Clean Up</tspan>
+        </text>
+      </g>
+      <g id="Graphic_50">
+        <rect x="421" y="194.36236" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="194.36236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 200.568)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.1515" y="12">Strength Reduction</tspan>
+        </text>
+      </g>
+      <g id="Graphic_51">
+        <rect x="421" y="226.04354" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="226.04354" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 232.24918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="62.981" y="12">Critical Edge Breaking</tspan>
+        </text>
+      </g>
+      <g id="Graphic_52">
+        <rect x="421" y="257.72472" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="257.72472" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 263.93036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="54.544" y="12">Object Allocation Sinking</tspan>
+        </text>
+      </g>
+      <g id="Graphic_53">
+        <rect x="421" y="289.4059" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="289.4059" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 295.61154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="68.506" y="12">ValueRep Reduction</tspan>
+        </text>
+      </g>
+      <g id="Graphic_55">
+        <rect x="421" y="321.08708" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="321.08708" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 327.29272)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_54">
+        <rect x="421" y="352.76826" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="352.76826" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 358.9739)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_56">
+        <rect x="421" y="384.44944" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="384.44944" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 390.6551)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="77.658" y="12">Constant Folding</tspan>
+        </text>
+      </g>
+      <g id="Graphic_58">
+        <rect x="421" y="416.1306" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="416.1306" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 422.33626)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_57">
+        <rect x="421" y="447.8118" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="447.8118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 454.01744)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_59">
+        <rect x="421" y="479.493" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="479.493" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 485.6986)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="46.354" y="12">Loop Invariant Code Motion</tspan>
+        </text>
+      </g>
+      <g id="Graphic_60">
+        <rect x="421" y="511.17416" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="511.17416" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 517.3798)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_61">
+        <rect x="421" y="542.85534" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="542.85534" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 549.061)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="48.1675" y="12">Integer Range Optimization</tspan>
+        </text>
+      </g>
+      <g id="Graphic_62">
+        <rect x="421" y="574.5365" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="574.5365" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 580.74216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="100.4145" y="12">Clean Up</tspan>
+        </text>
+      </g>
+      <g id="Graphic_63">
+        <rect x="421" y="606.2177" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="606.2177" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 612.42334)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="53.335" y="12">Integer Check Combining</tspan>
+        </text>
+      </g>
+      <g id="Graphic_64">
+        <rect x="421" y="637.8989" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="637.8989" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 644.1045)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="1.322" y="12">Global Common Subexpression Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_66">
+        <rect x="421" y="669.58006" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="669.58006" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 675.7857)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_65">
+        <rect x="421" y="701.2612" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="701.2612" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 707.4669)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.041" y="12">Abstract Interpreter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_68">
+        <rect x="421" y="732.9424" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="732.9424" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 739.1481)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="43.247" y="12">Global Store Barrier Insertion</tspan>
+        </text>
+      </g>
+      <g id="Graphic_69">
+        <rect x="421" y="764.6236" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="764.6236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 770.8292)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="59.497" y="12">Store Barrier Clustering</tspan>
+        </text>
+      </g>
+      <g id="Graphic_70">
+        <rect x="421" y="796.3048" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="796.3048" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 802.5104)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="75.851" y="12">MovHint Removal</tspan>
+        </text>
+      </g>
+      <g id="Graphic_71">
+        <rect x="421" y="827.986" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="827.986" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 834.1916)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="100.4145" y="12">Clean Up</tspan>
+        </text>
+      </g>
+      <g id="Graphic_72">
+        <rect x="421" y="859.6671" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="859.6671" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 865.8728)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="60.9205" y="12">Dead Code Elimination</tspan>
+        </text>
+      </g>
+      <g id="Graphic_73">
+        <rect x="421" y="891.3483" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="891.3483" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 897.554)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="89.332" y="12">Stack Layout</tspan>
+        </text>
+      </g>
+      <g id="Graphic_74">
+        <rect x="421" y="923.0295" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="923.0295" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 929.2351)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.3385" y="12">Liveness Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_75">
+        <rect x="421" y="954.7107" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="954.7107" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 960.9163)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="55.636" y="12">OSR Availability Analysis</tspan>
+        </text>
+      </g>
+      <g id="Graphic_76">
+        <rect x="421" y="986.3919" width="265" height="27.77528" fill="#acc2ff"/>
+        <rect x="421" y="986.3919" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 992.5975)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="63.4555" y="12">Watchpoint Collection</tspan>
+        </text>
+      </g>
+      <g id="Graphic_77">
+        <rect x="421" y="1018.073" width="265" height="27.77528" fill="url(#Obj_Gradient_2)"/>
+        <rect x="421" y="1018.073" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 1023.7721)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="700" fill="black" x="74.6485" y="13">Lower DFG to B3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_79">
+        <rect x="421" y="1049.7542" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="421" y="1049.7542" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(426 1055.9599)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="57.794" y="12">Reduce Double To Float</tspan>
+        </text>
+      </g>
+      <g id="Graphic_80">
+        <rect x="728" y="99.31882" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="99.31882" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 105.52446)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="78.4965" y="12">Reduce Strength</tspan>
+        </text>
+      </g>
+      <g id="Graphic_81">
+        <rect x="728" y="131" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="131" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 137.20564)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="48.2845" y="12">Hoist Loop Invariant Values</tspan>
+        </text>
+      </g>
+      <g id="Graphic_82">
+        <rect x="728" y="162.68118" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="162.68118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 168.88682)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="24.072" y="12">Eliminate Common Subexpressions</tspan>
+        </text>
+      </g>
+      <g id="Graphic_84">
+        <rect x="728" y="194.36236" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="194.36236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 200.568)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="66.218" y="12">Eliminate Dead Code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_85">
+        <rect x="728" y="226.04354" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="226.04354" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 232.24918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="86.342" y="12">Infer Switches</tspan>
+        </text>
+      </g>
+      <g id="Graphic_86">
+        <rect x="728" y="257.72472" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="257.72472" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 263.93036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="61.759" y="12">Reduce Loop Strength</tspan>
+        </text>
+      </g>
+      <g id="Graphic_87">
+        <rect x="728" y="289.4059" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="289.4059" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 295.61154)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="85.6075" y="12">Duplicate Tails</tspan>
+        </text>
+      </g>
+      <g id="Graphic_88">
+        <rect x="728" y="321.08708" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="321.08708" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 327.29272)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="104.516" y="12">Fix SSA</tspan>
+        </text>
+      </g>
+      <g id="Graphic_89">
+        <rect x="728" y="352.76826" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="352.76826" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 358.9739)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="68.025" y="12">Fold Path Constants</tspan>
+        </text>
+      </g>
+      <g id="Graphic_90">
+        <rect x="728" y="384.44944" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="384.44944" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 390.6551)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="86.095" y="12">Lower Macros</tspan>
+        </text>
+      </g>
+      <g id="Graphic_91">
+        <rect x="728" y="416.1306" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="416.1306" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 422.33626)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="15.6675" y="12">Optimize Associative Expression Trees</tspan>
+        </text>
+      </g>
+      <g id="Graphic_92">
+        <rect x="728" y="447.8118" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="447.8118" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 454.01744)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="78.4965" y="12">Reduce Strength</tspan>
+        </text>
+      </g>
+      <g id="Graphic_93">
+        <rect x="728" y="479.493" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="479.493" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 485.6986)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="28.674" y="12">Lower Macros After Optimizations</tspan>
+        </text>
+      </g>
+      <g id="Graphic_94">
+        <rect x="728" y="511.17416" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="511.17416" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 517.3798)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="55.493" y="12">Legalize Memory Offsets</tspan>
+        </text>
+      </g>
+      <g id="Graphic_95">
+        <rect x="728" y="542.85534" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="542.85534" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 549.061)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="79.8225" y="12">Move Constants</tspan>
+        </text>
+      </g>
+      <g id="Graphic_96">
+        <rect x="728" y="574.5365" width="265" height="27.77528" fill="#ffc1ff"/>
+        <rect x="728" y="574.5365" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 580.74216)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="66.218" y="12">Eliminate Dead Code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_97">
+        <rect x="728" y="606.2177" width="265" height="27.77528" fill="url(#Obj_Gradient_3)"/>
+        <rect x="728" y="606.2177" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 612.42334)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="82.4875" y="12">Lower B3 to Air</tspan>
+        </text>
+      </g>
+      <g id="Graphic_99">
+        <rect x="728" y="637.8989" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="637.8989" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 644.1045)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="89.2215" y="12">Simplify CFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_100">
+        <rect x="728" y="669.58006" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="669.58006" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 675.7857)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="86.095" y="12">Lower Macros</tspan>
+        </text>
+      </g>
+      <g id="Graphic_101">
+        <rect x="728" y="701.2612" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="701.2612" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 707.4669)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="66.218" y="12">Eliminate Dead Code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_102">
+        <rect x="728" y="732.9424" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="732.9424" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 739.1481)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="19.2945" y="12">Allocate Registers By Graph Coloring</tspan>
+        </text>
+      </g>
+      <g id="Graphic_103">
+        <rect x="728" y="764.6236" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="764.6236" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 770.8292)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="75.617" y="12">Fix Obvious Spills</tspan>
+        </text>
+      </g>
+      <g id="Graphic_104">
+        <rect x="728" y="796.3048" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="796.3048" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 802.5104)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="64.32" y="12">Lower After Reg Alloc</tspan>
+        </text>
+      </g>
+      <g id="Graphic_105">
+        <rect x="728" y="827.986" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="827.986" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 834.1916)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="30" y="12">Allocate Stack By Graph Coloring</tspan>
+        </text>
+      </g>
+      <g id="Graphic_106">
+        <rect x="728" y="859.6671" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="859.6671" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 865.8728)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="76.1695" y="12">Lower Stack Args</tspan>
+        </text>
+      </g>
+      <g id="Graphic_107">
+        <rect x="728" y="891.3483" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="891.3483" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 897.554)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="61.538" y="12">Report Used Registers</tspan>
+        </text>
+      </g>
+      <g id="Graphic_108">
+        <rect x="728" y="923.0295" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="923.0295" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 929.2351)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="55.2915" y="12">Fix Partial Register Stalls</tspan>
+        </text>
+      </g>
+      <g id="Graphic_109">
+        <rect x="728" y="954.7107" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="954.7107" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 960.9163)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="71.1775" y="12">Lower Entry Switch</tspan>
+        </text>
+      </g>
+      <g id="Graphic_110">
+        <rect x="728" y="986.3919" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="986.3919" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 992.5975)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="89.2215" y="12">Simplify CFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_111">
+        <rect x="728" y="1018.073" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="1018.073" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 1024.2787)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="65.0155" y="12">Optimize Block Order</tspan>
+        </text>
+      </g>
+      <g id="Graphic_112">
+        <rect x="728" y="1049.7542" width="265" height="27.77528" fill="#fecbd2"/>
+        <rect x="728" y="1049.7542" width="265" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(733 1055.9599)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="59.4775" y="12">Generate (the backend)</tspan>
+        </text>
+      </g>
+      <g id="Line_114">
+        <path d="M 246.5 1077.5295 L 246.5 1100 L 401 1100 L 401 78 L 553.5 78 L 553.5 89.41882" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_115">
+        <path d="M 553.5 1077.5295 L 553.5 1100 L 706.5217 1100 L 706.5217 78 L 860.5 78 L 860.5 89.41882" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Graphic_125">
+        <rect x="287.5" y="1121" width="532" height="75" fill="white"/>
+        <path d="M 287.5 1121 L 819.5 1121 L 819.5 1196 L 287.5 1196 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+        <text transform="translate(292.5 1126)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="235.944" y="15">Legend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_116">
+        <text transform="translate(355.89076 1160.3833)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">DFG IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_126">
+        <rect x="310.5" y="1154" width="30.40625" height="27.77528" fill="#00e7ff"/>
+        <rect x="310.5" y="1154" width="30.40625" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_128">
+        <text transform="translate(486.95 1159.6916)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">DFG SSA IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_127">
+        <rect x="441.2492" y="1154" width="30.40625" height="27.77528" fill="#acc2ff"/>
+        <rect x="441.2492" y="1154" width="30.40625" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_130">
+        <text transform="translate(651.0326 1157.6167)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">B3 IR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_129">
+        <rect x="606.5" y="1153.3084" width="30.40625" height="27.77528" fill="#ffc1ff"/>
+        <rect x="606.5" y="1153.3084" width="30.40625" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_132">
+        <text transform="translate(776.0326 1159)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="0" y="13">Air</tspan>
+        </text>
+      </g>
+      <g id="Graphic_131">
+        <rect x="731.5" y="1154.6916" width="30.40625" height="27.77528" fill="#fecbd2"/>
+        <rect x="731.5" y="1154.6916" width="30.40625" height="27.77528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.graffle
new file mode 100644 (file)
index 0000000..3b57a1d
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/ftl-stackmaps.svg
new file mode 100644 (file)
index 0000000..e8c5fbb
--- /dev/null
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="149.5 150 769.5 435.27846" width="769.5" height="435.27846">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="40" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Thin"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="60" panose-1="2 0 2 6 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="520" cap-height="722" ascent="930.9998" descent="-212.99744" font-weight="200">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-UltraLight"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1071.4286" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="77" panose-1="2 0 2 6 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="520" cap-height="722" ascent="930.9998" descent="-212.99744" font-weight="200">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-UltraLight"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.15 
+    <dc:date>2020-04-11 00:09:17 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke="none" stroke-dasharray="none" fill-opacity="1" stroke-opacity="1" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="149.5" y="150" width="769.5" height="435.27846"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="150" y="150.5" width="191" height="29.5" fill="#ccc"/>
+        <rect x="150" y="150.5" width="191" height="29.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 156.026)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="54.188" y="15">Stackmap</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="671" y="150.5" width="247.5" height="29.5" fill="#ccc"/>
+        <rect x="671" y="150.5" width="247.5" height="29.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 156.026)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="62.15" y="15">How Computed</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="150" y="180" width="191" height="80" fill="white"/>
+        <rect x="150" y="180" width="191" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 210.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="27.076" y="15">DFG IR stackmap</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="341" y="150.5" width="330" height="29.5" fill="#ccc"/>
+        <rect x="341" y="150.5" width="330" height="29.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(346 156.026)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="109.464" y="15">Mapping Type</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="341" y="180" width="330" height="80" fill="white"/>
+        <rect x="341" y="180" width="330" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_8">
+        <rect x="671" y="180" width="247.5" height="80" fill="white"/>
+        <rect x="671" y="180" width="247.5" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 210.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="37.71" y="15">DFG OSR exit analysis </tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <text transform="translate(376.5955 206.13214)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">bytecode</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="16.752" y="33.448">local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <text transform="translate(544.7505 203)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">DFG Node</tspan>
+        </text>
+      </g>
+      <g id="Graphic_11">
+        <text transform="translate(545.4155 227.71228)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="19895197e-20" y="15">stack slot</tspan>
+        </text>
+      </g>
+      <g id="Graphic_12">
+        <text transform="translate(525.0955 197)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="40" font-weight="300" fill="black" x="0" y="39">{</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <path d="M 456.5955 228.375 L 456.5955 221.125 L 494.5955 221.125 L 494.5955 217.5 L 509.5955 224.75 L 494.5955 232 L 494.5955 228.375 Z" fill="#a5a5a5"/>
+        <path d="M 456.5955 228.375 L 456.5955 221.125 L 494.5955 221.125 L 494.5955 217.5 L 509.5955 224.75 L 494.5955 232 L 494.5955 228.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_16">
+        <rect x="150" y="260" width="191" height="80" fill="white"/>
+        <rect x="150" y="260" width="191" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 290.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="41.748" y="15">B3 value reps</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <rect x="341" y="260" width="330" height="80" fill="white"/>
+        <rect x="341" y="260" width="330" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_21">
+        <text transform="translate(376.2195 283.04413)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">argument</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="14.456" y="33.448">index</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <text transform="translate(545.0145 270.61957)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="6679102e-19" y="15">register</tspan>
+        </text>
+      </g>
+      <g id="Graphic_19">
+        <text transform="translate(544.4155 291.33185)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="19895197e-20" y="15">stack slot</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <text transform="translate(520.7655 262.61957)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="60" font-weight="200" fill="black" x="0" y="56">{</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <path d="M 456.5955 304.99457 L 456.5955 297.74457 L 494.5955 297.74457 L 494.5955 294.11957 L 509.5955 301.36957 L 494.5955 308.61957 L 494.5955 304.99457 Z" fill="#a5a5a5"/>
+        <path d="M 456.5955 304.99457 L 456.5955 297.74457 L 494.5955 297.74457 L 494.5955 294.11957 L 509.5955 301.36957 L 494.5955 308.61957 L 494.5955 304.99457 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_23">
+        <text transform="translate(544.4395 312.9073)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="7744916e-19" y="15">immediate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <rect x="671" y="260" width="247.5" height="80" fill="white"/>
+        <rect x="671" y="260" width="247.5" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 282.07295)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="43.342" y="15">B3 register allocation</tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="300" fill="black" x="21.611" y="32.447998">(works for any B3 data flow edge)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <rect x="150" y="340" width="191" height="80" fill="white"/>
+        <rect x="150" y="340" width="191" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 370.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="4.42" y="15">FTL OSR exit descriptor</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <rect x="341" y="340" width="330" height="80" fill="white"/>
+        <rect x="341" y="340" width="330" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_31">
+        <text transform="translate(376.5955 363.04413)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">bytecode</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="16.752" y="33.448">local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <path d="M 456.5955 384.99457 L 456.5955 377.74457 L 494.5955 377.74457 L 494.5955 374.11957 L 509.5955 381.36957 L 494.5955 388.61957 L 494.5955 384.99457 Z" fill="#a5a5a5"/>
+        <path d="M 456.5955 384.99457 L 456.5955 377.74457 L 494.5955 377.74457 L 494.5955 374.11957 L 509.5955 381.36957 L 494.5955 388.61957 L 494.5955 384.99457 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_33">
+        <rect x="671" y="340" width="247.5" height="80" fill="white"/>
+        <rect x="671" y="340" width="247.5" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 361.552)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="39.614" y="15">DFG IR stackmap and</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="72.686" y="33.448">FTL lowering</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <rect x="150" y="420" width="191" height="80" fill="white"/>
+        <rect x="150" y="420" width="191" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 441.552)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="23.396" y="15">FTL lowering value </tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="59.076" y="33.448">mapping</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <rect x="341" y="420" width="330" height="80" fill="white"/>
+        <rect x="341" y="420" width="330" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_37">
+        <text transform="translate(369.82497 454.6687)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="3623768e-19" y="15">DFG node</tspan>
+        </text>
+      </g>
+      <g id="Graphic_36">
+        <text transform="translate(527.8699 454.6687)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="756728e-18" y="15">B3 value</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <path d="M 456.5955 468.375 L 456.5955 461.125 L 494.5955 461.125 L 494.5955 457.5 L 509.5955 464.75 L 494.5955 472 L 494.5955 468.375 Z" fill="#a5a5a5"/>
+        <path d="M 456.5955 468.375 L 456.5955 461.125 L 494.5955 461.125 L 494.5955 457.5 L 509.5955 464.75 L 494.5955 472 L 494.5955 468.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_39">
+        <rect x="671" y="420" width="247.5" height="80" fill="white"/>
+        <rect x="671" y="420" width="247.5" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 450.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="14.006" y="15">Implicitly during FTL lowering</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <rect x="150" y="500" width="191" height="80" fill="white"/>
+        <rect x="150" y="500" width="191" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(155 530.776)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="42.94" y="15">FTL OSR exit</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <rect x="341" y="500" width="330" height="80" fill="white"/>
+        <rect x="341" y="500" width="330" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(376.5955 523.0441)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">bytecode</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="16.752" y="33.448">local</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <text transform="translate(543.34146 502.4634)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="6679102e-19" y="15">register</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <text transform="translate(544.4155 521.57575)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="19895197e-20" y="15">stack slot</tspan>
+        </text>
+      </g>
+      <g id="Graphic_43">
+        <text transform="translate(516.27096 490.2)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="77" font-weight="200" fill="black" x="0" y="72">{</tspan>
+        </text>
+      </g>
+      <g id="Graphic_42">
+        <path d="M 456.5955 544.9946 L 456.5955 537.74457 L 494.5955 537.74457 L 494.5955 534.11957 L 509.5955 541.3696 L 494.5955 548.6196 L 494.5955 544.9946 Z" fill="#a5a5a5"/>
+        <path d="M 456.5955 544.9946 L 456.5955 537.74457 L 494.5955 537.74457 L 494.5955 534.11957 L 509.5955 541.3696 L 494.5955 548.6196 L 494.5955 544.9946 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_41">
+        <text transform="translate(544.4395 540.71217)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="7744916e-19" y="15">immediate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <text transform="translate(544.196 560)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">materialization</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <rect x="671" y="500" width="247.5" height="80" fill="white"/>
+        <rect x="671" y="500" width="247.5" height="80" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(676 521.552)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x=".206" y="15">Lazily computed during FTL OSR </tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="73.262" y="33.448">exit handling</tspan>
+        </text>
+      </g>
+      <g id="Graphic_54">
+        <text transform="translate(543.77775 342.5314)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">argument index</tspan>
+        </text>
+      </g>
+      <g id="Graphic_53">
+        <text transform="translate(544.4155 361.6437)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="19895197e-20" y="15">stack slot</tspan>
+        </text>
+      </g>
+      <g id="Graphic_52">
+        <text transform="translate(516.27096 330.268)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="77" font-weight="200" fill="black" x="0" y="72">{</tspan>
+        </text>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(544.4395 380.78013)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="7744916e-19" y="15">immediate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_50">
+        <text transform="translate(544.196 400.06797)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">materialization</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle
new file mode 100644 (file)
index 0000000..4d71f1f
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/ideal-jsc-optimization-workflow.svg
new file mode 100644 (file)
index 0000000..9bbfc4a
--- /dev/null
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="139 205 589.818 146.84808" width="589.818" height="146.84808">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1250" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="9" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black">
+      <g>
+        <path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 22:45:17 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="139" y="205" width="589.818" height="146.84808"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_45">
+        <rect x="146.182" y="276" width="47.818" height="38.443" fill="white"/>
+        <rect x="146.182" y="276" width="47.818" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(151.182 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.3360004" y="12">LLInt</tspan>
+        </text>
+      </g>
+      <g id="Line_52">
+        <path d="M 139.5 325.5 L 647.4414 325.5 L 718.418 325.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(686.818 331.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-style="italic" font-weight="300" fill="black" x="0" y="12">time</tspan>
+        </text>
+      </g>
+      <g id="Graphic_53">
+        <rect x="198" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="198" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(212.876 282.2255) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">trigger</tspan>
+        </text>
+      </g>
+      <g id="Graphic_54">
+        <rect x="220.5" y="276" width="47.818" height="38.443" fill="white"/>
+        <rect x="220.5" y="276" width="47.818" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(225.5 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.3360004" y="12">LLInt</tspan>
+        </text>
+      </g>
+      <g id="Graphic_55">
+        <rect x="226" y="230.5" width="39" height="38.443" fill="white"/>
+        <rect x="226" y="230.5" width="39" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(228.0805 238.4695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x=".7515" y="9">baseline</tspan>
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="20.252">compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_56">
+        <rect x="272.318" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="272.318" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(287.194 285.803) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">OSR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_57">
+        <rect x="294.818" y="276" width="61.182" height="38.443" fill="white"/>
+        <rect x="294.818" y="276" width="61.182" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(299.818 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x=".9169996" y="12">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_58">
+        <rect x="360" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="360" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(374.876 282.2255) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">trigger</tspan>
+        </text>
+      </g>
+      <g id="Graphic_59">
+        <rect x="382.5" y="276" width="52" height="38.443" fill="white"/>
+        <rect x="382.5" y="276" width="52" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(383.826 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="8846257e-19" y="12">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_60">
+        <rect x="387.5" y="230.5" width="44.5" height="38.443" fill="white"/>
+        <rect x="387.5" y="230.5" width="44.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(392.3305 238.4695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="8.253" y="9">DFG</tspan>
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="20.252">compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_61">
+        <rect x="438.5" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="438.5" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(453.376 285.803) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">OSR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_62">
+        <rect x="461" y="276" width="61.182" height="38.443" fill="white"/>
+        <rect x="461" y="276" width="61.182" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(466 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="12.3505" y="12">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_63">
+        <rect x="526.182" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="526.182" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(541.058 282.2255) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">trigger</tspan>
+        </text>
+      </g>
+      <g id="Graphic_64">
+        <rect x="548.682" y="276" width="61.182" height="38.443" fill="white"/>
+        <rect x="548.682" y="276" width="61.182" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(553.682 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="12.3505" y="12">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_65">
+        <rect x="552.5" y="230.5" width="55" height="38.443" fill="white"/>
+        <rect x="552.5" y="230.5" width="55" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(562.5805 238.4695)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="9.7515" y="9">FTL</tspan>
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="20.252">compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_66">
+        <rect x="613.864" y="276" width="18.5" height="38.443" fill="white"/>
+        <rect x="613.864" y="276" width="18.5" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(628.74 285.803) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="9" font-weight="400" fill="black" x="0" y="9">OSR</tspan>
+        </text>
+      </g>
+      <g id="Graphic_67">
+        <rect x="636.364" y="276" width="76.636" height="38.443" fill="white"/>
+        <rect x="636.364" y="276" width="76.636" height="38.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(641.364 287.5395)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="22.242" y="12">FTL</tspan>
+        </text>
+      </g>
+      <g id="Line_68">
+        <line x1="216.5" y1="276" x2="220.62158" y2="272.93832" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_69">
+        <line x1="265" y1="268.943" x2="267.49516" y2="271.34917" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_70">
+        <line x1="378.5" y1="276" x2="382.22756" y2="273.07718" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_72">
+        <line x1="432" y1="268.943" x2="433.96086" y2="271.0719" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_73">
+        <line x1="544.682" y1="276" x2="547.5265" y2="273.43237" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_74">
+        <line x1="607.5" y1="268.943" x2="609.377" y2="271.0244" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_75">
+        <text transform="translate(223.687 210)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="0" y="12">0.12 ms</tspan>
+        </text>
+      </g>
+      <g id="Graphic_76">
+        <text transform="translate(385.503 210)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="0" y="12">0.48 ms</tspan>
+        </text>
+      </g>
+      <g id="Graphic_77">
+        <text transform="translate(556.276 210)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="0" y="12">2.86 ms</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle
new file mode 100644 (file)
index 0000000..7c88fb7
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/inline-caches-per-tier-dynamic.svg
new file mode 100644 (file)
index 0000000..66c117b
--- /dev/null
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="160.1138 87.71104 624.2782 547.83214" width="624.2782" height="547.83214">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="8" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="11" panose-1="2 0 2 6 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="1363.6364" x-height="520" cap-height="722" ascent="930.9998" descent="-212.99744" font-style="italic" font-weight="200">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-UltraLightItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1153.8462" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-02 16:18:58 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="160.1138" y="87.71104" width="624.2782" height="547.83214"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_21">
+        <rect x="173" y="112.5" width="113.6138" height="183.5" fill="white"/>
+        <rect x="173" y="112.5" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(178 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="28.328904" y="13">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="496.5" y="112.5" width="113.6138" height="183.5" fill="white"/>
+        <rect x="496.5" y="112.5" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(501.5 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="39.047404" y="13">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="334.75" y="395.289" width="113.6138" height="183.5" fill="white"/>
+        <rect x="334.75" y="395.289" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(339.75 400.289)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="41.211904" y="13">FTL</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <rect x="181" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="181" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(186 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">jmp Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <rect x="334.75" y="112.5" width="113.6138" height="183.5" fill="white"/>
+        <rect x="334.75" y="112.5" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(339.75 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="28.328904" y="13">Baseline</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="342.75" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="342.75" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(347.75 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">cmp S1, (%rax)</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">jnz Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">mov 10(%rax), %rax</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <rect x="658.25" y="112.5" width="113.6138" height="183.5" fill="white"/>
+        <rect x="658.25" y="112.5" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(663.25 117.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="39.047404" y="13">DFG</tspan>
+        </text>
+      </g>
+      <g id="Graphic_36">
+        <rect x="496.5" y="395.28896" width="113.6138" height="183.5" fill="white"/>
+        <rect x="496.5" y="395.28896" width="113.6138" height="183.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(501.5 400.28896)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="41.211904" y="13">FTL</tspan>
+        </text>
+      </g>
+      <g id="Line_38">
+        <line x1="471.9319" y1="88.21104" x2="471.9319" y2="320.28896" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_39">
+        <line x1="310.1819" y1="88.21104" x2="310.1819" y2="320.28896" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_40">
+        <line x1="633.6819" y1="88.21104" x2="633.6819" y2="320.28896" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Line_41">
+        <line x1="471.9319" y1="371" x2="471.9319" y2="603.0779" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.0,4.0" stroke-width="1"/>
+      </g>
+      <g id="Graphic_43">
+        <text transform="translate(183 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_45">
+        <text transform="translate(344.09946 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <rect x="503.1989" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="503.1989" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(508.1989 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">jmp Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <rect x="664.9489" y="179.5" width="99.5" height="62" fill="white"/>
+        <rect x="664.9489" y="179.5" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(669.9489 184.5)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">cmp S1, (%rax)</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">jnz Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">mov 10(%rax), %rax</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <text transform="translate(505.1989 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(666.2984 165)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_53">
+        <rect x="341.4489" y="462.289" width="99.5" height="62" fill="white"/>
+        <rect x="341.4489" y="462.289" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(346.4489 467.289)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">jmp Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_52">
+        <rect x="503.1989" y="462.289" width="99.5" height="62" fill="white"/>
+        <rect x="503.1989" y="462.289" width="99.5" height="62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(508.1989 467.289)" fill="black">
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="8">cmp S1, (%rax)</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="18.667969">jnz Lslow</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="29.335938">mov 10(%rax), %rax</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="40.003906">nop</tspan>
+          <tspan font-family="Monaco" font-size="8" font-weight="400" fill="black" x="0" y="50.671875">nop</tspan>
+        </text>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(344.09946 447.789)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_50">
+        <text transform="translate(505.1989 447.789)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="11" font-style="italic" font-weight="200" fill="black" x="0" y="10">inline cache</tspan>
+        </text>
+      </g>
+      <g id="Graphic_54">
+        <text transform="translate(165.1138 315)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.2301" y="13">Step 1: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">Baseline code </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="12.5761" y="29.37709">with uninitialized IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_55">
+        <text transform="translate(326.8638 315)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.2301" y="13">Step 2: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">Baseline code </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="11.4646" y="29.37709">after IC repartching.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_56">
+        <text transform="translate(488.2558 315)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="1.7081" y="13">Step 3: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">DFG code with </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="25.1016" y="29.37709">uninitialized IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_57">
+        <text transform="translate(650.0058 315)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x=".8371" y="13">Step 4: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">DFG code after </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="26.8956" y="29.37709">IC repatching.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_58">
+        <text transform="translate(326.8638 597.789)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="4.3536" y="13">Step 5: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">FTL code with </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="25.1016" y="29.37709">uninitialized IC.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_59">
+        <text transform="translate(488.6138 597.789)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="300" fill="black" x="3.4826" y="13">Step 6: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" y="13">FTL code after </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="26.8956" y="29.37709">IC repatching.</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle
new file mode 100644 (file)
index 0000000..9020e5a
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-diamond-speculation.svg
new file mode 100644 (file)
index 0000000..d3fc320
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="87.5 115.5 514.532 377" width="514.532" height="377">
+  <defs>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-750" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="#a5a5a5">
+      <g>
+        <path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-31 04:45:33 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="87.5" y="115.5" width="514.532" height="377"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="176" y="116" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="116" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 125.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="3.439453" y="12">Branch(isInt32(x))</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="88" y="184" width="146.5" height="36" fill="white"/>
+        <rect x="88" y="184" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(93 194.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="12.1355" y="12">… fast int32 add …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="273" y="184" width="146.5" height="36" fill="white"/>
+        <rect x="273" y="184" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(278 193.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="14.241211" y="12">Call(slow path)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="176" y="252" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="252" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 262.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="34.06" y="12">… things …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <rect x="176" y="320" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="320" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 329.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="3.439453" y="12">Branch(isInt32(x))</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="88" y="388" width="146.5" height="36" fill="white"/>
+        <rect x="88" y="388" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(93 398.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="12.1355" y="12">… fast int32 add …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="273" y="388" width="146.5" height="36" fill="white"/>
+        <rect x="273" y="388" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(278 397.999)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="14.241211" y="12">Call(slow path)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="176" y="456" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="456" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 466.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="17.446" y="12">… more things …</tspan>
+        </text>
+      </g>
+      <g id="Line_12">
+        <line x1="225.95588" y1="152" x2="192.37784" y2="177.94667" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_13">
+        <line x1="274.92647" y1="152" x2="312.46706" y2="178.31712" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_14">
+        <line x1="184.54412" y1="220" x2="218.12216" y2="245.94667" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_15">
+        <line x1="320.57353" y1="220" x2="283.03294" y2="246.31712" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_16">
+        <line x1="249.25" y1="288" x2="249.25" y2="310.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_17">
+        <line x1="225.95588" y1="356" x2="192.37784" y2="381.94667" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_18">
+        <line x1="274.92647" y1="356" x2="312.46706" y2="382.3171" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_19">
+        <line x1="184.54412" y1="424" x2="218.12216" y2="449.94667" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_20">
+        <line x1="320.57353" y1="424" x2="283.03294" y2="450.3171" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_21">
+        <text transform="translate(493 234.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="300" fill="black" x="0" y="15">Not redundant!</tspan>
+        </text>
+      </g>
+      <g id="Line_22">
+        <path d="M 541.80814 229.5 C 535.2751 209.6522 515.6534 173.65505 457.28125 152 C 418.86564 137.74848 371.94844 132.78117 332.39955 131.58064" marker-end="url(#StickArrow_Marker)" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_23">
+        <path d="M 541.3074 257.948 C 534.5467 273.30442 515.4635 297.86656 461.60156 315.03516 C 422.41127 327.52714 373.428 333.3575 332.3852 336.025" marker-end="url(#StickArrow_Marker)" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle
new file mode 100644 (file)
index 0000000..fd2cb01
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/int32-add-osr-speculation.svg
new file mode 100644 (file)
index 0000000..89d0572
--- /dev/null
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="175.5 115.5 347.5 377" width="347.5" height="377">
+  <defs>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="#a5a5a5">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-31 04:47:15 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="175.5" y="115.5" width="347.5" height="377"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="176" y="116" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="116" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 125.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="3.439453" y="12">Branch(isInt32(x))</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+        <rect x="176" y="184" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="184" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 194.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="12.1355" y="12">… fast int32 add …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="376" y="116" width="146.5" height="36" fill="white"/>
+        <rect x="376" y="116" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(381 125.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="39.445312" y="12">OSR exit</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="176" y="252" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="252" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 262.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="34.06" y="12">… things …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_10">
+        <rect x="176" y="320" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="320" width="146.5" height="36" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 329.99902)" fill="#666">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="3.439453" y="12">Branch(isInt32(x))</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="176" y="388" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="388" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 398.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="12.1355" y="12">… fast int32 add …</tspan>
+        </text>
+      </g>
+      <g id="Graphic_8">
+        <rect x="376" y="320" width="146.5" height="36" fill="white"/>
+        <rect x="376" y="320" width="146.5" height="36" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(381 329.99902)" fill="#666">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="#666" x="39.445312" y="12">OSR exit</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="176" y="456" width="146.5" height="36" fill="white"/>
+        <rect x="176" y="456" width="146.5" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 466.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="17.446" y="12">… more things …</tspan>
+        </text>
+      </g>
+      <g id="Line_12">
+        <line x1="249.25" y1="152" x2="249.25" y2="174.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_13">
+        <line x1="322.5" y1="134" x2="366.1" y2="134" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_14">
+        <line x1="249.25" y1="220" x2="249.25" y2="242.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_16">
+        <line x1="249.25" y1="288" x2="249.25" y2="310.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_17">
+        <line x1="249.25" y1="356" x2="249.25" y2="378.1" marker-end="url(#FilledArrow_Marker_2)" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_18">
+        <line x1="322.5" y1="338" x2="366.1" y2="338" marker-end="url(#FilledArrow_Marker_2)" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_19">
+        <line x1="249.25" y1="424" x2="249.25" y2="446.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.graffle
new file mode 100644 (file)
index 0000000..4b62860
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tier-architecture.svg
new file mode 100644 (file)
index 0000000..8772a69
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="145 59 571.5 338.68" width="571.5" height="338.68">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 23:32:59 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="145" y="59" width="571.5" height="338.68"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_45">
+        <rect x="145.5" y="59.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="145.5" y="59.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(150.5 64.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="44.478" y="12">Parser</tspan>
+        </text>
+      </g>
+      <g id="Graphic_78">
+        <rect x="145.5" y="90" width="136.5" height="25.363998" fill="white"/>
+        <rect x="145.5" y="90" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(150.5 95)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="24.848" y="12">Bytecompiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_79">
+        <rect x="145.5" y="120.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="145.5" y="120.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(150.5 125.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="11.497" y="12">Generatorification</tspan>
+        </text>
+      </g>
+      <g id="Graphic_80">
+        <rect x="145.5" y="151" width="136.5" height="25.363998" fill="white"/>
+        <rect x="145.5" y="151" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(150.5 156)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="15.9365" y="12">Bytecode Linker</tspan>
+        </text>
+      </g>
+      <g id="Graphic_81">
+        <rect x="145.5" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="145.5" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(150.5 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="48.677" y="12">LLInt</tspan>
+        </text>
+      </g>
+      <g id="Graphic_82">
+        <rect x="290" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="290" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(295 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="27.981" y="12">Baseline JIT</tspan>
+        </text>
+      </g>
+      <g id="Graphic_83">
+        <rect x="434.5" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(439.3165 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Bytecode Parser</tspan>
+        </text>
+      </g>
+      <g id="Graphic_85">
+        <rect x="434.5" y="212" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="212" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(459.655 217)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_86">
+        <rect x="434.5" y="242.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="434.5" y="242.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(461.9365 247.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="2060574e-19" y="12">DFG Backend</tspan>
+        </text>
+      </g>
+      <g id="Graphic_87">
+        <text transform="translate(461.345 161.136)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="6465939e-19" y="12">DFG Compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_89">
+        <rect x="579" y="181.5" width="136.5" height="25.363998" fill="white"/>
+        <rect x="579" y="181.5" width="136.5" height="25.363998" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(583.8165 186.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">DFG Bytecode Parser</tspan>
+        </text>
+      </g>
+      <g id="Graphic_88">
+        <text transform="translate(608.0095 161.136)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="0" y="12">FTL Compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_90">
+        <rect x="579" y="212" width="137" height="34.5" fill="white"/>
+        <rect x="579" y="212" width="137" height="34.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(604.405 213.886)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="15.405" y="12">Extended</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="27.364">DFG Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_91">
+        <rect x="579" y="251.636" width="137" height="25" fill="white"/>
+        <rect x="579" y="251.636" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(597.0665 256.454)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Lower DFG to B3</tspan>
+        </text>
+      </g>
+      <g id="Graphic_92">
+        <rect x="578.75" y="281.772" width="137" height="25" fill="white"/>
+        <rect x="578.75" y="281.772" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(609.329 286.59)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="27000624e-20" y="12">B3 Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_93">
+        <rect x="579" y="311.908" width="137" height="25" fill="white"/>
+        <rect x="579" y="311.908" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(590.924 316.726)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Instruction Selector</tspan>
+        </text>
+      </g>
+      <g id="Graphic_94">
+        <rect x="579" y="342.044" width="137" height="25" fill="white"/>
+        <rect x="579" y="342.044" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(609.826 346.862)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="881073e-18" y="12">Air Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_95">
+        <rect x="579" y="372.18" width="137" height="25" fill="white"/>
+        <rect x="579" y="372.18" width="137" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(612.1075 376.998)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="0" y="12">Air Backend</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.graffle
new file mode 100644 (file)
index 0000000..cbe6e83
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/jsc-tiers.svg
new file mode 100644 (file)
index 0000000..a48aa08
--- /dev/null
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="154 231 511.58 160.84808" width="511.58" height="160.84808">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Medium"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1250" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 02:50:18 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="154" y="231" width="511.58" height="160.84808"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_20">
+        <rect x="176" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="176" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(181 280.06145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="27.5855" y="13">LLInt</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <rect x="299.5" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="299.5" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(304.5 280.06145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="6.1355" y="13">Baseline JIT</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="423" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="423" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(428 280.06145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="18.31" y="13">DFG JIT</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="546.5" y="231.5" width="95.5" height="113.5" fill="white"/>
+        <rect x="546.5" y="231.5" width="95.5" height="113.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(551.5 280.06145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="20.351" y="13">FTL JIT</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <path d="M 262.5 264.12705 L 262.5 244.87295 L 536.0664 244.87295 L 536.0664 236.5 L 554.5 254.5 L 536.0664 272.5 L 536.0664 264.12705 Z" fill="white"/>
+        <path d="M 262.5 264.12705 L 262.5 244.87295 L 536.0664 244.87295 L 536.0664 236.5 L 554.5 254.5 L 536.0664 272.5 L 536.0664 264.12705 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(267.5 246.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="116.3065" y="13">Profiling</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <path d="M 554.5 312.87295 L 554.5 332.12705 L 291.9336 332.12705 L 291.9336 340.5 L 273.5 322.5 L 291.9336 304.5 L 291.9336 312.87295 Z" fill="white"/>
+        <path d="M 554.5 312.87295 L 554.5 332.12705 L 291.9336 332.12705 L 291.9336 340.5 L 273.5 322.5 L 291.9336 304.5 L 291.9336 312.87295 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(278.5 314.31145)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="500" fill="black" x="121.772" y="13">OSR</tspan>
+        </text>
+      </g>
+      <g id="Line_28">
+        <line x1="164.4293" y1="361" x2="652.571" y2="361" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_29">
+        <text transform="translate(159 371.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-style="italic" font-weight="300" fill="black" x="7034373e-19" y="12">lowest latency</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <text transform="translate(567.496 371.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-style="italic" font-weight="300" fill="black" x="0" y="12">highest throughput</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/object-model.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/object-model.graffle
new file mode 100644 (file)
index 0000000..37f93f7
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/object-model.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/object-model.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/object-model.svg
new file mode 100644 (file)
index 0000000..581a08e
--- /dev/null
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="50 20 1016 570" width="1016" height="570">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-750" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledBall_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-7 -4 8 8" markerWidth="8" markerHeight="8" color="black">
+      <g>
+        <circle cx="-2.9999986" cy="0" r="2.99999734868332" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="DimensionArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -6 10 12" markerWidth="10" markerHeight="12" color="black">
+      <g>
+        <path d="M 0 0 L 8 0 M 8 5 L 8 -5 M 0 2 L 7 0 L 0 -2" fill="none" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="DimensionArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -6 10 12" markerWidth="10" markerHeight="12" color="black">
+      <g>
+        <path d="M 0 0 L -8 0 M -8 -5 L -8 5 M 0 -2 L -7 0 L 0 2" fill="none" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2017-07-12 03:33:15 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="50" y="20" width="1016" height="570"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_3">
+        <rect x="480" y="330" width="20" height="70" fill="white"/>
+        <rect x="480" y="330" width="20" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(498.196 338.554) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">indexing</tspan>
+        </text>
+      </g>
+      <g id="Graphic_4">
+        <rect x="500" y="330" width="20" height="70" fill="white"/>
+        <rect x="500" y="330" width="20" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(518.196 351.385) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">type</tspan>
+        </text>
+      </g>
+      <g id="Graphic_5">
+        <rect x="520" y="330" width="20" height="70" fill="white"/>
+        <rect x="520" y="330" width="20" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(538.196 350.097) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="2504663e-19" y="13">flags</tspan>
+        </text>
+      </g>
+      <g id="Graphic_6">
+        <rect x="540" y="330" width="20" height="70" fill="white"/>
+        <rect x="540" y="330" width="20" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(558.196 337) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">cell state</tspan>
+        </text>
+      </g>
+      <g id="Graphic_7">
+        <rect x="400" y="330" width="80" height="70" fill="white"/>
+        <rect x="400" y="330" width="80" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(412.252 356.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">structure</tspan>
+        </text>
+      </g>
+      <g id="Graphic_9">
+        <rect x="560" y="330" width="160" height="70" fill="white"/>
+        <rect x="560" y="330" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(590.475 356.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">butterfly pointer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_11">
+        <rect x="557" y="490" width="160" height="70" fill="white"/>
+        <rect x="557" y="490" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(588.637 516.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">array element 0</tspan>
+        </text>
+      </g>
+      <g id="Graphic_12">
+        <rect x="720" y="330" width="160" height="70" fill="white"/>
+        <rect x="720" y="330" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(764.734 356.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">inline slot 0</tspan>
+        </text>
+      </g>
+      <g id="Graphic_13">
+        <rect x="880" y="330" width="160" height="70" fill="white"/>
+        <rect x="880" y="330" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(924.734 356.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">inline slot 1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <rect x="717" y="490" width="160" height="70" fill="white"/>
+        <rect x="717" y="490" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(748.637 516.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">array element 1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_15">
+        <text transform="translate(882 515)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">…</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <text transform="translate(1045 355)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">…</tspan>
+        </text>
+      </g>
+      <g id="Graphic_17">
+        <rect x="477" y="490" width="80" height="70" fill="white"/>
+        <rect x="477" y="490" width="80" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(482 508.608)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="15.428" y="13">vector </tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="15.68" y="29.392">length</tspan>
+        </text>
+      </g>
+      <g id="Graphic_18">
+        <rect x="397" y="490" width="80" height="70" fill="white"/>
+        <rect x="397" y="490" width="80" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(402 508.608)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="15.939" y="13">public </tspan>
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="15.68" y="29.392">length</tspan>
+        </text>
+      </g>
+      <g id="Graphic_19">
+        <rect x="237" y="490" width="160" height="70" fill="white"/>
+        <rect x="237" y="490" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(265.529 516.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">out-of-line slot 0</tspan>
+        </text>
+      </g>
+      <g id="Graphic_20">
+        <rect x="77" y="490" width="160" height="70" fill="white"/>
+        <rect x="77" y="490" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(105.529 516.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="0" y="13">out-of-line slot 1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <text transform="translate(55 515)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">…</tspan>
+        </text>
+      </g>
+      <g id="Line_24">
+        <path d="M 287 260 L 342 260 L 342 295 L 342 330 L 387.1 330" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_25">
+        <text transform="translate(161.875 245)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="5.0865" y="15">Object pointers </tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="2.5665" y="33.448">point to the </tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="400" fill="black" y="33.448">cell</tspan>
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" y="33.448">.</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="617" y="50" width="160" height="70" fill="white"/>
+        <rect x="617" y="50" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(639.558 76.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="9094947e-19" y="13">structure pointer 0</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="617" y="120" width="160" height="70" fill="white"/>
+        <rect x="617" y="120" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(639.558 146.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="9094947e-19" y="13">structure pointer 1</tspan>
+        </text>
+      </g>
+      <g id="Graphic_28">
+        <text transform="translate(712 265) rotate(90)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" fill="black" x="0" y="15">…</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <rect x="617" y="190" width="160" height="70" fill="white"/>
+        <rect x="617" y="190" width="160" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(639.558 216.804)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-weight="400" fill="black" x="9094947e-19" y="13">structure pointer 2</tspan>
+        </text>
+      </g>
+      <g id="Line_31">
+        <path d="M 437 343.5 L 437 140 L 587.1 140" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledBall_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_33">
+        <path d="M 637 386.5 L 637 450 L 557 450 L 557 480.1" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledBall_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(622 25)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="400" fill="black" x="21.208" y="15">Structure Table</tspan>
+        </text>
+      </g>
+      <g id="Line_35">
+        <line x1="728" y1="410" x2="872" y2="410" marker-end="url(#DimensionArrow_Marker)" marker-start="url(#DimensionArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_36">
+        <text transform="translate(725 415)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="400" fill="black" x="50.992" y="15">64 bits</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <text transform="translate(85 565)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="400" fill="black" x="165.32" y="15">butterfly: dynamically reconfigured portion of a JavaScript object</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <text transform="translate(405 305)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-style="italic" font-weight="400" fill="black" x="157.504" y="15">cell: fixed-size portion of a JavaScript object</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle
new file mode 100644 (file)
index 0000000..4125c07
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-c-vs-js.svg
new file mode 100644 (file)
index 0000000..9eb5220
--- /dev/null
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="145.682 60.5 589.818 317.3481" width="589.818" height="317.3481">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1250" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 17:28:59 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="145.682" y="60.5" width="589.818" height="317.3481"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_20">
+        <rect x="146.182" y="82.5" width="74.318" height="70" fill="white"/>
+        <rect x="146.182" y="82.5" width="74.318" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(151.182 109.818)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="11.0925" y="12">C code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <path d="M 225.5 126.66797 L 225.5 108.33203 L 229.16406 108.33203 L 229.16406 99.5 L 237.5 117.5 L 229.16406 135.5 L 229.16406 126.66797 Z" fill="white"/>
+        <path d="M 225.5 126.66797 L 225.5 108.33203 L 229.16406 108.33203 L 229.16406 99.5 L 237.5 117.5 L 229.16406 135.5 L 229.16406 126.66797 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_32">
+        <rect x="242.5" y="61" width="180" height="91.5" fill="white"/>
+        <rect x="242.5" y="61" width="180" height="91.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(247.5 66)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="58.6425" y="12">Compiler</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <rect x="248" y="86" width="74.318" height="61.5" fill="white"/>
+        <rect x="248" y="86" width="74.318" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(253 101.386)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="18.5545" y="12">Type </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="7.8425" y="27.364">Checker</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <rect x="342.5" y="86" width="74.318" height="61.5" fill="white"/>
+        <rect x="342.5" y="86" width="74.318" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(347.5 109.068)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.1115004" y="12">Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <path d="M 326.5 126.66797 L 326.5 108.33203 L 330.16406 108.33203 L 330.16406 99.5 L 338.5 117.5 L 330.16406 135.5 L 330.16406 126.66797 Z" fill="white"/>
+        <path d="M 326.5 126.66797 L 326.5 108.33203 L 330.16406 108.33203 L 330.16406 99.5 L 338.5 117.5 L 330.16406 135.5 L 330.16406 126.66797 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_36">
+        <rect x="444.5" y="82.5" width="290.5" height="70" fill="white"/>
+        <rect x="444.5" y="82.5" width="290.5" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(449.5 109.818)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="85.117" y="12">Program Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <path d="M 427.5 126.66797 L 427.5 108.33203 L 431.16406 108.33203 L 431.16406 99.5 L 439.5 117.5 L 431.16406 135.5 L 431.16406 126.66797 Z" fill="white"/>
+        <path d="M 427.5 126.66797 L 427.5 108.33203 L 431.16406 108.33203 L 431.16406 99.5 L 439.5 117.5 L 431.16406 135.5 L 431.16406 126.66797 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_45">
+        <rect x="146.182" y="244.318" width="74.318" height="70" fill="white"/>
+        <rect x="146.182" y="244.318" width="74.318" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(151.182 271.636)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="8.2" y="12">JS code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <path d="M 225.5 288.48597 L 225.5 270.15003 L 229.16406 270.15003 L 229.16406 261.318 L 237.5 279.318 L 229.16406 297.318 L 229.16406 288.48597 Z" fill="white"/>
+        <path d="M 225.5 288.48597 L 225.5 270.15003 L 229.16406 270.15003 L 229.16406 261.318 L 237.5 279.318 L 229.16406 297.318 L 229.16406 288.48597 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_39">
+        <rect x="242.5" y="244.318" width="492.5" height="70" fill="white"/>
+        <rect x="242.5" y="244.318" width="492.5" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(247.5 319.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="186.117" y="12">Program Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <rect x="248" y="248.818" width="161" height="61.25" fill="white"/>
+        <rect x="248" y="248.818" width="161" height="61.25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(253 264.079)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="14.946" y="12">Profiled Unoptimized </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="46.9715" y="27.364">Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <rect x="410.5" y="248.818" width="319" height="61.25" fill="white"/>
+        <rect x="410.5" y="248.818" width="319" height="61.25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(415.5 271.761)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="94.674" y="12">Optimized Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <rect x="321.87815" y="178" width="74.318" height="61.5" fill="white"/>
+        <rect x="321.87815" y="178" width="74.318" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(326.87815 201.068)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.1115004" y="12">Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <path d="M 313.584 254.4397 L 304.416 238.5603 L 307.5892 236.72827 L 303.17317 229.0795 L 319.3923 240.5 L 321.17317 260.25643 L 316.75716 252.60766 Z" fill="white"/>
+        <path d="M 313.584 254.4397 L 304.416 238.5603 L 307.5892 236.72827 L 303.17317 229.0795 L 319.3923 240.5 L 321.17317 260.25643 L 316.75716 252.60766 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_50">
+        <path d="M 394.11217 248.4397 L 403.28014 232.5603 L 406.4533 234.39234 L 410.8693 226.74357 L 409.08846 246.5 L 392.86932 257.9205 L 397.28534 250.27173 Z" fill="white"/>
+        <path d="M 394.11217 248.4397 L 403.28014 232.5603 L 406.4533 234.39234 L 410.8693 226.74357 L 409.08846 246.5 L 392.86932 257.9205 L 397.28534 250.27173 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_52">
+        <path d="M 146.182 351.5 L 654.1234 351.5 L 725.1 351.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(693.5 357.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-style="italic" font-weight="300" fill="black" x="0" y="12">time</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.graffle
new file mode 100644 (file)
index 0000000..da45756
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/optimization-workflow-js.svg
new file mode 100644 (file)
index 0000000..5a0d8be
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="145.682 177.5 589.818 200.34808" width="589.818" height="200.34808">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="12" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1250" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-26 17:39:43 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="145.682" y="177.5" width="589.818" height="200.34808"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_45">
+        <rect x="146.182" y="244.318" width="74.318" height="70" fill="white"/>
+        <rect x="146.182" y="244.318" width="74.318" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(151.182 271.636)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="8.2" y="12">JS code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_44">
+        <path d="M 225.5 288.48597 L 225.5 270.15003 L 229.16406 270.15003 L 229.16406 261.318 L 237.5 279.318 L 229.16406 297.318 L 229.16406 288.48597 Z" fill="white"/>
+        <path d="M 225.5 288.48597 L 225.5 270.15003 L 229.16406 270.15003 L 229.16406 261.318 L 237.5 279.318 L 229.16406 297.318 L 229.16406 288.48597 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_39">
+        <rect x="242.5" y="244.318" width="492.5" height="70" fill="white"/>
+        <rect x="242.5" y="244.318" width="492.5" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_46">
+        <text transform="translate(247.5 319.318)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="186.117" y="12">Program Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_47">
+        <rect x="248" y="248.818" width="161" height="61.25" fill="white"/>
+        <rect x="248" y="248.818" width="161" height="61.25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(253 264.079)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="14.946" y="12">Profiled Unoptimized </tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="46.9715" y="27.364">Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_48">
+        <rect x="410.5" y="248.818" width="319" height="61.25" fill="white"/>
+        <rect x="410.5" y="248.818" width="319" height="61.25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(415.5 271.761)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="94.674" y="12">Optimized Execution</tspan>
+        </text>
+      </g>
+      <g id="Graphic_41">
+        <rect x="321.87815" y="178" width="74.318" height="61.5" fill="white"/>
+        <rect x="321.87815" y="178" width="74.318" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(326.87815 201.068)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-weight="400" fill="black" x="4.1115004" y="12">Optimizer</tspan>
+        </text>
+      </g>
+      <g id="Graphic_49">
+        <path d="M 313.584 254.4397 L 304.416 238.5603 L 307.5892 236.72827 L 303.17317 229.0795 L 319.3923 240.5 L 321.17317 260.25643 L 316.75716 252.60766 Z" fill="white"/>
+        <path d="M 313.584 254.4397 L 304.416 238.5603 L 307.5892 236.72827 L 303.17317 229.0795 L 319.3923 240.5 L 321.17317 260.25643 L 316.75716 252.60766 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_50">
+        <path d="M 394.11217 248.4397 L 403.28014 232.5603 L 406.4533 234.39234 L 410.8693 226.74357 L 409.08846 246.5 L 392.86932 257.9205 L 397.28534 250.27173 Z" fill="white"/>
+        <path d="M 394.11217 248.4397 L 403.28014 232.5603 L 406.4533 234.39234 L 410.8693 226.74357 L 409.08846 246.5 L 392.86932 257.9205 L 397.28534 250.27173 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_52">
+        <path d="M 146.182 351.5 L 654.1234 351.5 L 725.1 351.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_51">
+        <text transform="translate(693.5 357.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="12" font-style="italic" font-weight="300" fill="black" x="0" y="12">time</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle
new file mode 100644 (file)
index 0000000..bcd29fd
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-exit-bytecode-example.svg
new file mode 100644 (file)
index 0000000..a3c2113
--- /dev/null
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="186.5 115.5 504 224" width="504" height="224">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="7" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="10" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black">
+      <g>
+        <path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="14" panose-1="2 0 5 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-857.1429" x-height="517" cap-height="714" ascent="957.0007" descent="-212.99744" font-style="italic" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Italic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-03-23 00:20:54 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="186.5" y="115.5" width="504" height="224"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_3">
+        <rect x="187" y="116" width="208.5" height="223" fill="white"/>
+        <rect x="187" y="116" width="208.5" height="223" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(192 121)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="21.12" y="12">Unoptimized Profiled Code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_2">
+        <rect x="196.75" y="149" width="189" height="36" fill="white"/>
+        <rect x="196.75" y="149" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(201.75 158.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">[   0] enter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_21">
+        <rect x="196.75" y="185" width="189" height="36" fill="white"/>
+        <rect x="196.75" y="185" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(201.75 194.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">[   1] add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_22">
+        <rect x="196.75" y="221" width="189" height="36" fill="white"/>
+        <rect x="196.75" y="221" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(201.75 230.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">[   5] mov</tspan>
+        </text>
+      </g>
+      <g id="Graphic_23">
+        <rect x="196.75" y="257" width="189" height="36" fill="white"/>
+        <rect x="196.75" y="257" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(201.75 266.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">[   8] get_by_val</tspan>
+        </text>
+      </g>
+      <g id="Graphic_24">
+        <rect x="196.75" y="293" width="189" height="36" fill="white"/>
+        <rect x="196.75" y="293" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(201.75 302.99902)" fill="black">
+          <tspan font-family="Monaco" font-size="12" font-weight="400" fill="black" x="0" y="12">[  13] call</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <rect x="481.5" y="116" width="208.5" height="223" fill="white"/>
+        <rect x="481.5" y="116" width="208.5" height="223" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(486.5 121)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="400" fill="black" x="52.1835" y="12">Optimized Code</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <rect x="491.25" y="149" width="189" height="36" fill="white"/>
+        <rect x="491.25" y="149" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(496.25 170.41553)" fill="#666">
+          <tspan font-family="Monaco" font-size="7" font-weight="400" fill="#666" x="0" y="7">[   0] enter</tspan>
+        </text>
+      </g>
+      <g id="Graphic_28">
+        <rect x="491.25" y="185" width="189" height="36" fill="white"/>
+        <rect x="491.25" y="185" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(496.25 206.41553)" fill="#666">
+          <tspan font-family="Monaco" font-size="7" font-weight="400" fill="#666" x="0" y="7">[   1] add</tspan>
+        </text>
+      </g>
+      <g id="Graphic_27">
+        <rect x="491.25" y="221" width="189" height="36" fill="white"/>
+        <rect x="491.25" y="221" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(496.25 242.41553)" fill="#666">
+          <tspan font-family="Monaco" font-size="7" font-weight="400" fill="#666" x="0" y="7">[   5] mov</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <rect x="491.25" y="257" width="189" height="36" fill="white"/>
+        <rect x="491.25" y="257" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(496.25 278.41553)" fill="#666">
+          <tspan font-family="Monaco" font-size="7" font-weight="400" fill="#666" x="0" y="7">[   8] get_by_val</tspan>
+        </text>
+      </g>
+      <g id="Graphic_25">
+        <rect x="491.25" y="293" width="189" height="36" fill="white"/>
+        <rect x="491.25" y="293" width="189" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(496.25 314.41553)" fill="#666">
+          <tspan font-family="Monaco" font-size="7" font-weight="400" fill="#666" x="0" y="7">[  13] call</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <text transform="translate(558.7456 148)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <text transform="translate(558.7456 159.08252)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(558.7456 184)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <text transform="translate(558.7456 195.08252)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_36">
+        <text transform="translate(558.7456 220)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_38">
+        <text transform="translate(558.7456 256.45874)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_37">
+        <text transform="translate(558.7456 267.54126)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <text transform="translate(558.7456 292)" fill="black">
+          <tspan font-family="Monaco" font-size="10" font-weight="400" fill="black" x="0" y="10">speculate</tspan>
+        </text>
+      </g>
+      <g id="Line_41">
+        <line x1="553.7456" y1="153.97055" x2="391.6474" y2="149.17449" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_42">
+        <line x1="553.7456" y1="163.27963" x2="391.6288" y2="149.4997" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_43">
+        <line x1="553.7456" y1="199.27963" x2="391.6288" y2="185.4997" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_44">
+        <line x1="553.7456" y1="189.97055" x2="391.6474" y2="185.1745" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_45">
+        <line x1="553.7456" y1="225.97055" x2="391.6474" y2="221.1745" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_46">
+        <line x1="553.7456" y1="262.3559" x2="391.647" y2="257.188" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_47">
+        <line x1="553.7456" y1="271.66496" x2="391.62765" y2="257.51308" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_48">
+        <line x1="553.7456" y1="297.97055" x2="391.6474" y2="293.1745" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_49">
+        <text transform="translate(411.025 133)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="14" font-style="italic" font-weight="400" fill="black" x="3623768e-19" y="13">OSR exit</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle
new file mode 100644 (file)
index 0000000..40f14c7
Binary files /dev/null and b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.graffle differ
diff --git a/Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.svg b/Websites/webkit.org/blog-files/speculation-in-jsc/osr-stack-register-shuffle.svg
new file mode 100644 (file)
index 0000000..3e2a26a
--- /dev/null
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="166 48 483 394" width="483" height="394">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="15" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-923.0769" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Medium"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-style="italic" font-weight="500">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-MediumItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="937.5" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 4 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="523" cap-height="721" ascent="966.9952" descent="-212.99744" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Light"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 11 4 3 2 2 2 2 2 4" units-per-em="1000" underline-position="-75" underline-thickness="50" slope="1153.8462" x-height="514" cap-height="714" ascent="966.9952" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-ThinItalic"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Lucida Grande" font-size="13" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="400">
+      <font-face-src>
+        <font-face-name name="LucidaGrande"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="13" panose-1="2 0 8 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="975.0061" descent="-216.99524" font-weight="700">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-Bold"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Monaco" font-size="16" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.68359" slope="0" x-height="545.41016" cap-height="757.8125" ascent="1e3" descent="-250" font-weight="400">
+      <font-face-src>
+        <font-face-name name="Monaco"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="15" panose-1="2 0 4 3 0 0 0 9 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="-800" x-height="523" cap-height="721" ascent="951.004" descent="-212.99744" font-style="italic" font-weight="300">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue-LightItalic"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.14.1 
+    <dc:date>2020-04-05 22:37:47 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" stroke-opacity="1" stroke="none" fill-opacity="1" stroke-dasharray="none" fill="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="166" y="48" width="483" height="394"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <rect x="167.5" y="159" width="169" height="215.5" fill="#ccc"/>
+        <rect x="167.5" y="159" width="169" height="215.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(172.5 164)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="15" font-weight="300" fill="black" x="39.9975" y="15">Profiling Tier</tspan>
+          <tspan font-family="Helvetica Neue" font-size="13" font-style="italic" font-weight="300" fill="black" x="17.36" y="30.435104">Stack Frame at bc#42</tspan>
+        </text>
+      </g>
+      <g id="Graphic_3">
+ &nbs