Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering 2015
DOI: 10.1145/2786805.2786831
|View full text |Cite
|
Sign up to set email alerts
|

JITProf: pinpointing JIT-unfriendly JavaScript code

Abstract: Most modern JavaScript engines use just-in-time (JIT) compilation to translate parts of JavaScript code into efficient machine code at runtime. Despite the overall success of JIT compilers, programmers may still write code that uses the dynamic features of JavaScript in a way that prohibits profitable optimizations. Unfortunately, there currently is no technique that helps developers to identify such JIT-unfriendly code. This paper presents JITPROF, a profiling framework to dynamically identify code locations … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
25
0

Year Published

2015
2015
2022
2022

Publication Types

Select...
5
2
1

Relationship

3
5

Authors

Journals

citations
Cited by 54 publications
(25 citation statements)
references
References 59 publications
0
25
0
Order By: Relevance
“…First, the implementation deviates from the standard. Second, the implementation results in arrays that contain undefined values ("arrays with holes"), which is known to cause suboptimal performance because the JIT compiler cannot apply particular optimizations [17], [20]. TypeDevil detects these problems because functions that implement parts of the cryptographic algorithms have arguments that contain both number and undefined values.…”
Section: A Experimental Setupmentioning
confidence: 99%
See 1 more Smart Citation
“…First, the implementation deviates from the standard. Second, the implementation results in arrays that contain undefined values ("arrays with holes"), which is known to cause suboptimal performance because the JIT compiler cannot apply particular optimizations [17], [20]. TypeDevil detects these problems because functions that implement parts of the cryptographic algorithms have arguments that contain both number and undefined values.…”
Section: A Experimental Setupmentioning
confidence: 99%
“…3d -cube 289 104 43 1 1 3d-morph 24 3 3 0 0 3d-raytrace 346 103 72 3 0 access-binary-trees 40 9 9 0 0 access-fannkuch 52 3 3 0 0 access-nbody 143 29 25 0 0 access-nsieve 29 6 6 0 0 bitops-3bit-bits-in-byte 17 …”
Section: Sunspidermentioning
confidence: 99%
“…1 Note that it is legitimate for performance reasons to call these constructors with arguments [24]. Table 3: Code quality rules and runtime patterns related to language misuse (all are single-event patterns).…”
Section: Too Many Argumentsmentioning
confidence: 99%
“…JITProf is a profiler that identifies performance bottlenecks caused by code that JIT engines cannot effectively optimize [24]. Each of these approaches addresses a particular kind of programming error, whereas DLint is a generic framework for checking code quality rules.…”
Section: Related Workmentioning
confidence: 99%
“…Modern JavaScript engines implement just-in-time (JIT) compilation techniques combined with inline caching, which rely, among other things, on the fact that the layouts of most JavaScript objects do not change often. These optimization heuristics are ineffective when new fields and method are added to an object [16].…”
Section: Introductionmentioning
confidence: 99%