Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix emit for undefined SourceFile #48774

Merged
merged 6 commits into from
Apr 22, 2022

Conversation

jakebailey
Copy link
Member

I like to print out the AST when debugging to see what I'm doing, but when it's not a "real" AST from a source file, things crash, even though they shouldn't. Remove all of the ! from emit and actually handle a missing source file, allowing printNode and such to actually print a tree without a source file.

Arguably, I could change the signature of printNode and co to explicitly note that they can have an undefined SourceFile (matching writeNode and so on), but maybe that's not a good idea, or something that should be internal.

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Apr 20, 2022
src/compiler/emitter.ts Outdated Show resolved Hide resolved
@jakebailey
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 20, 2022

Heya @jakebailey, I've started to run the perf test suite on this PR at 816cdf0. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@jakebailey
The results of the perf run you requested are in!

Here they are:

Comparison Report - main..48774

Metric main 48774 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 357,345k (± 0.02%) 357,341k (± 0.01%) -4k (- 0.00%) 357,206k 357,461k
Parse Time 2.06s (± 0.38%) 2.06s (± 0.57%) 0.00s ( 0.00%) 2.03s 2.08s
Bind Time 0.86s (± 0.64%) 0.86s (± 0.88%) +0.00s (+ 0.23%) 0.85s 0.88s
Check Time 5.82s (± 0.53%) 5.84s (± 0.57%) +0.01s (+ 0.22%) 5.77s 5.90s
Emit Time 6.01s (± 0.68%) 6.02s (± 0.62%) +0.01s (+ 0.17%) 5.93s 6.10s
Total Time 14.76s (± 0.36%) 14.78s (± 0.42%) +0.02s (+ 0.16%) 14.64s 14.92s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,957k (± 0.03%) 205,881k (± 0.04%) -76k (- 0.04%) 205,741k 206,094k
Parse Time 0.84s (± 0.71%) 0.85s (± 0.73%) +0.00s (+ 0.47%) 0.84s 0.86s
Bind Time 0.51s (± 0.97%) 0.52s (± 0.66%) +0.00s (+ 0.39%) 0.51s 0.52s
Check Time 7.92s (± 0.41%) 7.95s (± 0.71%) +0.03s (+ 0.38%) 7.81s 8.09s
Emit Time 2.50s (± 1.40%) 2.52s (± 0.56%) +0.01s (+ 0.52%) 2.48s 2.55s
Total Time 11.79s (± 0.58%) 11.83s (± 0.54%) +0.05s (+ 0.41%) 11.70s 11.98s
Monaco - node (v10.16.3, x64)
Memory used 343,729k (± 0.02%) 343,762k (± 0.01%) +33k (+ 0.01%) 343,641k 343,844k
Parse Time 1.57s (± 0.58%) 1.59s (± 0.84%) +0.02s (+ 1.40%) 1.56s 1.61s
Bind Time 0.75s (± 0.49%) 0.76s (± 0.62%) +0.01s (+ 0.66%) 0.75s 0.77s
Check Time 5.80s (± 0.43%) 5.82s (± 0.55%) +0.03s (+ 0.43%) 5.74s 5.89s
Emit Time 3.21s (± 0.43%) 3.26s (± 0.80%) +0.05s (+ 1.56%) 3.21s 3.34s
Total Time 11.34s (± 0.26%) 11.44s (± 0.55%) +0.10s (+ 0.89%) 11.29s 11.57s
TFS - node (v10.16.3, x64)
Memory used 305,361k (± 0.02%) 305,344k (± 0.02%) -17k (- 0.01%) 305,216k 305,512k
Parse Time 1.29s (± 0.70%) 1.29s (± 0.85%) +0.00s (+ 0.15%) 1.27s 1.32s
Bind Time 0.72s (± 1.06%) 0.72s (± 0.92%) +0.00s (+ 0.56%) 0.70s 0.73s
Check Time 5.25s (± 0.29%) 5.26s (± 0.57%) +0.01s (+ 0.19%) 5.19s 5.31s
Emit Time 3.43s (± 1.51%) 3.46s (± 1.72%) +0.03s (+ 0.79%) 3.32s 3.62s
Total Time 10.69s (± 0.44%) 10.73s (± 0.58%) +0.04s (+ 0.41%) 10.60s 10.91s
material-ui - node (v10.16.3, x64)
Memory used 470,460k (± 0.01%) 470,469k (± 0.01%) +9k (+ 0.00%) 470,348k 470,582k
Parse Time 1.82s (± 0.66%) 1.83s (± 0.41%) +0.01s (+ 0.50%) 1.81s 1.84s
Bind Time 0.67s (± 0.92%) 0.68s (± 1.03%) +0.01s (+ 1.19%) 0.66s 0.69s
Check Time 14.27s (± 0.43%) 14.39s (± 0.60%) +0.12s (+ 0.81%) 14.18s 14.52s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.76s (± 0.36%) 16.89s (± 0.55%) +0.13s (+ 0.79%) 16.66s 17.01s
xstate - node (v10.16.3, x64)
Memory used 572,442k (± 0.02%) 572,497k (± 0.01%) +55k (+ 0.01%) 572,364k 572,605k
Parse Time 2.57s (± 0.30%) 2.60s (± 0.33%) +0.03s (+ 1.05%) 2.58s 2.61s
Bind Time 1.01s (± 0.69%) 1.02s (± 0.85%) +0.01s (+ 0.89%) 1.01s 1.05s
Check Time 1.52s (± 0.54%) 1.53s (± 0.70%) +0.01s (+ 0.39%) 1.50s 1.55s
Emit Time 0.07s (± 0.00%) 0.07s (± 3.14%) +0.00s (+ 1.43%) 0.07s 0.08s
Total Time 5.17s (± 0.29%) 5.21s (± 0.41%) +0.04s (+ 0.75%) 5.17s 5.25s
Angular - node (v12.1.0, x64)
Memory used 335,069k (± 0.02%) 335,113k (± 0.02%) +44k (+ 0.01%) 334,918k 335,269k
Parse Time 2.07s (± 0.63%) 2.08s (± 0.39%) +0.01s (+ 0.53%) 2.06s 2.09s
Bind Time 0.83s (± 0.71%) 0.84s (± 0.87%) +0.00s (+ 0.48%) 0.83s 0.86s
Check Time 5.63s (± 0.32%) 5.65s (± 0.45%) +0.02s (+ 0.32%) 5.60s 5.71s
Emit Time 6.20s (± 0.19%) 6.23s (± 0.96%) +0.03s (+ 0.44%) 6.08s 6.40s
Total Time 14.73s (± 0.10%) 14.80s (± 0.53%) +0.06s (+ 0.43%) 14.67s 15.02s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,206k (± 0.12%) 193,184k (± 0.13%) -22k (- 0.01%) 192,479k 193,599k
Parse Time 0.84s (± 0.99%) 0.85s (± 1.56%) +0.01s (+ 1.44%) 0.83s 0.88s
Bind Time 0.53s (± 0.42%) 0.54s (± 1.52%) +0.01s (+ 1.13%) 0.52s 0.56s
Check Time 7.42s (± 0.61%) 7.47s (± 0.79%) +0.06s (+ 0.81%) 7.32s 7.59s
Emit Time 2.55s (± 0.92%) 2.58s (± 1.75%) +0.03s (+ 1.18%) 2.48s 2.68s
Total Time 11.33s (± 0.46%) 11.44s (± 0.77%) +0.11s (+ 0.96%) 11.16s 11.60s
Monaco - node (v12.1.0, x64)
Memory used 326,637k (± 0.02%) 326,722k (± 0.02%) +85k (+ 0.03%) 326,580k 326,877k
Parse Time 1.55s (± 0.58%) 1.56s (± 0.86%) +0.01s (+ 0.52%) 1.52s 1.58s
Bind Time 0.74s (± 0.81%) 0.75s (± 1.02%) +0.01s (+ 1.36%) 0.73s 0.77s
Check Time 5.63s (± 0.44%) 5.65s (± 0.58%) +0.02s (+ 0.36%) 5.57s 5.73s
Emit Time 3.24s (± 0.93%) 3.25s (± 0.66%) +0.01s (+ 0.37%) 3.22s 3.31s
Total Time 11.16s (± 0.41%) 11.21s (± 0.46%) +0.05s (+ 0.44%) 11.09s 11.29s
TFS - node (v12.1.0, x64)
Memory used 290,069k (± 0.02%) 290,019k (± 0.01%) -50k (- 0.02%) 289,947k 290,119k
Parse Time 1.32s (± 0.63%) 1.31s (± 0.92%) -0.00s (- 0.08%) 1.28s 1.33s
Bind Time 0.70s (± 0.85%) 0.70s (± 0.74%) -0.00s (- 0.57%) 0.69s 0.71s
Check Time 5.20s (± 0.37%) 5.21s (± 0.38%) +0.01s (+ 0.29%) 5.16s 5.25s
Emit Time 3.46s (± 0.53%) 3.49s (± 0.88%) +0.02s (+ 0.63%) 3.39s 3.55s
Total Time 10.68s (± 0.31%) 10.72s (± 0.49%) +0.04s (+ 0.35%) 10.54s 10.82s
material-ui - node (v12.1.0, x64)
Memory used 449,338k (± 0.07%) 449,440k (± 0.01%) +102k (+ 0.02%) 449,290k 449,560k
Parse Time 1.82s (± 0.62%) 1.84s (± 0.67%) +0.02s (+ 0.93%) 1.81s 1.87s
Bind Time 0.65s (± 0.89%) 0.66s (± 0.84%) +0.01s (+ 1.23%) 0.65s 0.67s
Check Time 12.87s (± 0.82%) 12.94s (± 0.61%) +0.07s (+ 0.58%) 12.79s 13.14s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.34s (± 0.68%) 15.44s (± 0.57%) +0.10s (+ 0.63%) 15.27s 15.64s
xstate - node (v12.1.0, x64)
Memory used 541,178k (± 1.30%) 538,095k (± 0.01%) -3,083k (- 0.57%) 537,881k 538,192k
Parse Time 2.53s (± 0.42%) 2.55s (± 0.49%) +0.03s (+ 1.11%) 2.53s 2.59s
Bind Time 1.04s (± 0.35%) 1.04s (± 0.81%) +0.00s (+ 0.29%) 1.02s 1.05s
Check Time 1.47s (± 0.44%) 1.47s (± 0.96%) +0.01s (+ 0.34%) 1.45s 1.50s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.10s (± 0.22%) 5.13s (± 0.38%) +0.03s (+ 0.63%) 5.09s 5.17s
Angular - node (v14.15.1, x64)
Memory used 333,352k (± 0.01%) 333,340k (± 0.00%) -11k (- 0.00%) 333,313k 333,359k
Parse Time 2.03s (± 0.59%) 2.04s (± 0.58%) +0.01s (+ 0.44%) 2.01s 2.06s
Bind Time 0.88s (± 1.22%) 0.88s (± 0.68%) +0.00s (+ 0.11%) 0.86s 0.89s
Check Time 5.66s (± 0.57%) 5.63s (± 0.44%) -0.02s (- 0.44%) 5.59s 5.71s
Emit Time 6.32s (± 1.12%) 6.30s (± 0.49%) -0.02s (- 0.32%) 6.23s 6.35s
Total Time 14.88s (± 0.60%) 14.85s (± 0.39%) -0.03s (- 0.22%) 14.74s 15.00s
Compiler-Unions - node (v14.15.1, x64)
Memory used 193,973k (± 0.58%) 194,695k (± 0.55%) +722k (+ 0.37%) 191,504k 195,498k
Parse Time 0.86s (± 0.58%) 0.86s (± 0.80%) 0.00s ( 0.00%) 0.84s 0.87s
Bind Time 0.56s (± 0.59%) 0.56s (± 0.60%) +0.00s (+ 0.54%) 0.56s 0.57s
Check Time 7.45s (± 0.22%) 7.53s (± 0.56%) +0.09s (+ 1.18%) 7.44s 7.65s
Emit Time 2.52s (± 1.32%) 2.53s (± 1.31%) +0.02s (+ 0.64%) 2.47s 2.64s
Total Time 11.37s (± 0.39%) 11.48s (± 0.46%) +0.11s (+ 0.96%) 11.36s 11.60s
Monaco - node (v14.15.1, x64)
Memory used 325,464k (± 0.01%) 325,469k (± 0.01%) +5k (+ 0.00%) 325,418k 325,506k
Parse Time 1.57s (± 0.72%) 1.58s (± 0.55%) +0.01s (+ 0.70%) 1.56s 1.60s
Bind Time 0.78s (± 0.48%) 0.77s (± 0.29%) -0.00s (- 0.52%) 0.77s 0.78s
Check Time 5.53s (± 0.44%) 5.54s (± 0.24%) +0.01s (+ 0.18%) 5.52s 5.57s
Emit Time 3.31s (± 0.76%) 3.34s (± 1.00%) +0.02s (+ 0.72%) 3.27s 3.43s
Total Time 11.18s (± 0.43%) 11.23s (± 0.30%) +0.05s (+ 0.42%) 11.17s 11.34s
TFS - node (v14.15.1, x64)
Memory used 289,042k (± 0.01%) 289,052k (± 0.01%) +11k (+ 0.00%) 289,000k 289,085k
Parse Time 1.35s (± 0.49%) 1.36s (± 0.88%) +0.01s (+ 0.74%) 1.33s 1.39s
Bind Time 0.73s (± 1.16%) 0.73s (± 0.64%) +0.00s (+ 0.14%) 0.72s 0.74s
Check Time 5.22s (± 0.76%) 5.22s (± 0.18%) +0.01s (+ 0.13%) 5.21s 5.25s
Emit Time 3.53s (± 1.82%) 3.65s (± 0.73%) +0.12s (+ 3.29%) 3.60s 3.70s
Total Time 10.83s (± 0.61%) 10.96s (± 0.21%) +0.13s (+ 1.23%) 10.90s 11.01s
material-ui - node (v14.15.1, x64)
Memory used 447,812k (± 0.00%) 447,814k (± 0.01%) +2k (+ 0.00%) 447,738k 447,902k
Parse Time 1.88s (± 0.44%) 1.87s (± 0.48%) -0.00s (- 0.05%) 1.86s 1.90s
Bind Time 0.70s (± 0.98%) 0.70s (± 0.52%) 0.00s ( 0.00%) 0.69s 0.70s
Check Time 13.04s (± 0.57%) 13.04s (± 0.80%) -0.00s (- 0.02%) 12.84s 13.27s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.61s (± 0.52%) 15.61s (± 0.65%) -0.01s (- 0.03%) 15.39s 15.83s
xstate - node (v14.15.1, x64)
Memory used 535,796k (± 0.00%) 535,776k (± 0.00%) -20k (- 0.00%) 535,716k 535,834k
Parse Time 2.59s (± 0.41%) 2.61s (± 0.46%) +0.02s (+ 0.85%) 2.59s 2.64s
Bind Time 1.14s (± 0.52%) 1.16s (± 1.12%) +0.01s (+ 1.05%) 1.14s 1.20s
Check Time 1.51s (± 0.70%) 1.51s (± 0.55%) +0.00s (+ 0.26%) 1.50s 1.53s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.32s (± 0.16%) 5.36s (± 0.42%) +0.04s (+ 0.79%) 5.32s 5.42s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory2 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 48774 10
Baseline main 10

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member Author

Looks like a few failed to emit, which is very interesting.

@jakebailey
Copy link
Member Author

Hm, no, the baseline failed too, so it's not this PR.

src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
src/compiler/emitter.ts Outdated Show resolved Hide resolved
jakebailey and others added 4 commits April 20, 2022 12:23
Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
@jakebailey jakebailey merged commit 07660c8 into microsoft:main Apr 22, 2022
@jakebailey jakebailey deleted the fix-emit-no-source-file branch April 22, 2022 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants