diff options
| author | Brian Anderson <banderson@mozilla.com> | 2014-07-21 13:48:19 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2014-07-21 13:50:12 -0700 |
| commit | c61f9763e2e03afbe62445877ceb3ed15e22e123 (patch) | |
| tree | 9cdcb715f5e00ca9b82d34ba1db9984b565d7819 /src/rustllvm/ExecutionEngineWrapper.cpp | |
| parent | f15d6d28396e8700b6c3f2704204a2769e710403 (diff) | |
| download | rust-c61f9763e2e03afbe62445877ceb3ed15e22e123.tar.gz rust-c61f9763e2e03afbe62445877ceb3ed15e22e123.zip | |
Use fewer instructions for `fail!`
Adds a special-case fail function, rustrt::unwind::begin_unwind_no_time_to_explain,
that encapsulates the printing of the words "explicit failure".
The before/after optimized assembly:
```
leaq "str\"str\"(1369)"(%rip), %rax
movq %rax, 8(%rsp)
movq $19, 16(%rsp)
leaq 8(%rsp), %rdi
movl $11, %esi
callq _ZN6unwind31begin_unwind_no_time_to_explain20hd1c720cdde6a116480dE@PLT
```
```
leaq "str\"str\"(1412)"(%rip), %rax
movq %rax, 24(%rsp)
movq $16, 32(%rsp)
leaq "str\"str\"(1413)"(%rip), %rax
movq %rax, 8(%rsp)
movq $19, 16(%rsp)
leaq 24(%rsp), %rdi
leaq 8(%rsp), %rsi
movl $11, %edx
callq _ZN6unwind12begin_unwind21h15836560661922107792E
```
Before/after filesizes:
rwxrwxr-x 1 brian brian 21479503 Jul 20 22:09 stage2-old/lib/librustc-4e7c5e5c.so
rwxrwxr-x 1 brian brian 21475415 Jul 20 22:30 x86_64-unknown-linux-gnu/stage2/lib/librustc-4e7c5e5c.so
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
