mirror of
https://github.com/php/presentations.git
synced 2026-03-24 07:32:11 +01:00
117 lines
3.0 KiB
XML
117 lines
3.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<presentation css="10gen-strict.css">
|
|
<topic>PHP</topic>
|
|
<title>It's All About the Goto</title>
|
|
<event>php Central Europe</event>
|
|
<location>Warsaw, Poland</location>
|
|
<date>November 4th, 2017</date>
|
|
<speaker>Derick Rethans</speaker>
|
|
<email>derick@php.net</email>
|
|
<twitter>derickr</twitter>
|
|
<joindin>https://joind.in/22466</joindin>
|
|
|
|
<slide>slides/mongodb/title.xml</slide>
|
|
<slide>slides/mongodb/me.xml</slide>
|
|
|
|
<slide>slides/internals/title-agenda.xml</slide>
|
|
|
|
<slide>slides/internals/title-stages.xml</slide>
|
|
<!-- INTRODUCTION
|
|
Compile stages:
|
|
Parse script
|
|
Create AST
|
|
Convert to opcodes
|
|
Run the code
|
|
Opcache for caching
|
|
-->
|
|
<slide>slides/internals/stages.xml</slide>
|
|
|
|
<!-- STAGES
|
|
Parse
|
|
- Show parser rules
|
|
- Show "compiler" rules
|
|
-->
|
|
|
|
<slide>slides/internals/title-parsing.xml</slide>
|
|
<slide>slides/internals/parse-state-machine.xml</slide>
|
|
<slide>slides/internals/parse-tokenization.xml</slide>
|
|
<slide>slides/internals/scanner.xml</slide>
|
|
<slide>slides/internals/scanner-rules.xml</slide>
|
|
<slide>slides/internals/ast.xml</slide>
|
|
<slide>slides/internals/ast1.xml</slide>
|
|
<slide>slides/internals/scanner-ast.xml</slide>
|
|
<slide>slides/internals/scanner-ast2.xml</slide>
|
|
<slide>slides/internals/bytecode0.xml</slide>
|
|
<slide>slides/internals/bytecode½.xml</slide>
|
|
<slide>slides/internals/bytecode1.xml</slide>
|
|
|
|
<slide>slides/internals/jumps.xml</slide>
|
|
|
|
<!--
|
|
AST
|
|
- Show AST for various control structures
|
|
|
|
Opcodes
|
|
- Show AST for the same control structures
|
|
-->
|
|
|
|
<slide>slides/internals/jumps-if.xml</slide>
|
|
<slide>slides/internals/jumps-if-else.xml</slide>
|
|
|
|
<slide>slides/internals/rings.xml</slide>
|
|
<slide>slides/internals/jumps-for.xml</slide>
|
|
<slide>slides/internals/jumps-for-rewritten.xml</slide>
|
|
<slide>slides/internals/jumps-while.xml</slide>
|
|
<slide>slides/internals/jumps-do-while.xml</slide>
|
|
<slide>slides/internals/jumps-foreach.xml</slide>
|
|
<slide>slides/internals/jumps-complex.xml</slide>
|
|
<slide>slides/internals/loops.xml</slide>
|
|
<slide>slides/internals/jumps-complex-dot.xml</slide>
|
|
|
|
<!--
|
|
Try/Catch nonsense
|
|
- FASTCALL/FASTRET
|
|
<slide>slides/internals/catch.xml</slide>
|
|
<slide>slides/internals/jumps-try-catch.xml</slide>
|
|
-->
|
|
|
|
<!--
|
|
Dead code analysis
|
|
- Show how Xdebug does it through VLD
|
|
-->
|
|
<slide>slides/internals/deadcode.xml</slide>
|
|
<slide>slides/internals/deadcode-vld.xml</slide>
|
|
|
|
<!--
|
|
Path analysis
|
|
- Branch and Path
|
|
-->
|
|
<slide>slides/internals/branches.xml</slide>
|
|
<slide>slides/xdebug/vld-path-2-paths.xml</slide>
|
|
<slide>slides/xdebug/vld-path-4-code.xml</slide>
|
|
<slide>slides/xdebug/vld-path-4-output.xml</slide>
|
|
|
|
<slide>slides/xdebug/vld-path-3-code.xml</slide>
|
|
<slide>slides/xdebug/vld-path-3-output.xml</slide>
|
|
<slide>slides/xdebug/vld-path-3-paths.xml</slide>
|
|
|
|
<!-- Conclusion
|
|
|
|
Code -> Tokens -> AST -> opode
|
|
|
|
Transformation of control structures
|
|
|
|
Useful implementations
|
|
|
|
-->
|
|
<slide>slides/internals/recap.xml</slide>
|
|
<slide>slides/internals/recap-content.xml</slide>
|
|
|
|
|
|
|
|
<slide>slides/mongodb/questions.xml</slide>
|
|
|
|
<slide>slides/mongodb/resources.xml</slide>
|
|
|
|
</presentation>
|