Skip to content

Commit 38780cd

Browse files
committed
shuffle around some methods
1 parent f2bec70 commit 38780cd

1 file changed

Lines changed: 38 additions & 33 deletions

File tree

interpreter/byterun/pyvm2.py

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,38 @@ def __init__(self):
8787
self.return_value = None
8888
self.last_exception = None
8989

90+
# Frame manipulation
91+
def make_frame(self, code, callargs={}, f_globals=None, f_locals=None):
92+
if f_globals is not None:
93+
f_globals = f_globals
94+
if f_locals is None:
95+
f_locals = f_globals
96+
elif self.frames:
97+
f_globals = self.frame.f_globals
98+
f_locals = {}
99+
else:
100+
f_globals = f_locals = {
101+
'__builtins__': __builtins__,
102+
'__name__': '__main__',
103+
'__doc__': None,
104+
'__package__': None,
105+
}
106+
f_locals.update(callargs)
107+
frame = Frame(code, f_globals, f_locals, self.frame)
108+
return frame
109+
110+
def push_frame(self, frame):
111+
self.frames.append(frame)
112+
self.frame = frame
113+
114+
def pop_frame(self):
115+
self.frames.pop()
116+
if self.frames:
117+
self.frame = self.frames[-1]
118+
else:
119+
self.frame = None
120+
121+
# Data stack manipulation
90122
def top(self):
91123
return self.frame.stack[-1]
92124

@@ -107,10 +139,7 @@ def popn(self, n):
107139
else:
108140
return []
109141

110-
def jump(self, jump):
111-
"""Move the bytecode pointer to `jump`, so it will execute next."""
112-
self.frame.f_lasti = jump
113-
142+
# Block stack manipulation
114143
def push_block(self, b_type, handler=None):
115144
level = len(self.frame.stack)
116145
self.frame.block_stack.append(Block(b_type, handler, level))
@@ -131,36 +160,12 @@ def unwind_block(self, block):
131160
traceback, value, exctype = self.popn(3)
132161
self.last_exception = exctype, value, traceback
133162

134-
def make_frame(self, code, callargs={}, f_globals=None, f_locals=None):
135-
if f_globals is not None:
136-
f_globals = f_globals
137-
if f_locals is None:
138-
f_locals = f_globals
139-
elif self.frames:
140-
f_globals = self.frame.f_globals
141-
f_locals = {}
142-
else:
143-
f_globals = f_locals = {
144-
'__builtins__': __builtins__,
145-
'__name__': '__main__',
146-
'__doc__': None,
147-
'__package__': None,
148-
}
149-
f_locals.update(callargs)
150-
frame = Frame(code, f_globals, f_locals, self.frame)
151-
return frame
152-
153-
def push_frame(self, frame):
154-
self.frames.append(frame)
155-
self.frame = frame
156-
157-
def pop_frame(self):
158-
self.frames.pop()
159-
if self.frames:
160-
self.frame = self.frames[-1]
161-
else:
162-
self.frame = None
163+
# Jumping through bytecode
164+
def jump(self, jump):
165+
"""Move the bytecode pointer to `jump`, so it will execute next."""
166+
self.frame.f_lasti = jump
163167

168+
# An entry point
164169
def run_code(self, code, f_globals=None, f_locals=None):
165170
frame = self.make_frame(code, f_globals=f_globals, f_locals=f_locals)
166171
val = self.run_frame(frame)

0 commit comments

Comments
 (0)