1/33
Understanding and Verifying JavaScript Programs
Philippa Gardner
Imperial College London
Understanding and Verifying JavaScript Programs Philippa Gardner - - PowerPoint PPT Presentation
Understanding and Verifying JavaScript Programs Philippa Gardner Imperial College London LFCS 30th Anniversary 1/33 JavaScript at Imperial Philippa Gardner Jos e Fragoso Santos Petar Maksimovi c Daiva Naud zi unien e Azalea
1/33
Imperial College London
2/33
Philippa Gardner Jos´ e Fragoso Santos Petar Maksimovi´ c Daiva Naudˇ zi¯ unien˙ e Azalea Raad Thomas Wood
3/33
4/33
JSCert ES5 JSRef Test262
eraud
4/33
4/33
5/33
6/33
7/33
8/33
9/33
10/33
11/33
12/33
Core ES5 Strict JSCert
Non-core libraries Semantics-directed compilation
12/33
Core ES5 Strict JSCert
Non-core libraries Semantics-directed compilation
13/33
13/33
13/33
13/33
13/33
14/33
15/33
16/33
Object.prototype.foo = 1; var bar = 2; function f() { this.baz = this.bar + foo; } f.prototype.bar = 3
17/33
Object.prototype.foo = 1; var bar = 2; function f() { this.baz = this.bar + foo; } f.prototype.bar = 3
[lop, “foo”] := 1
18/33
Object.prototype.foo = 1; var bar = 2; function f() { this.baz = this.bar + foo; } f.prototype.bar = 3
[lg, “bar”] := 2
19/33
Object.prototype.foo = 1; var bar = 2; function f() { this.baz = this.bar + foo; } f.prototype.bar = 3
xfp := new() [xfp, @proto] := lop xfo := new() [xfo, @code] := “f” [xfo, @scope] := [lg] [xfo, @proto] := ... [xfo, ”prototype”] := xfp [lg, “f”] := xfo
20/33
Object.prototype.foo = 1; var bar = 2; function f() { this.baz = this.bar + foo; } f.prototype.bar = 3
[xfp, “bar”] := 3