summaryrefslogtreecommitdiff
path: root/compiler/utils/assembler.cc
diff options
context:
space:
mode:
author Yevgeny Rouban <yevgeny.y.rouban@intel.com> 2014-03-18 15:55:16 +0700
committer Ian Rogers <irogers@google.com> 2014-03-26 15:06:23 -0700
commitd3a2dfad0e1231b354e4bf77b67a4e179fa0e837 (patch)
tree1f439e9a466aeb91c449fb81ba2417af2d46ff6f /compiler/utils/assembler.cc
parent223efbe5164f6fe83cf04e7f9121adb29b8dd231 (diff)
Reuse promoted register temporarily
AtomicLong (x86) is implemented as an intrinsic, which uses the cmpxchng8b instruction. This instruction requires 4 physical registers plus 2 more used for the memory operand. On x86 we have only 4 temporaries. The code tried to solve this by using MarkTemp utility, but this was not meant to be used with promoted registers. The problem is that MarkTemp does not spill anything and as a result we can lose VR. If the registers are promoted this patch just reuses the values pushed on the stack. Change-Id: Ifec9183e2483cf704d0d1166a1004a9aa07b4f1d Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com> Signed-off-by: Yevgeny Rouban <yevgeny.y.rouban@intel.com>
Diffstat (limited to 'compiler/utils/assembler.cc')
0 files changed, 0 insertions, 0 deletions