[pypy-commit] pypy default: threadlocalref get
fijal
pypy.commits at gmail.com
Wed Jul 24 10:26:04 EDT 2019
Author: fijal
Branch:
Changeset: r97021:6885d94b89cf
Date: 2019-07-24 16:25 +0200
http://bitbucket.org/pypy/pypy/changeset/6885d94b89cf/
Log: threadlocalref get
diff --git a/rpython/jit/backend/aarch64/opassembler.py b/rpython/jit/backend/aarch64/opassembler.py
--- a/rpython/jit/backend/aarch64/opassembler.py
+++ b/rpython/jit/backend/aarch64/opassembler.py
@@ -297,6 +297,16 @@
arg, res = arglocs
self.mc.FSQRT_dd(res.value, arg.value)
+ def threadlocalref_get(self, op, arglocs):
+ res_loc, = arglocs
+ ofs_loc = self.imm(op.getarg(1).getint())
+ calldescr = op.getdescr()
+ ofs = self.saved_threadlocal_addr
+ self.load_reg(self.mc, res_loc, r.sp, ofs)
+ scale = get_scale(calldescr.get_result_size())
+ signed = (calldescr.is_result_signed() != 0)
+ self._load_from_mem(res_loc, res_loc, ofs_loc, scale, signed)
+
emit_op_float_lt = gen_float_comp_op('float_lt', c.VFP_LT)
emit_op_float_le = gen_float_comp_op('float_le', c.VFP_LE)
emit_op_float_eq = gen_float_comp_op('float_eq', c.EQ)
diff --git a/rpython/jit/backend/aarch64/regalloc.py b/rpython/jit/backend/aarch64/regalloc.py
--- a/rpython/jit/backend/aarch64/regalloc.py
+++ b/rpython/jit/backend/aarch64/regalloc.py
@@ -506,6 +506,10 @@
res = self.force_allocate_reg(op)
return [loc1, res]
+ def _prepare_threadlocalref_get(self, op):
+ res_loc = self.force_allocate_reg(op)
+ return [res_loc]
+
prepare_op_convert_float_bytes_to_longlong = prepare_unary
prepare_op_convert_longlong_bytes_to_float = prepare_unary
@@ -583,10 +587,10 @@
args = self._prepare_op_math_sqrt(op)
self.assembler.math_sqrt(op, args)
return
- #elif oopspecindex == EffectInfo.OS_THREADLOCALREF_GET:
- # args = self._prepare_threadlocalref_get(op, fcond)
- # self.perform_extra(op, args, fcond)
- # return
+ elif oopspecindex == EffectInfo.OS_THREADLOCALREF_GET:
+ args = self._prepare_threadlocalref_get(op)
+ self.assembler.threadlocalref_get(op, args)
+ return
#elif oopspecindex == EffectInfo.OS_MATH_READ_TIMESTAMP:
# ...
return self._prepare_call(op)
More information about the pypy-commit
mailing list