| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Useful for builder classes and synthetic setters. The latter
are not inlined yet since they are static methods, i.e. they
don't use "this" as the object for IPUT.
Change-Id: I3d34156c3629b837a0a95ccc34a8aae3f4a636d5
|
|
|
|
|
| |
Bug: 13679511
Change-Id: I4c694a9d85727af8095091c42f1ac00a78ba4ea2
|
|
|
|
|
|
|
|
|
| |
CopyRegInfo should not change live/dirty flags of new registgers.
Otherwise, it will lead to incorrectly clobbering these live registers
that are not live actually, and then allocating them to another usage.
Change-Id: Ia9f055b33a11a6d70c0aca1a9fe8639ecfb09464
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Fix test failure message to reflect expected result.
Change-Id: I75ae3e882671aa429ecb17487188720c19ff4d32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are a few places in the Arm backend that expect to be
able to survive on a single temp register - in particular
entry code generation and argument passing. However, in the
case of a very large frame and floating point ld/st, the
existing code could end up using 2 temps.
In short, if there is a displacement overflow we try to use
indexed load/store instructions (slightly more efficient).
However, there are none for floating point - so we ended up
burning yet another register to construct a direct pointer.
This CL detects this case and doesn't try to use the indexed
load/store mechanism for floats.
Fix for https://code.google.com/p/android/issues/detail?id=67349
Change-Id: I1ea596ea660e4add89fd4fddb8cbf99a54fbd343
|
|
|
|
|
|
| |
Also improve special cases for ARM and add tests.
Change-Id: I06f575b9c7b547dbc431dbfadf2b927151fe16b9
|
|
|
|
|
|
|
|
|
|
|
|
| |
ART handles "mul-long by 1" as a special case and try to alloc a new pair
of regs through the EvalLocWide method and then put there the multiplicand
through the StoreValueWide method. But in case when both multiplicand and
multiplier are constants, it will not place correct values in a new reg pair
and result of calculations will be incorrect. The new solution uses the
only StoreValueWide method.
Change-Id: I3d6947737c92c5a12f2840003b17a427e31d288f
Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
|
|
|
|
| |
Change-Id: I0c3355b3c38b8830fffe2233ede7f6a35488b6fe
|
|
|
|
| |
Change-Id: Ieeef0318d140aad963f75e5d14938e5e7a9eec41
|
|
|
|
|
|
| |
Place a non-zero value in high 32bits.
Change-Id: I6ff42de39d56c4e4d6f44eb0001460ba6d58aa75
|
|
|
|
|
|
|
|
|
|
| |
Changed calls from System.gc to Runtime.getRuntime.gc where it was
necessary.
Required for:
https://android-review.googlesource.com/#/c/80253/
Change-Id: I2b0622585da54229a6248e95d40134b6d18598a9
|
|
|
|
|
|
|
|
|
| |
https://android-review.googlesource.com/#/c/38771/.
(The bug itself had already been fixed in art's compiler, because we always
run compiled code. I've also removed the JIT warmup code.)
Change-Id: I9d1d2b68f99dd06887146fdd05cb2e4537b4d5fc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The special-purpose code generators for simple methods that get
or set and instance field and then return require that no throws
are possible. The previous code incorrectly relied on the first
argument being a "this" pointer, and thus previously null-checked.
This did not take into account the possibility of a static method
which happened to pass an object referece as it's first argument.
The fix is to avoid making any assumptions, but rather rely
solely on the results of the null-check elimination pass which
will correctly recoginize the "this" case.
Change-Id: Icf001a10a19234cf3f4d87cf1baede93fdf0360c
|
|
|
|
| |
Change-Id: I11fd2db2badf7bd98e7866ca2155d8ef1e112408
|
|
Tightened up the conditions under which we can generate frameless
methods. Added and renamed test case. Added special handling for
identity functions.
Change-Id: I5b04ea222becefc151ef7ff6b255e58922ccd6f2
|