Exemplo n.º 1
0
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)
Exemplo n.º 2
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
Exemplo n.º 3
0
 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
Exemplo n.º 4
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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
 def f(i):
     l = [r_short(0)] * 10
     l[i+1] = r_short(3)
     return rarithmetic.widen(l[i])
Exemplo n.º 11
0
 def f(i):
     l = [r_short(0)] * 10
     l[i+1] = r_short(3)
     return rarithmetic.widen(l[i])