Support stack closures with up to 7 arguments

This commit is contained in:
Alex Crichton
2018-04-04 08:47:48 -07:00
parent c0cad447c1
commit 28d6c1bc12
3 changed files with 26 additions and 2 deletions

View File

@ -1439,7 +1439,13 @@ impl<'a, 'b> SubContext<'a, 'b> {
format!("getObject(arg{})", i)
}
shared::TYPE_STACK_FUNC0 |
shared::TYPE_STACK_FUNC1 => {
shared::TYPE_STACK_FUNC1 |
shared::TYPE_STACK_FUNC2 |
shared::TYPE_STACK_FUNC3 |
shared::TYPE_STACK_FUNC4 |
shared::TYPE_STACK_FUNC5 |
shared::TYPE_STACK_FUNC6 |
shared::TYPE_STACK_FUNC7 => {
let nargs = *arg - shared::TYPE_STACK_FUNC0;
let args = (0..nargs)
.map(|i| format!("arg{}", i))

View File

@ -148,8 +148,14 @@ pub const TYPE_JS_OWNED: u32 = 22;
pub const TYPE_JS_REF: u32 = 23;
pub const TYPE_STACK_FUNC0: u32 = 24;
pub const TYPE_STACK_FUNC1: u32 = 25;
pub const TYPE_STACK_FUNC2: u32 = 26;
pub const TYPE_STACK_FUNC3: u32 = 27;
pub const TYPE_STACK_FUNC4: u32 = 28;
pub const TYPE_STACK_FUNC5: u32 = 29;
pub const TYPE_STACK_FUNC6: u32 = 30;
pub const TYPE_STACK_FUNC7: u32 = 31;
pub const TYPE_CUSTOM_START: u32 = 26;
pub const TYPE_CUSTOM_START: u32 = 32;
pub const TYPE_CUSTOM_REF_FLAG: u32 = 1;
pub fn name_to_descriptor(name: &str) -> u32 {