Author: Richard Plangger <planri...@gmail.com> Branch: s390x-backend Changeset: r81992:e6d4a987b802 Date: 2016-01-28 11:32 +0100 http://bitbucket.org/pypy/pypy/changeset/e6d4a987b802/
Log: removed size info from call builder when assembling call_assembler (it is not needed), removed several not necessary stack frame allocations in the jit diff --git a/rpython/jit/backend/zarch/assembler.py b/rpython/jit/backend/zarch/assembler.py --- a/rpython/jit/backend/zarch/assembler.py +++ b/rpython/jit/backend/zarch/assembler.py @@ -44,7 +44,6 @@ self.current_clt = None self._regalloc = None self.datablockwrapper = None - self.subject_op = None # needed in call assembler to pass by the operation self.propagate_exception_path = 0 self.stack_check_slowpath = 0 self.loop_run_counters = [] @@ -332,10 +331,8 @@ # Do the call adr = rffi.cast(lltype.Signed, self.cpu.realloc_frame) - mc.push_std_frame() mc.load_imm(mc.RAW_CALL_REG, adr) mc.raw_call() - mc.pop_std_frame() # The result is stored back into SPP (= r31) mc.LGR(r.SPP, r.r2) @@ -595,11 +592,9 @@ # LGHI r0, ... (4 bytes) # sum -> (14 bytes) mc.write('\x00'*14) - mc.push_std_frame() mc.load_imm(r.RETURN, self._frame_realloc_slowpath) self.load_gcmap(mc, r.r1, gcmap) mc.raw_call() - mc.pop_std_frame() self.frame_depth_to_patch.append((patch_pos, mc.currpos())) diff --git a/rpython/jit/backend/zarch/opassembler.py b/rpython/jit/backend/zarch/opassembler.py --- a/rpython/jit/backend/zarch/opassembler.py +++ b/rpython/jit/backend/zarch/opassembler.py @@ -1034,10 +1034,8 @@ if basesize != 0: self.mc.AGHI(r.r2, l.imm(basesize)) - self.mc.push_std_frame() self.mc.load_imm(self.mc.RAW_CALL_REG, self.memcpy_addr) self.mc.raw_call() - self.mc.pop_std_frame() def emit_zero_array(self, op, arglocs, regalloc): base_loc, startindex_loc, length_loc, \ @@ -1090,9 +1088,7 @@ vloc = imm(0) self._store_force_index(self._find_nearby_operation(regalloc, +1)) # 'result_loc' is either r2, f0 or None - self.subject_op = op self.call_assembler(op, argloc, vloc, result_loc, r.r2) - self.subject_op = None self.mc.LARL(r.POOL, l.halfword(self.pool.pool_start - self.mc.get_relative_pos())) emit_call_assembler_i = _genop_call_assembler @@ -1106,13 +1102,11 @@ self.regalloc_mov(argloc, r.r2) self.mc.LG(r.r3, l.addr(THREADLOCAL_ADDR_OFFSET, r.SP)) - descr = self.subject_op.getdescr() - cb = callbuilder.CallBuilder(self, addr, [r.r2, r.r3], r.r2, descr) + cb = callbuilder.CallBuilder(self, addr, [r.r2, r.r3], r.r2, None) cb.emit() def _call_assembler_emit_helper_call(self, addr, arglocs, result_loc): - descr = self.subject_op.getdescr() - cb = callbuilder.CallBuilder(self, addr, arglocs, result_loc, descr) + cb = callbuilder.CallBuilder(self, addr, arglocs, result_loc, None) cb.emit() def _call_assembler_check_descr(self, value, tmploc): diff --git a/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py b/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py --- a/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py +++ b/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py @@ -1,10 +1,11 @@ from rpython.jit.backend.llsupport.test.ztranslation_test import TranslationTestCallAssembler from rpython.translator.translator import TranslationContext from rpython.config.translationoption import DEFL_GC -from rpython.jit.backend.zarch.arch import WORD -import sys class TestTranslationCallAssemblerZARCH(TranslationTestCallAssembler): - def _check_cbuilder(self, cbuilder): - pass + def _get_TranslationContext(self): + t = TranslationContext() + t.config.translation.gc = DEFL_GC # 'hybrid' or 'minimark' + t.config.translation.list_comprehension_operations = True + return t diff --git a/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py b/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py --- a/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py +++ b/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py @@ -1,19 +1,11 @@ from rpython.jit.backend.llsupport.test.ztranslation_test import TranslationRemoveTypePtrTest from rpython.translator.translator import TranslationContext from rpython.config.translationoption import DEFL_GC -from rpython.translator.platform import platform as compiler -if compiler.name == 'msvc': - _MSVC = True -else: - _MSVC = False - -class TestTranslationRemoveTypePtrX86(TranslationRemoveTypePtrTest): +class TestTranslationRemoveTypePtrZARCH(TranslationRemoveTypePtrTest): def _get_TranslationContext(self): t = TranslationContext() t.config.translation.gc = DEFL_GC # 'hybrid' or 'minimark' - if not _MSVC: - t.config.translation.gcrootfinder = 'asmgcc' t.config.translation.list_comprehension_operations = True t.config.translation.gcremovetypeptr = True return t _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit