def external_call(space, module_name, method_name, stack): stack = [space.w(o) for o in stack] w_description = W_PointersObject(space, space.w_Array, 2) w_description.atput0(space, 0, space.w(module_name)) w_description.atput0(space, 1, space.w(method_name)) context = space.make_frame("<not called>", [w_description], stack[0], stack[1:])[0] return _prim(space, EXTERNAL_CALL, stack, context)
def external_call(plugin, name, stack): stack = [space.w(o) for o in stack] w_description = W_PointersObject(space, space.w_Array, 2) w_description.atput0(space, 0, space.w(plugin)) w_description.atput0(space, 1, space.w(name)) func = prim_holder.prim_table[EXTERNAL_CALL] s_frame = space.make_frame("not called", [w_description], space.w_nil, stack)[1] s_frame.store_stack_ptr(len(stack)) func(interp, s_frame, len(stack) - 1, s_frame.w_method()) return s_frame.pop()