Пример #1
0
 def _call_with_env_structure(self, args, env, cont, env_structure):
     jit.promote(self.caselam)
     jit.promote(env_structure)
     (actuals, frees, lam) = self._find_lam(args)
     # specialize on the fact that often we end up executing in the
     # same environment.
     prev = lam.env_structure.prev.find_env_in_chain_speculate(
             frees, env_structure, env)
     return lam.make_begin_cont(
         ConsEnv.make(actuals, prev),
         cont)
Пример #2
0
 def call_with_extra_info(self, args, env, cont, calling_app):
     env_structure = None
     if calling_app is not None:
         env_structure = calling_app.env_structure
     jit.promote(self.caselam)
     jit.promote(env_structure)
     (actuals, frees, lam) = self._find_lam(args)
     if not jit.we_are_jitted() and env.pycketconfig().callgraph:
         env.toplevel_env().callgraph.register_call(lam, calling_app, cont, env)
     # specialize on the fact that often we end up executing in the
     # same environment.
     prev = lam.env_structure.prev.find_env_in_chain_speculate(frees, env_structure, env)
     return lam.make_begin_cont(ConsEnv.make(actuals, prev), cont)
Пример #3
0
 def call_with_extra_info(self, args, env, cont, calling_app):
     env_structure = None
     if calling_app is not None:
         env_structure = calling_app.env_structure
     jit.promote(self.caselam)
     jit.promote(env_structure)
     (actuals, frees, lam) = self._find_lam(args)
     if not jit.we_are_jitted() and env.pycketconfig().callgraph:
         env.toplevel_env().callgraph.register_call(lam, calling_app, cont,
                                                    env)
     # specialize on the fact that often we end up executing in the
     # same environment.
     prev = lam.env_structure.prev.find_env_in_chain_speculate(
         frees, env_structure, env)
     return lam.make_begin_cont(ConsEnv.make(actuals, prev), cont)
Пример #4
0
 def __init__(self, caselam, toplevel_env):
     self.closure = W_Closure._make([ConsEnv.make([], toplevel_env)] * len(caselam.lams), caselam, toplevel_env)
Пример #5
0
 def __init__(self, caselam, env):
     self.caselam = caselam
     for (i,lam) in enumerate(caselam.lams):
         vals = lam.collect_frees(caselam.recursive_sym, env, self)
         self._set_list(i, ConsEnv.make(vals, env.toplevel_env()))
Пример #6
0
 def __init__(self, caselam, toplevel_env):
     self.closure = W_Closure._make([ConsEnv.make([], toplevel_env)] *
                                    len(caselam.lams), caselam,
                                    toplevel_env)
Пример #7
0
 def __init__(self, caselam, env):
     self.caselam = caselam
     for (i, lam) in enumerate(caselam.lams):
         vals = lam.collect_frees(caselam.recursive_sym, env, self)
         self._set_list(i, ConsEnv.make(vals, env.toplevel_env()))