ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/microscheme/scheme.c
(Generate patch)

Comparing microscheme/scheme.c (file contents):
Revision 1.69 by root, Mon Dec 7 22:12:53 2015 UTC vs.
Revision 1.70 by root, Mon Dec 7 22:13:31 2015 UTC

3923 3923
3924 case OP_REAL_APPLY: 3924 case OP_REAL_APPLY:
3925#endif 3925#endif
3926 if (is_proc (SCHEME_V->code)) 3926 if (is_proc (SCHEME_V->code))
3927 s_goto (procnum (SCHEME_V->code)); /* PROCEDURE */ 3927 s_goto (procnum (SCHEME_V->code)); /* PROCEDURE */
3928 else if (is_foreign (SCHEME_V->code))
3929 {
3930 /* Keep nested calls from GC'ing the arglist */
3931 push_recent_alloc (SCHEME_A_ args, NIL);
3932 x = CELL(SCHEME_V->code)->object.ff (SCHEME_A_ args);
3933
3934 s_return (x);
3935 }
3936 else if (is_closure (SCHEME_V->code) || is_macro (SCHEME_V->code) || is_promise (SCHEME_V->code)) /* CLOSURE */ 3928 else if (is_closure (SCHEME_V->code) || is_macro (SCHEME_V->code) || is_promise (SCHEME_V->code)) /* CLOSURE */
3937 { 3929 {
3938 /* Should not accept promise */ 3930 /* Should not accept promise */
3939 /* make environment */ 3931 /* make environment */
3940 new_frame_in_env (SCHEME_A_ closure_env (SCHEME_V->code)); 3932 new_frame_in_env (SCHEME_A_ closure_env (SCHEME_V->code));
3966 } 3958 }
3967 else if (is_continuation (SCHEME_V->code)) /* CONTINUATION */ 3959 else if (is_continuation (SCHEME_V->code)) /* CONTINUATION */
3968 { 3960 {
3969 ss_set_cont (SCHEME_A_ cont_dump (SCHEME_V->code)); 3961 ss_set_cont (SCHEME_A_ cont_dump (SCHEME_V->code));
3970 s_return (args != NIL ? car (args) : NIL); 3962 s_return (args != NIL ? car (args) : NIL);
3963 }
3964 else if (is_foreign (SCHEME_V->code))
3965 {
3966 /* Keep nested calls from GC'ing the arglist */
3967 push_recent_alloc (SCHEME_A_ args, NIL);
3968 x = CELL(SCHEME_V->code)->object.ff (SCHEME_A_ args);
3969
3970 s_return (x);
3971 } 3971 }
3972 3972
3973 Error_0 ("illegal function"); 3973 Error_0 ("illegal function");
3974 3974
3975 case OP_DOMACRO: /* do macro */ 3975 case OP_DOMACRO: /* do macro */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines