Exemplo n.º 1
0
 def select_call_release_gil_mode(self):
     """Overridden in CallBuilder64"""
     AbstractCallBuilder.select_call_release_gil_mode(self)
     if self.asm._is_asmgcc():
         from rpython.memory.gctransform import asmgcroot
         self.stack_max = PASS_ON_MY_FRAME - asmgcroot.JIT_USE_WORDS
         assert self.stack_max >= 3
Exemplo n.º 2
0
 def __init__(self, assembler, fnloc, arglocs, resloc):
     AbstractCallBuilder.__init__(self,
                                  assembler,
                                  fnloc,
                                  arglocs,
                                  resloc,
                                  restype=INT,
                                  ressize=None)
Exemplo n.º 3
0
 def __init__(self,
              assembler,
              fnloc,
              arglocs,
              resloc=r.r0,
              restype=INT,
              ressize=WORD,
              ressigned=True):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs, resloc,
                                  restype, ressize)
     self.current_sp = 0
Exemplo n.º 4
0
 def __init__(self, assembler, fnloc, arglocs,
              resloc=eax, restype=INT, ressize=WORD):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype, ressize)
     # Avoid tons of issues with a non-immediate fnloc by sticking it
     # as an extra argument if needed
     self.fnloc_is_immediate = isinstance(fnloc, ImmedLoc)
     if not self.fnloc_is_immediate:
         self.fnloc = None
         self.arglocs = arglocs + [fnloc]
     self.current_esp = 0     # 0 or (usually) negative, counted in bytes
Exemplo n.º 5
0
    def __init__(self, assembler, fnloc, arglocs, resloc, calldescr):
        type = INT
        size = WORD
        self.ressign = True
        if calldescr is not None and isinstance(calldescr, CallDescr):
            type = calldescr.get_result_type()
            size = calldescr.get_result_size()
            self.ressign = calldescr.is_result_signed()

        AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                     resloc, restype=type, ressize=size)
Exemplo n.º 6
0
    def __init__(self, assembler, fnloc, arglocs, resloc, calldescr):
        type = INT
        size = WORD
        self.ressign = True
        if calldescr is not None and isinstance(calldescr, CallDescr):
            type = calldescr.get_result_type()
            size = calldescr.get_result_size()
            self.ressign = calldescr.is_result_signed()

        AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                     resloc, restype=type, ressize=size)
Exemplo n.º 7
0
 def __init__(self, assembler, fnloc, arglocs,
              resloc=eax, restype=INT, ressize=WORD):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype, ressize)
     # Avoid tons of issues with a non-immediate fnloc by sticking it
     # as an extra argument if needed
     if isinstance(fnloc, ImmedLoc):
         self.fnloc_is_immediate = True
         self.fnloc = imm(follow_jump(fnloc.value))
     else:
         self.fnloc_is_immediate = False
         self.fnloc = None
         self.arglocs = arglocs + [fnloc]
     self.start_frame_size = self.mc._frame_size
Exemplo n.º 8
0
 def __init__(self, assembler, fnloc, arglocs,
              resloc=eax, restype=INT, ressize=WORD):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype, ressize)
     # Avoid tons of issues with a non-immediate fnloc by sticking it
     # as an extra argument if needed
     if isinstance(fnloc, ImmedLoc):
         self.fnloc_is_immediate = True
         self.fnloc = imm(follow_jump(fnloc.value))
     else:
         self.fnloc_is_immediate = False
         self.fnloc = None
         self.arglocs = arglocs + [fnloc]
     self.start_frame_size = self.mc._frame_size
Exemplo n.º 9
0
 def __init__(self,
              assembler,
              fnloc,
              arglocs,
              resloc=eax,
              restype=INT,
              ressize=WORD):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs, resloc,
                                  restype, ressize)
     # Avoid tons of issues with a non-immediate fnloc by sticking it
     # as an extra argument if needed
     self.fnloc_is_immediate = isinstance(fnloc, ImmedLoc)
     if not self.fnloc_is_immediate:
         self.fnloc = None
         self.arglocs = arglocs + [fnloc]
     self.current_esp = 0  # 0 or (usually) negative, counted in bytes
Exemplo n.º 10
0
 def select_call_release_gil_mode(self):
     AbstractCallBuilder.select_call_release_gil_mode(self)
Exemplo n.º 11
0
 def __init__(self, assembler, fnloc, arglocs,
              resloc=r.r0, restype=INT, ressize=WORD, ressigned=True):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype, ressize)
     self.current_sp = 0
Exemplo n.º 12
0
 def select_call_release_gil_mode(self):
     AbstractCallBuilder.select_call_release_gil_mode(self)
     if self.asm._is_asmgcc():
         from rpython.memory.gctransform import asmgcroot
         self.stack_max = PASS_ON_MY_FRAME - asmgcroot.JIT_USE_WORDS
         assert self.stack_max >= 3
Exemplo n.º 13
0
 def __init__(self, assembler, fnloc, arglocs, resloc):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype=INT, ressize=None)