def test_tag(): assert tag(3, 1) == rffi.r_short(3<<2|1) assert tag(-3, 2) == rffi.r_short(-3<<2|2) assert tag((1<<13)-1, 3) == rffi.r_short(((1<<15)-1)|3) assert tag(-1<<13, 3) == rffi.r_short((-1<<15)|3) py.test.raises(AssertionError, tag, 3, 5) py.test.raises(TagOverflow, tag, 1<<13, 0) py.test.raises(TagOverflow, tag, (1<<13)+1, 0) py.test.raises(TagOverflow, tag, (-1<<13)-1, 0) py.test.raises(TagOverflow, tag, (-1<<13)-5, 0)
def f(d): i = 0 va = lltype.malloc(T, d+100, flavor='raw', zero=True) vb = lltype.malloc(T, d+100, flavor='raw', zero=True) for j in range(d+100): va[j] = rffi.r_short(1) vb[j] = rffi.r_short(2) g(d+100, va, vb) g(d, va, vb) # this iteration might not fit into the vector register res = intmask(va[d]) lltype.free(va, flavor='raw') lltype.free(vb, flavor='raw') return res
def test_cast_primitive(self): def llf(u): return lltype.cast_primitive(lltype.Signed, u) res = self.interpret(llf, [r_uint(-1)], policy=LowLevelAnnotatorPolicy()) assert res == -1 res = self.interpret(llf, ['x'], policy=LowLevelAnnotatorPolicy()) assert res == ord('x') def llf(v): return lltype.cast_primitive(lltype.Unsigned, v) res = self.interpret(llf, [-1], policy=LowLevelAnnotatorPolicy()) assert res == r_uint(-1) res = self.interpret(llf, [u'x'], policy=LowLevelAnnotatorPolicy()) assert res == ord(u'x') res = self.interpret(llf, [1.0], policy=LowLevelAnnotatorPolicy()) assert res == r_uint(1) def llf(v): return lltype.cast_primitive(lltype.Char, v) res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy()) assert res == 'x' def llf(v): return lltype.cast_primitive(lltype.UniChar, v) res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy()) assert res == u'x' def llf(v): return lltype.cast_primitive(rffi.SHORT, v) res = self.interpret(llf, [123], policy=LowLevelAnnotatorPolicy()) assert res == 123 def llf(v): return lltype.cast_primitive(lltype.Signed, v) res = self.interpret(llf, [rffi.r_short(123)], policy=LowLevelAnnotatorPolicy()) assert res == 123
def f(d): i = 0 va = lltype.malloc(T, d + 100, flavor='raw', zero=True) vb = lltype.malloc(T, d + 100, flavor='raw', zero=True) for j in range(d + 100): va[j] = rffi.r_short(1) vb[j] = rffi.r_short(2) g(d + 100, va, vb) g(d, va, vb) # this iteration might not fit into the vector register res = intmask(va[d]) lltype.free(va, flavor='raw') lltype.free(vb, flavor='raw') return res
def g(d, va, vb): i = 0 while i < d: myjitdriver.jit_merge_point() a = va[i] b = vb[i] ec = intmask(intmask(a) + intmask(b)) va[i] = rffi.r_short(ec) i += 1
def test_cast_primitive(self): def llf(u): return lltype.cast_primitive(lltype.Signed, u) res = self.interpret(llf, [r_uint(-1)], policy=LowLevelAnnotatorPolicy()) assert res == -1 res = self.interpret(llf, ['x'], policy=LowLevelAnnotatorPolicy()) assert res == ord('x') def llf(v): return lltype.cast_primitive(lltype.Unsigned, v) res = self.interpret(llf, [-1], policy=LowLevelAnnotatorPolicy()) assert res == r_uint(-1) res = self.interpret(llf, [u'x'], policy=LowLevelAnnotatorPolicy()) assert res == ord(u'x') res = self.interpret(llf, [1.0], policy=LowLevelAnnotatorPolicy()) assert res == r_uint(1) def llf(v): return lltype.cast_primitive(lltype.Char, v) res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy()) assert res == 'x' def llf(v): return lltype.cast_primitive(lltype.UniChar, v) res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy()) assert res == u'x' def llf(v): return lltype.cast_primitive(rffi.SHORT, v) res = self.interpret(llf, [123], policy=LowLevelAnnotatorPolicy()) assert res == 123 def llf(v): return lltype.cast_primitive(lltype.Signed, v) res = self.interpret(llf, [rffi.r_short(123)], policy=LowLevelAnnotatorPolicy()) assert res == 123 def llf(v): return lltype.cast_primitive(lltype.Bool, v) res = self.interpret(llf, [2**24], policy=LowLevelAnnotatorPolicy()) assert res == True def llf(v): return lltype.cast_primitive(lltype.Bool, v) res = self.interpret(llf, [rffi.r_longlong(2**48)], policy=LowLevelAnnotatorPolicy()) assert res == True
def eventloop(self): ''' Poll each socket in turn and respond to any messages. For long running evaluations the heartbeat message may be sent too late ''' pollitem = rffi.lltype.malloc(rzmq.pollitem_t, flavor='raw') pollitem.c_events = rffi.r_short(rzmq.POLLIN) while True: # Shell pollitem.c_socket = self.shell rc = rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(100)) if rc > 0: rlogging.debug('shell message') request = self.msg_recv(self.shell) self.msg_send( self.iopub, self.construct_message( # report kernel busy request[0], request[3], '{"execution_state":"busy"}', 'status')) self.shell_msg(request) self.msg_send( self.iopub, self.construct_message( # report kernel idle request[0], request[3], '{"execution_state":"idle"}', 'status')) # Control pollitem.c_socket = self.control while rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(1)) > 0: rlogging.debug('control message') request = self.msg_recv(self.control) self.control_msg(request) # HB pollitem.c_socket = self.hb while rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(1)) > 0: rlogging.debug('hearbeat message') request = self.msg_recv(self.hb) self.hb_msg(request)
def eventloop(self): ''' Poll each socket in turn and respond to any messages. For long running evaluations the heartbeat message may be sent too late ''' pollitem = rffi.lltype.malloc(rzmq.pollitem_t, flavor='raw') pollitem.c_events = rffi.r_short(rzmq.POLLIN) while True: # Shell pollitem.c_socket = self.shell rc = rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(100)) if rc > 0: rlogging.debug('shell message') request = self.msg_recv(self.shell) self.msg_send(self.iopub, self.construct_message( # report kernel busy request[0], request[3], '{"execution_state":"busy"}', 'status')) self.shell_msg(request) self.msg_send(self.iopub, self.construct_message( # report kernel idle request[0], request[3], '{"execution_state":"idle"}', 'status')) # Control pollitem.c_socket = self.control while rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(1)) > 0: rlogging.debug('control message') request = self.msg_recv(self.control) self.control_msg(request) # HB pollitem.c_socket = self.hb while rzmq.poll(pollitem, rffi.r_int(1), rffi.r_long(1)) > 0: rlogging.debug('hearbeat message') request = self.msg_recv(self.hb) self.hb_msg(request)
def f(i): l = [r_short(0)] * 10 l[i+1] = r_short(3) return rarithmetic.widen(l[i])