File tree Expand file tree Collapse file tree 5 files changed +19
-15
lines changed
Expand file tree Collapse file tree 5 files changed +19
-15
lines changed Original file line number Diff line number Diff line change 1- use core:: fmt:: Error ;
2-
31use crate :: ast:: * ;
42use crate :: parser:: parser:: Parser ;
53use crate :: tokenizer:: * ;
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ mod vm_branch;
55mod vm_cafse;
66mod vm_call;
77mod vm_cdfse;
8+ mod vm_closure;
89mod vm_cmp;
910mod vm_fn_args;
1011mod vm_iafs;
Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ use crate::strong_u64::U64BitsControl;
22use crate :: value:: * ;
33use crate :: vm:: VM ;
44use alloc:: format;
5- use alloc:: string:: * ;
65
76impl VM {
87 pub fn op_call ( & mut self ) {
Original file line number Diff line number Diff line change 1+ use crate :: strong_u64:: U64BitsControl ;
2+ use crate :: value:: Value ;
3+ use crate :: vm:: VM ;
4+
5+ impl VM {
6+ pub fn op_closure ( & mut self , skip : u32 , args : u64 ) {
7+ let value = Value :: FunctionRefEnv (
8+ self . pc . get_low ( ) as u64 ,
9+ args,
10+ self . environs . last ( ) . unwrap ( ) . clone ( ) ,
11+ ) ;
12+
13+ self . pc . add_low ( skip) ;
14+
15+ self . stack . push ( value) ;
16+ }
17+ }
Original file line number Diff line number Diff line change 11use crate :: opcode:: * ;
2- use crate :: strong_u64:: U64BitsControl ;
3- use crate :: value:: Value ;
42use crate :: vm:: * ;
53use alloc:: format;
64
@@ -117,16 +115,7 @@ impl VM {
117115 self . op_ret ( ) ;
118116 }
119117 Opcode :: Closure ( skip, args) => {
120- let value = Value :: FunctionRefEnv (
121- self . pc . get_low ( ) as u64 ,
122- * args,
123- self . environs . last ( ) . unwrap ( ) . clone ( ) ,
124- ) ;
125-
126- self . pc . add_low ( * skip) ;
127-
128- self . stack . push ( value) ;
129- //panic!();
118+ self . op_closure ( * skip, * args) ;
130119 }
131120 }
132121 }
You can’t perform that action at this time.
0 commit comments