def test_step_forged_image(): from spyvm import wrapper ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) s_ctx = ap.suspended_context().as_context_get_shadow(space) assert isinstance(s_ctx, shadow.MethodContextShadow) assert s_ctx.top().is_same_object(space.w_true)
def active_context(space): w_active_process = wrapper.scheduler(space).active_process() active_process = wrapper.ProcessWrapper(space, w_active_process) w_active_context = active_process.suspended_context() assert isinstance(w_active_context, model.W_PointersObject) active_process.store_suspended_context(space.w_nil) return w_active_context.as_context_get_shadow(space)
def _run_image(interp): ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) w_ctx = ap.suspended_context() assert isinstance(w_ctx, model.W_PointersObject) ap.store_suspended_context(space.w_nil) try: return interp.interpret_with_w_frame(w_ctx) except error.Exit, e: print e.msg
def new_process(w_next=space.w_nil, w_my_list=space.w_nil, w_suspended_context=space.w_nil, priority=0): w_priority = space.wrap_int(priority) w_process = model.W_PointersObject(space, None, 4) process = wrapper.ProcessWrapper(space, w_process) process.store_next_link(w_next) process.store_my_list(w_my_list) process.store_suspended_context(w_suspended_context) process.write(2, w_priority) return process
def test_runimage(): py.test.skip( "This method actually runs an image. Fails since no graphical primitives yet" ) from spyvm import wrapper ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) w_ctx = ap.suspended_context() ap.store_suspended_context(space.w_nil) interp = interpreter.Interpreter(space) interp.interpret_with_w_frame(w_ctx)
def test_step_run_something(): space, interp = runningSomethingImage(cached=False) ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) w_ctx = ap.suspended_context() s_ctx = w_ctx.as_context_get_shadow(space) ap.store_suspended_context(space.w_nil) assert isinstance(s_ctx, storage_contexts.ContextPartShadow) assert s_ctx.top().is_same_object(space.w_true) interp.step(s_ctx) interp.step(s_ctx) assert s_ctx.top().value == 1 interp.step(s_ctx) assert s_ctx.top().value == 2 interp.step(s_ctx) assert s_ctx.top().value == 3
def create_process(interp, s_frame): space = interp.space w_active_process = wrapper.scheduler(space).active_process() assert isinstance(w_active_process, model.W_PointersObject) w_benchmark_proc = model.W_PointersObject( space, w_active_process.getclass(space), w_active_process.size() ) if interp.image.version.has_closures: # Priorities below 10 are not allowed in newer versions of Squeak. active_priority = space.unwrap_int(w_active_process.fetch(space, 2)) priority = active_priority / 2 + 1 priority = max(11, priority) else: priority = 7 w_benchmark_proc.store(space, 1, s_frame.w_self()) w_benchmark_proc.store(space, 2, space.wrap_int(priority)) # Make process eligible for scheduling wrapper.ProcessWrapper(space, w_benchmark_proc).put_to_sleep()
def test_step_run_something(): from spyvm.test import test_miniimage setup_module(test_miniimage, filename='running-something-mini.image') from spyvm import wrapper ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) w_ctx = ap.suspended_context() s_ctx = w_ctx.as_context_get_shadow(space) ap.store_suspended_context(space.w_nil) interp = interpreter.Interpreter(space) assert isinstance(s_ctx, shadow.MethodContextShadow) assert s_ctx.top().is_same_object(space.w_true) interp.step(s_ctx) interp.step(s_ctx) assert s_ctx.top().value == 1 interp.step(s_ctx) assert s_ctx.top().value == 2 interp.step(s_ctx) assert s_ctx.top().value == 3
def _run_benchmark(interp, number, benchmark, arg): from spyvm.plugins.vmdebugging import stop_ui_process stop_ui_process() scheduler = wrapper.scheduler(interp.space) w_hpp = scheduler.active_process() if space.unwrap_int(scheduler.active_process().fetch( space, 2)) > space.unwrap_int(w_hpp.fetch(space, 2)): w_hpp = scheduler.active_process() assert isinstance(w_hpp, model.W_PointersObject) w_benchmark_proc = model.W_PointersObject(interp.space, w_hpp.getclass(interp.space), len(w_hpp._vars)) s_frame = context_for(interp, number, benchmark, arg) # second variable is suspended context w_benchmark_proc.store(space, 1, s_frame.w_self()) # third variable is priority priority = space.unwrap_int(w_hpp.fetch(space, 2)) / 2 + 1 # Priorities below 10 are not allowed in newer versions of Squeak. if interp.image.version.has_closures: priority = max(11, priority) else: priority = 7 w_benchmark_proc.store(space, 2, space.wrap_int(priority)) # make process eligible for scheduling wrapper.ProcessWrapper(interp.space, w_benchmark_proc).put_to_sleep() t1 = time.time() w_result = _run_image(interp) t2 = time.time() if w_result: if isinstance(w_result, model.W_BytesObject): print w_result.as_string().replace('\r', '\n') print "took %s seconds" % (t2 - t1) return 0 return -1
def test_step_forged_image(): ap = wrapper.ProcessWrapper(space, wrapper.scheduler(space).active_process()) s_ctx = ap.suspended_context().as_context_get_shadow(space) assert isinstance(s_ctx, storage_contexts.ContextPartShadow) assert s_ctx.top().is_same_object(space.w_true)