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

--- !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
- ""