예제 #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
예제 #2
0
 def __init__(self, assembler, fnloc, arglocs, resloc):
     AbstractCallBuilder.__init__(self,
                                  assembler,
                                  fnloc,
                                  arglocs,
                                  resloc,
                                  restype=INT,
                                  ressize=None)
예제 #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
예제 #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
예제 #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)
예제 #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)
예제 #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
예제 #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
예제 #9
0
파일: callbuilder.py 프로젝트: hwms/pypy
 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
예제 #10
0
 def select_call_release_gil_mode(self):
     AbstractCallBuilder.select_call_release_gil_mode(self)
예제 #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
예제 #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
예제 #13
0
 def __init__(self, assembler, fnloc, arglocs, resloc):
     AbstractCallBuilder.__init__(self, assembler, fnloc, arglocs,
                                  resloc, restype=INT, ressize=None)