mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.5 KiB
42 lines
1.5 KiB
--- !ditz.rubyforge.org,2008-03-06/issue
|
|
title: implement fast return
|
|
desc: ""
|
|
type: :task
|
|
component: duk
|
|
release: v1.2
|
|
reporter: Sami Vaarala <sami.vaarala@iki.fi>
|
|
status: :unstarted
|
|
disposition:
|
|
creation_time: 2014-08-27 14:17:57.563519 Z
|
|
references: []
|
|
|
|
id: bf06dc213ac91e3495011ff58b38c9b25a453e9e
|
|
log_events:
|
|
- - 2014-08-27 14:17:57.771456 Z
|
|
- Sami Vaarala <sami.vaarala@iki.fi>
|
|
- created
|
|
- ""
|
|
- - 2014-08-30 18:28:12.052732 Z
|
|
- Sami Vaarala <sami.vaarala@iki.fi>
|
|
- assigned to release v1.1 from v0.12
|
|
- |-
|
|
The speed advantage of fast returns was about 10-15% so they can be pushed
|
|
to 1.1.
|
|
|
|
Label sites increase the catch stack size which prevents a fast return inside
|
|
them. Note that since label sites are created for control flow structures too
|
|
(like 'for'), fast returns are not possible from inside e.g. a for loop now.
|
|
|
|
The best compromise may be to allow label sites but no actual try-catch sites
|
|
for fast returns. This means that the fast return handler needs to unwind the
|
|
catch stack. At this point it's doing basically everything the longjmp()
|
|
"slow return" handler is doing, except having the ability to propagate the
|
|
error to another thread, out of the bytecode executor, etc.
|
|
- - 2014-08-30 18:38:36.551730 Z
|
|
- Sami Vaarala <sami.vaarala@iki.fi>
|
|
- commented
|
|
- Implement test case test-dev-fast-return-cases.js.
|
|
- - 2014-11-02 00:20:39.106682 Z
|
|
- Sami Vaarala <sami.vaarala@iki.fi>
|
|
- assigned to release v1.2 from v1.1
|
|
- ""
|
|
|