{"id":"https://openalex.org/W4415007672","doi":"https://doi.org/10.1145/3763149","title":"CoSSJIT: Combining Static Analysis and Speculation in JIT Compilers","display_name":"CoSSJIT: Combining Static Analysis and Speculation in JIT Compilers","publication_year":2025,"publication_date":"2025-10-09","ids":{"openalex":"https://openalex.org/W4415007672","doi":"https://doi.org/10.1145/3763149"},"language":"en","primary_location":{"id":"doi:10.1145/3763149","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3763149","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://doi.org/10.1145/3763149","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5017132690","display_name":"Aditya Anand","orcid":"https://orcid.org/0000-0003-3752-3908"},"institutions":[{"id":"https://openalex.org/I162827531","display_name":"Indian Institute of Technology Bombay","ror":"https://ror.org/02qyf5152","country_code":"IN","type":"education","lineage":["https://openalex.org/I162827531"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Aditya Anand","raw_affiliation_strings":["Indian Institute of Technology Bombay, Mumbai, India"],"raw_orcid":"https://orcid.org/0000-0003-3752-3908","affiliations":[{"raw_affiliation_string":"Indian Institute of Technology Bombay, Mumbai, India","institution_ids":["https://openalex.org/I162827531"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5017443088","display_name":"Vijay Sundaresan","orcid":"https://orcid.org/0009-0006-9342-4356"},"institutions":[{"id":"https://openalex.org/I4210113654","display_name":"IBM (Canada)","ror":"https://ror.org/025sxka56","country_code":"CA","type":"company","lineage":["https://openalex.org/I1341412227","https://openalex.org/I4210113654"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Vijay Sundaresan","raw_affiliation_strings":["IBM Canada Lab, Markham, Canada"],"raw_orcid":"https://orcid.org/0009-0006-9342-4356","affiliations":[{"raw_affiliation_string":"IBM Canada Lab, Markham, Canada","institution_ids":["https://openalex.org/I4210113654"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5031111759","display_name":"Daryl Maier","orcid":"https://orcid.org/0009-0006-8467-3270"},"institutions":[{"id":"https://openalex.org/I4210113654","display_name":"IBM (Canada)","ror":"https://ror.org/025sxka56","country_code":"CA","type":"company","lineage":["https://openalex.org/I1341412227","https://openalex.org/I4210113654"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Daryl Maier","raw_affiliation_strings":["IBM Canada Lab, Markham, Canada"],"raw_orcid":"https://orcid.org/0009-0006-8467-3270","affiliations":[{"raw_affiliation_string":"IBM Canada Lab, Markham, Canada","institution_ids":["https://openalex.org/I4210113654"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5037950146","display_name":"Manas Thakur","orcid":"https://orcid.org/0000-0002-0740-9701"},"institutions":[{"id":"https://openalex.org/I162827531","display_name":"Indian Institute of Technology Bombay","ror":"https://ror.org/02qyf5152","country_code":"IN","type":"education","lineage":["https://openalex.org/I162827531"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Manas Thakur","raw_affiliation_strings":["Indian Institute of Technology Bombay, Mumbai, India"],"raw_orcid":"https://orcid.org/0000-0002-0740-9701","affiliations":[{"raw_affiliation_string":"Indian Institute of Technology Bombay, Mumbai, India","institution_ids":["https://openalex.org/I162827531"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":4,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":5.2134,"has_fulltext":false,"cited_by_count":3,"citation_normalized_percentile":{"value":0.95699034,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":91,"max":99},"biblio":{"volume":"9","issue":"OOPSLA2","first_page":"2759","last_page":"2785"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9977999925613403,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/static-analysis","display_name":"Static analysis","score":0.7968999743461609},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.78329998254776},{"id":"https://openalex.org/keywords/just-in-time-compilation","display_name":"Just-in-time compilation","score":0.6783999800682068},{"id":"https://openalex.org/keywords/correctness","display_name":"Correctness","score":0.5712000131607056},{"id":"https://openalex.org/keywords/dataflow","display_name":"Dataflow","score":0.5658000111579895},{"id":"https://openalex.org/keywords/heap","display_name":"Heap (data structure)","score":0.517300009727478},{"id":"https://openalex.org/keywords/call-stack","display_name":"Call stack","score":0.48410001397132874},{"id":"https://openalex.org/keywords/register-allocation","display_name":"Register allocation","score":0.4603999853134155},{"id":"https://openalex.org/keywords/compile-time","display_name":"Compile time","score":0.4578999876976013},{"id":"https://openalex.org/keywords/abstract-interpretation","display_name":"Abstract interpretation","score":0.43209999799728394}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8702999949455261},{"id":"https://openalex.org/C97686452","wikidata":"https://www.wikidata.org/wiki/Q7604153","display_name":"Static analysis","level":2,"score":0.7968999743461609},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.78329998254776},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6870999932289124},{"id":"https://openalex.org/C76782552","wikidata":"https://www.wikidata.org/wiki/Q110546","display_name":"Just-in-time compilation","level":3,"score":0.6783999800682068},{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.5712000131607056},{"id":"https://openalex.org/C96324660","wikidata":"https://www.wikidata.org/wiki/Q205446","display_name":"Dataflow","level":2,"score":0.5658000111579895},{"id":"https://openalex.org/C134757568","wikidata":"https://www.wikidata.org/wiki/Q274089","display_name":"Heap (data structure)","level":2,"score":0.517300009727478},{"id":"https://openalex.org/C119024030","wikidata":"https://www.wikidata.org/wiki/Q759899","display_name":"Call stack","level":3,"score":0.48410001397132874},{"id":"https://openalex.org/C128916667","wikidata":"https://www.wikidata.org/wiki/Q1343660","display_name":"Register allocation","level":3,"score":0.4603999853134155},{"id":"https://openalex.org/C200833197","wikidata":"https://www.wikidata.org/wiki/Q333707","display_name":"Compile time","level":3,"score":0.4578999876976013},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.4478999972343445},{"id":"https://openalex.org/C2780654840","wikidata":"https://www.wikidata.org/wiki/Q333341","display_name":"Abstract interpretation","level":2,"score":0.43209999799728394},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.383899986743927},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.3691999912261963},{"id":"https://openalex.org/C7263679","wikidata":"https://www.wikidata.org/wiki/Q5978076","display_name":"Pointer analysis","level":3,"score":0.35839998722076416},{"id":"https://openalex.org/C98183937","wikidata":"https://www.wikidata.org/wiki/Q2112188","display_name":"Program analysis","level":2,"score":0.35659998655319214},{"id":"https://openalex.org/C15296174","wikidata":"https://www.wikidata.org/wiki/Q7575343","display_name":"Speculative multithreading","level":4,"score":0.34150001406669617},{"id":"https://openalex.org/C141331961","wikidata":"https://www.wikidata.org/wiki/Q2164465","display_name":"Speculative execution","level":2,"score":0.33570000529289246},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.32710000872612},{"id":"https://openalex.org/C2780870223","wikidata":"https://www.wikidata.org/wiki/Q1004415","display_name":"Runtime system","level":2,"score":0.31769999861717224},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.30169999599456787},{"id":"https://openalex.org/C8767382","wikidata":"https://www.wikidata.org/wiki/Q1058454","display_name":"Dynamic compilation","level":3,"score":0.28949999809265137},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.287200003862381},{"id":"https://openalex.org/C150202949","wikidata":"https://www.wikidata.org/wiki/Q107602","display_name":"Pointer (user interface)","level":2,"score":0.28029999136924744},{"id":"https://openalex.org/C47941915","wikidata":"https://www.wikidata.org/wiki/Q107885","display_name":"Speculation","level":2,"score":0.2786000072956085},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.2782999873161316},{"id":"https://openalex.org/C12186640","wikidata":"https://www.wikidata.org/wiki/Q6815743","display_name":"Memory model","level":3,"score":0.27459999918937683},{"id":"https://openalex.org/C28180684","wikidata":"https://www.wikidata.org/wiki/Q4080983","display_name":"Memory safety","level":3,"score":0.2736000120639801},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.27309998869895935},{"id":"https://openalex.org/C68366613","wikidata":"https://www.wikidata.org/wiki/Q5156378","display_name":"Compiler correctness","level":3,"score":0.2727999985218048},{"id":"https://openalex.org/C137287247","wikidata":"https://www.wikidata.org/wiki/Q1329550","display_name":"Static program analysis","level":4,"score":0.2700999975204468},{"id":"https://openalex.org/C93682380","wikidata":"https://www.wikidata.org/wiki/Q2025226","display_name":"Static timing analysis","level":2,"score":0.27000001072883606},{"id":"https://openalex.org/C139571649","wikidata":"https://www.wikidata.org/wiki/Q1156793","display_name":"Program optimization","level":3,"score":0.26759999990463257},{"id":"https://openalex.org/C9395851","wikidata":"https://www.wikidata.org/wiki/Q177929","display_name":"Stack (abstract data type)","level":2,"score":0.2671000063419342},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.266400009393692},{"id":"https://openalex.org/C162262903","wikidata":"https://www.wikidata.org/wiki/Q343527","display_name":"Allocator","level":2,"score":0.25769999623298645}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3763149","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3763149","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3763149","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3763149","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":24,"referenced_works":["https://openalex.org/W2014530617","https://openalex.org/W2095558030","https://openalex.org/W2105256796","https://openalex.org/W2109268862","https://openalex.org/W2140021378","https://openalex.org/W2159558457","https://openalex.org/W2166091242","https://openalex.org/W2167363133","https://openalex.org/W2955188035","https://openalex.org/W2965899076","https://openalex.org/W2979463730","https://openalex.org/W3006817828","https://openalex.org/W3014903559","https://openalex.org/W3173264229","https://openalex.org/W3207630113","https://openalex.org/W4236519034","https://openalex.org/W4312709848","https://openalex.org/W4387674323","https://openalex.org/W4399851393","https://openalex.org/W4399851459","https://openalex.org/W4403223543","https://openalex.org/W4407216666","https://openalex.org/W4415007672","https://openalex.org/W6949817053"],"related_works":[],"abstract_inverted_index":{"Just-in-time":[0],"(JIT)":[1],"compilers":[2,39],"typically":[3],"sacrifice":[4],"the":[5,35,67,75,119,142,193,207,214],"precision":[6,55,134],"of":[7,15,77,101,144,196,209],"program":[8],"analysis":[9,73,104,124],"for":[10],"efficiency,":[11],"but":[12,47,129],"are":[13],"capable":[14],"performing":[16],"sophisticated":[17],"speculative":[18,78,197],"optimizations":[19],"based":[20,135],"on":[21,93,136,167,213,230],"run-time":[22,60,137],"profiles":[23],"to":[24,30,70,88,159,169,186,200,226],"generate":[25,170],"code":[26],"that":[27,163,173,204,233],"is":[28,158],"specialized":[29,176],"a":[31,94,122,130,151,182,201,231],"given":[32],"execution.":[33],"On":[34],"contrary,":[36],"ahead-of-time":[37],"static":[38,72,103,123,152],"can":[40,164,174],"often":[41],"afford":[42],"precise":[43],"flow-sensitive":[44],"interprocedural":[45,153],"analysis,":[46],"produce":[48],"conservative":[49,127],"results":[50,172,191],"in":[51,222],"scenarios":[52,120],"where":[53,121],"higher":[54],"could":[56,132],"be":[57,165,175],"derived":[58],"from":[59],"specialization.":[61],"In":[62],"this":[63],"paper,":[64],"we":[65,117,140,180,218],"propose":[66],"first-of-its-kind":[68],"approach":[69,100,203],"enrich":[71,189],"with":[74,105,192],"possibility":[76],"optimization":[79],"during":[80,237],"JIT":[81,106,131,184,238],"compilation,":[82],"as":[83,85],"well":[84],"its":[86],"usage":[87],"perform":[89],"aggressive":[90],"stack":[91,223],"allocation":[92,224],"production":[95,183],"Java":[96],"Virtual":[97],"Machine.":[98],"Our":[99],"combining":[102],"speculation":[107],"--":[108,111],"named":[109],"CoSSJIT":[110],"involves":[112],"three":[113],"key":[114],"contributions.":[115],"First,":[116],"identify":[118,160],"would":[125],"make":[126],"assumptions":[128],"deliver":[133],"speculation.":[138],"Second,":[139],"present":[141],"notion":[143],"\"speculative":[145],"conditions\"":[146],"and":[147,188],"plug":[148],"them":[149],"into":[150],"dataflow":[154],"analyzer":[155],"(whose":[156],"aim":[157],"heap":[161],"objects":[162],"allocated":[166],"stack),":[168],"partial":[171],"at":[177],"run-time.":[178],"Finally,":[179],"extend":[181],"compiler":[185],"read":[187],"static-analysis":[190],"resolved":[194],"values":[195],"conditions,":[198],"leading":[199],"practical":[202],"efficiently":[205],"combines":[206],"best":[208],"both":[210],"worlds.":[211],"Cherries":[212],"cake:":[215],"Using":[216],"CoSSJIT,":[217],"obtain":[219],"5.7x":[220],"improvement":[221],"(translating":[225],"performance),":[227],"while":[228],"building":[229],"system":[232],"ensures":[234],"functional":[235],"correctness":[236],"compilation.":[239]},"counts_by_year":[{"year":2026,"cited_by_count":2},{"year":2025,"cited_by_count":1}],"updated_date":"2026-06-11T09:08:48.828518","created_date":"2025-10-10T00:00:00"}
