Lines Matching refs:code

48 def get_localsplus(code: types.CodeType):
50 for name in code.co_varnames:
52 for name in code.co_cellvars:
54 for name in code.co_freevars:
59 def get_localsplus_counts(code: types.CodeType,
77 assert nlocals == len(code.co_varnames) == code.co_nlocals, \
78 (nlocals, len(code.co_varnames), code.co_nlocals)
79 assert ncellvars == len(code.co_cellvars)
80 assert nfreevars == len(code.co_freevars)
239 def generate_code(self, name: str, code: types.CodeType) -> str:
242 co_consts = self.generate(name + "_consts", code.co_consts)
243 co_names = self.generate(name + "_names", code.co_names)
244 co_filename = self.generate(name + "_filename", code.co_filename)
245 co_name = self.generate(name + "_name", code.co_name)
246 co_qualname = self.generate(name + "_qualname", code.co_qualname)
247 co_linetable = self.generate(name + "_linetable", code.co_linetable)
248 co_exceptiontable = self.generate(name + "_exceptiontable", code.co_exceptiontable)
250 localsplusnames, localspluskinds = get_localsplus(code)
255 get_localsplus_counts(code, localsplusnames, localspluskinds)
256 co_code_adaptive = make_string_literal(code.co_code)
259 self.write(f"struct _PyCode_DEF({len(code.co_code)})")
261 self.object_var_head("PyCode_Type", len(code.co_code) // 2)
262 # But the ordering here must match that in cpython/code.h
268 self.field(code, "co_flags")
271 self.field(code, "co_argcount")
272 self.field(code, "co_posonlyargcount")
273 self.field(code, "co_kwonlyargcount")
274 self.field(code, "co_stacksize")
275 self.field(code, "co_firstlineno")
277 self.field(code, "co_nlocals")
290 for i, op in enumerate(code.co_code[::2]):
381 def generate_file(self, module: str, code: object)-> None:
383 self.generate(f"{module}_toplevel", code)
424 f"Cannot generate code for {type(obj).__name__} object")
467 code = decode_frozen_data(source)
469 code = compile(fd.read(), f"<frozen {modname}>", "exec")
470 printer.generate_file(modname, code)