Building SSA in a Compiler for PHP

Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge. The information required to build SSA form is not available directly from the program source and cannot be...

Full description

Saved in:
Bibliographic Details
Published inSSA-based Compiler Design pp. 347 - 357
Main Authors Biggar, Paul, Gregg, David
Format Book Chapter
LanguageEnglish
Published Cham Springer International Publishing 2022
Subjects
Online AccessGet full text
ISBN303080514X
9783030805142
DOI10.1007/978-3-030-80515-9_24

Cover

Abstract Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge. The information required to build SSA form is not available directly from the program source and cannot be derived from a simple analysis. Instead, we find a litany of features whose presence makes analysis difficult such as runtime generation of source code and variable-variables. Ruling out the presence of these features requires precise, inter-procedural, whole-program analysis. We discuss the futility of the pessimistic solution, the analyses required to provide a precise SSA form, and how the presence of variables of unknown types affects the precision of SSA. We identify the features of PHP that make building SSA difficult, outline the solutions we found to some of these challenges, and draw some lessons about the use of SSA in analysis frameworks for PHP.
AbstractList Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge. The information required to build SSA form is not available directly from the program source and cannot be derived from a simple analysis. Instead, we find a litany of features whose presence makes analysis difficult such as runtime generation of source code and variable-variables. Ruling out the presence of these features requires precise, inter-procedural, whole-program analysis. We discuss the futility of the pessimistic solution, the analyses required to provide a precise SSA form, and how the presence of variables of unknown types affects the precision of SSA. We identify the features of PHP that make building SSA difficult, outline the solutions we found to some of these challenges, and draw some lessons about the use of SSA in analysis frameworks for PHP.
Author Biggar, Paul
Gregg, David
Author_xml – sequence: 1
  givenname: Paul
  surname: Biggar
  fullname: Biggar, Paul
  email: paul.biggar@gmail.com
– sequence: 2
  givenname: David
  surname: Gregg
  fullname: Gregg, David
BookMark eNo1j1FLwzAUhSMq6Gb_gQ_B97ib3KRpHmdxThhsMAXfQtomUq3NaPD_m019upzvwOF-M3IxxtETcsvhngPohdEVQwYIrALFFTNWyDNSZIwZnpg5J7P_IN-uSJHSBwCICrFS_JrcPXz3Q9eP73S_X9J-pI7W8evQD36iIU50t97dkMvghuSLvzsnr6vHl3rNNtun53q5YYlzlAxdaBU2QSsFphRCAC9b79uy48FrFVqDjZbauFyL1muQDjrDpQo6ALoS50T87qbDlB_yk21i_EyWgz3a2qxl0WYXezKzR1v8AU9uRdg
ContentType Book Chapter
Copyright The Author(s), under exclusive license to Springer Nature Switzerland AG 2022
Copyright_xml – notice: The Author(s), under exclusive license to Springer Nature Switzerland AG 2022
DOI 10.1007/978-3-030-80515-9_24
DatabaseTitleList
DeliveryMethod fulltext_linktorsrc
Discipline Engineering
EISBN 9783030805159
3030805158
Editor Rastello, Fabrice
Bouchez Tichadou, Florent
Editor_xml – sequence: 1
  givenname: Fabrice
  surname: Rastello
  fullname: Rastello, Fabrice
  email: fabrice.rastello@inria.fr
– sequence: 2
  givenname: Florent
  surname: Bouchez Tichadou
  fullname: Bouchez Tichadou, Florent
  email: florent.bouchez-tichadou@imag.fr
EndPage 357
GroupedDBID 38.
AABBV
AAZWU
ABSVR
ABTHU
ABVND
ACBPT
ACHZO
ACPMC
ADNVS
AEJLV
AEKFX
AHVRR
AIYYB
ALMA_UNASSIGNED_HOLDINGS
BBABE
CZZ
IEZ
SBO
TPJZQ
Z83
ID FETCH-LOGICAL-s1134-3afc53bf755096222016ceec6d1fe75fc93b7479a5092ce704a0d9145f7f03a63
ISBN 303080514X
9783030805142
IngestDate Tue Jul 29 20:27:16 EDT 2025
IsPeerReviewed false
IsScholarly false
Language English
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-s1134-3afc53bf755096222016ceec6d1fe75fc93b7479a5092ce704a0d9145f7f03a63
PageCount 11
ParticipantIDs springer_books_10_1007_978_3_030_80515_9_24
PublicationCentury 2000
PublicationDate 2022
PublicationDateYYYYMMDD 2022-01-01
PublicationDate_xml – year: 2022
  text: 2022
PublicationDecade 2020
PublicationPlace Cham
PublicationPlace_xml – name: Cham
PublicationTitle SSA-based Compiler Design
PublicationYear 2022
Publisher Springer International Publishing
Publisher_xml – name: Springer International Publishing
SSID ssj0002833851
Score 1.6452904
Snippet Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript,...
SourceID springer
SourceType Publisher
StartPage 347
SubjectTerms Alias analysis
Chi-function
Compiler design
Dynamic scripting language
Dynamic typing
Global value numbering (GVN)
Hashed-SSA (HSSA)
Inter-procedural analysis
May alias
Must alias
PHP
Point-to graph
Runtime code generation
SCCP
Static single assignment form (SSA form)
Statically typed
Symbolic execution
Type inference
Zero version
Title Building SSA in a Compiler for PHP
URI http://link.springer.com/10.1007/978-3-030-80515-9_24
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV3JTsMwELVouQAXVrHLQtwqozi24-ZYUFFVAapEi3qLbMdGXIrUlgtfzzhLky6XcomiJJokb7xMXuaNEbqXJhDKWEGkoZpw6iISs8ASmEwEbUeBZswLnF_fot6I98diXC3WkKlL5vrB_G7UlfzHq3AM_OpVslt4dmEUDsA--Be24GHYrgS_yzRrruF47xA_B6VZn4bOPYXBo56O4XnvPH26nv7nRSmfG7PZH4sVsltg2dMgqjLscxEHvUGdIgjDFYqgpAhXSMaK51r6pmS-go2vih7WxjWWl8UspkiW15ReG33rCRdghXgzgsRJyBuoAZabaLfT7b98LEgwiG0YhHxec1PetaiKVD1FTe-4yfLaH-wsMBgeogMvFsFexQEvfYR27OQY7deKPJ6guxJXDLjirwlWuMQVA64YcD1Fo-fu8KlHipUpyIxSxglTzgimnRS-eg6EWBA4Q7RhopQ6K4UzMdPwnRYrOB0aKwOugjSmXDjpAqYidoaak--JPUfY0NQaJ0NtgzbnOtDCcKslS1XaDl2kLlCrfL_Et7VZUhaaBjQSlgAaSYZG4tG43OrqK7RXNZdr1JxPf-wNxFhzfVt46g_OQhun
linkProvider Library Specific Holdings
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.title=SSA-based+Compiler+Design&rft.au=Biggar%2C+Paul&rft.au=Gregg%2C+David&rft.atitle=Building+SSA+in+a+Compiler+for+PHP&rft.date=2022-01-01&rft.pub=Springer+International+Publishing&rft.isbn=9783030805142&rft.spage=347&rft.epage=357&rft_id=info:doi/10.1007%2F978-3-030-80515-9_24
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/lc.gif&client=summon&freeimage=true
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/mc.gif&client=summon&freeimage=true
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/sc.gif&client=summon&freeimage=true