History log of /art/runtime/arch/mips64/quick_entrypoints_mips64.S
Revision Date Author Comments
fc6898769ae1ef91ec3e41c0a273401213cb82cd 26-Apr-2016 Andreas Gampe <agampe@google.com> ART: Log all monitor operations to systrace

Add a VLOG option ("-verbose:systrace-locks") to log all monitor
operations to systrace. This requires non-fastpath thread
entrypoints, and ATRACE tags for locking and unlocking.

Do a bit of cleanup to the entrypoint initialization to share
common setup.

Bug: 28423466
Change-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3
59028d90d51a800bcea8be354d77d7be924da3a0 29-Mar-2016 Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> MIPS: Improving art_quick_imt_conflict_trampoline

This is fixing stub_test for MIPS32 and MIPS64. This is follow up
change for Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7.

Change-Id: I3c53ef690aff49d7cf9ad3de3aaed9a3d2e1c6b9
3bc13817a19e36f3833bb44624ef86800892eaad 22-Mar-2016 Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> Implement on-stack replacement for MIPS32 and MIPS64

Change-Id: I4e589f0597b597adff95e1289f20deb2eab97e9b
10d4c08c0ea9df0a85a11e1c77974df24078c0ec 24-Feb-2016 Hiroshi Yamauchi <yamauchi@google.com> Assembly region TLAB allocation fast path for arm.

This is for the CC collector.

Share the common fast path code with the tlab fast path code.

Speedup (on N5):
BinaryTrees: 2291 -> 902 ms (-60%)
MemAllocTest: 2137 -> 1845 ms (-14%)

Bug: 9986565
Bug: 12687968

Change-Id: Ica63094ec2f85eaa4fd04d202a20090399275d85
cf283daf579e9eda586f312c3fc89444601e2525 20-Jan-2016 Chris Larsen <chris.larsen@imgtec.com> MIPS32: java.lang.Thread, and java.lang.String intrinsics:

- Thread java.lang.Thread.currentThread()
- int java.lang.String.compareTo(String anotherString)
- int java.lang.String.indexOf(int ch)
- int java.lang.String.indexOf(int ch, int fromIndex)
- java.lang.StringFactory.newStringFromBytes(byte[] data,
int high,
int offset,
int byteCount)
- java.lang.StringFactory.newStringFromChars(int offset,
int charCount,
char[] data)
- java.lang.StringFactory.newStringFromString(String toCopy)

Change-Id: I96a06ff81e1e3bf18d45760282356854efaf4945
982a9a818915a0a03a1b6ac6f05e01934d9d27e8 21-Dec-2015 Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> Rosalloc fast path in assembly for MIPS64

Change-Id: I93c49a8b45365aacfd7825bdd841f39d7059a967
a7a4759946d9f11c88dc108b2b6a9518ce9c1e18 24-Nov-2015 Nicolas Geoffray <ngeoffray@google.com> Revert "lambda: Add support for invoke-interface for boxed innate lambdas"

955-lambda is flaky

Bug: 24618608
Bug: 25107649

This reverts commit 457e874459ae638145cab6d572e34d48480e39d2.

(cherry picked from commit 3a0909248e04b22c3981cbf617bc2502ed5b6380)

Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
3a0909248e04b22c3981cbf617bc2502ed5b6380 24-Nov-2015 Nicolas Geoffray <ngeoffray@google.com> Revert "lambda: Add support for invoke-interface for boxed innate lambdas"

955-lambda is flaky

Bug: 24618608
Bug: 25107649

This reverts commit 457e874459ae638145cab6d572e34d48480e39d2.

Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
457e874459ae638145cab6d572e34d48480e39d2 23-Oct-2015 Igor Murashkin <iam@google.com> lambda: Add support for invoke-interface for boxed innate lambdas

Lambda closures created with the 'create-lambda' instruction
(termed "innate lambdas") can be turned into an object with 'box-lambda'.

This CL enables support for those kinds of lambdas to work with
'invoke-interface' by generating a proxy class for the lambda.

Note: MIPS32/64 support not included.

Bug: 24618608
Bug: 25107649
Change-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb
9701c2ee2dde033e2269dcfc592a09f21151e97e 05-Sep-2015 Chris Larsen <chris.larsen@imgtec.com> MIPS64: Implement intrinsics from java.lang.String:

- char charAt(int index)
- int compareTo(String anotherString)
- int indexOf(int ch)
- int indexOf(int ch, int fromIndex)
- String(byte[] bytes)
- String(char[] value)
- String(String original)

Change-Id: I9c309b62580b42ae08a09cb1c2b4ebd1a203c5d2
e460d1df1f789c7c8bb97024a8efbd713ac175e9 29-Sep-2015 Calin Juravle <calin@google.com> Revert "Revert "Support unresolved fields in optimizing"

The CL also changes the calling convetion for 64bit static field set
to use kArg2 instead of kArg1. This allows optimizing to keep
the asumptions:
- arm pairs are always of form (even_reg, odd_reg)
- ecx_edx is not used as a register on x86.

This reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1.

Change-Id: I93159917565824084abc96775f31be1a4249f2f3
dbf056d38dddda10c5f409e3155c7b4211183f63 25-Sep-2015 Andreas Gampe <agampe@google.com> ART: Move code from RA to T9 in Mips64 longjump

Do not use the return address. It should not be clobbered as we
may need it, e.g., for single-frame deopt.

Change-Id: I401d7b0034bc4e210bda231ec78ee31242053b36
0747466fca310eedea5fc49e37d54f240a0b3c0f 25-Aug-2015 Sebastien Hertz <shertz@google.com> Revert "Revert "Fix deoptimization with pending exception""

This reverts commit 6e2d5747d00697a25251d25dd33b953e54709507.

Fixes the deoptimization path from compiled code (generated by the
Optimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode.
This wrapper, called through the matching assembler stub
art_quick_deoptimize_from_compiled_code, pushes the deoptimization
context just before deoptimizing the stack.

Bug: 23371176
Bug: 19944235
Change-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e
6306921722283d2b0f8aac01883ad83215d6e864 22-Aug-2015 Man Cao <manc@google.com> Add a missing reader barrier in entrypoint stub

Also refactored some comments.

Change-Id: I5c50f487bf9d71f1be5f6c8814bf039993fc1267
1aee900d5a0b3a8d78725a7551356bda0d8554e1 15-Jul-2015 Man Cao <manc@google.com> Add read barrier support to the entrypoints.

Also remove "THIS_LOAD_REQUIRES_READ_BARRIER" since reading
an ArtMethod* no longer needs read barrier.

stub_test should also work with read barriers now.

Change-Id: I3fba18042de2f867a18dbdc38519986212bd9769
3031c8da0c5009183f770b005c245f9bf2a4d01b 14-Jul-2015 Andreas Gampe <agampe@google.com> ART: Remove art_quick_invoke_interface_trampoline

The function has only been used by the IMT conflict resolution
trampoline for a while. Merge the two, which saves a branch.

Change-Id: I2f8c9204adf839ddc5459cc04e70d98f858110a1
0b95bf17e077b9d6c52514fec5ed122017111edb 24-Jun-2015 Mathieu Chartier <mathieuc@google.com> Fix imt conflict trampoline for mips64

Changed lwu to ld

Bug: 21815962
Change-Id: I137e871d9c00f83cd5efc9d3a87fa05e84dc5d23
9ad40fda952e854c4b571df36e46c834e209cd4c 13-Jun-2015 Mathieu Chartier <mathieuc@google.com> Change mips64 lwu to ld for loading caller ArtMethod*

Bug: 21815962
Change-Id: Id589f4a49349d817d3dc9128109048292fe0ed33
618fdff93cec53c0ed234898f2d42f38a25e3b66 10-Jun-2015 Lazar Trsic <Lazar.Trsic@imgtec.com> [MIPS] Fix method tracing for mips64

Reg $v0 is being clobbered on using
SETUP_REFS_ONLY_CALLEE_SAVE_FRAME inside instrumentation_exit()
trampoline, when falling through from instrumentation_entry().

To fix, use $t1 for ArtMethod* fetching inside SETUP_ macros.

Also fix some unrelated comment errors.

Bug: 21555893

(cherry picked from commit 84bc06e30ba12c3ff07e577c52b63b9df162af7e)

Change-Id: I4ab169f75988c4f0d924416a30196f21c1a043a3
84bc06e30ba12c3ff07e577c52b63b9df162af7e 10-Jun-2015 Lazar Trsic <Lazar.Trsic@imgtec.com> [MIPS] Fix method tracing for mips64

Reg $v0 is being clobbered on using
SETUP_REFS_ONLY_CALLEE_SAVE_FRAME inside instrumentation_exit()
trampoline, when falling through from instrumentation_entry().

To fix, use $t1 for ArtMethod* fetching inside SETUP_ macros.

Also fix some unrelated comment errors.

Change-Id: I4ab169f75988c4f0d924416a30196f21c1a043a3
bfa5eb6e8d15ea73a36f8df449630f285a91e995 30-May-2015 Hiroshi Yamauchi <yamauchi@google.com> Add heap poisoning support to the entrypoints.

In preparation for full compiler/managed-code support.

Enable stub_test with heap poisoning.

Bug: 12687968
Change-Id: I79fc54ce6386c0a1eb9621759bb4cc23bc393a75
3d21bdf8894e780d349c481e5c9e29fe1556051c 22-Apr-2015 Mathieu Chartier <mathieuc@google.com> Move mirror::ArtMethod to native

Optimizing + quick tests are passing, devices boot.

TODO: Test and fix bugs in mips64.

Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.
Some of the savings are from removal of virtual methods and direct
methods object arrays.

Bug: 19264997

(cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33)

Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d

Fix some ArtMethod related bugs

Added root visiting for runtime methods, not currently required
since the GcRoots in these methods are null.

Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes
--trace run-tests 005, 044.

Fixed optimizing compiler bug where we used a normal stack location
instead of double on ARM64, this fixes the debuggable tests.

TODO: Fix JDWP tests.

Bug: 19264997

Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3

ART: Fix casts for 64-bit pointers on 32-bit compiler.

Bug: 19264997
Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457

Fix JDWP tests after ArtMethod change

Fixes Throwable::GetStackDepth for exception event detection after
internal stack trace representation change.

Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of
proxy method.

Bug: 19264997
Change-Id: I363e293796848c3ec491c963813f62d868da44d2

Fix accidental IMT and root marking regression

Was always using the conflict trampoline. Also included fix for
regression in GC time caused by extra roots. Most of the regression
was IMT.

Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to
detached thread.

EvaluateAndApplyChanges:
From ~2500 -> ~1980
GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots

Bug: 19264997
Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0

Fix bogus image test assert

Previously we were comparing the size of the non moving space to
size of the image file.

Now we properly compare the size of the image space against the size
of the image file.

Bug: 19264997
Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a

[MIPS64] Fix art_quick_invoke_stub argument offsets.

ArtMethod reference's size got bigger, so we need to move other args
and leave enough space for ArtMethod* and 'this' pointer.

This fixes mips64 boot.

Bug: 19264997
Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
80f7a57e2aec7515c7a54c4b5c9e703a66623fea 02-Jun-2015 Nikola Veljkovic <Nikola.Veljkovic@imgtec.com> [MIPS64] Fix art_quick_invoke_stub argument offsets.

ArtMethod reference's size got bigger, so we need to move other args
and leave enough space for ArtMethod* and 'this' pointer.

This fixes mips64 boot.

Bug: 19264997
Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
e401d146407d61eeb99f8d6176b2ac13c4df1e33 22-Apr-2015 Mathieu Chartier <mathieuc@google.com> Move mirror::ArtMethod to native

Optimizing + quick tests are passing, devices boot.

TODO: Test and fix bugs in mips64.

Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.
Some of the savings are from removal of virtual methods and direct
methods object arrays.

Bug: 19264997
Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
8ea18d0f066f63fa4e5d154f14327468bf288e2b 26-May-2015 Nicolas Geoffray <ngeoffray@google.com> Pass the dex method index directly to interface trampoline.

This avoids computing the dex pc and re-finding the method
index again. I have kept the code for kDebugBuild.

Change-Id: Icd60e0deade755e32b54021c0875b1af592b8c3e
7ea6a170486d81b127e69673cd1020c4db628c93 19-May-2015 Nicolas Geoffray <ngeoffray@google.com> Don't hardcode the location of the caller.

This is to avoid shooting ourselves in the foot when
dealing with inlined frames. Instead, use common methods
for fetching the caller and its dex pc.

Change-Id: I3467a7b50cf163022d332e80356f0aab747de252
04568815cbfa18f0fa8b8d751fb83a1089909660 23-Apr-2015 Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> Fix stub_test for Mips64

Force ENTRY macro to load GP. Instead .cpload (used for o32 abi,
not working for n64) use .cpsetup to set up GP and save previous
GP value.

Fix expectations in GetSet32Static.

Change-Id: Ie97e32fa2fee7a6e8bae6bc36e78976b8be62b79
8223b809a527c15b68f7c5c462d4c55c1335c7a7 29-Apr-2015 Douglas Leung <douglas.leung@imgtec.com> Fix mips64 bugs.

There are 2 bugs here. First is Method* is computed twice. The
second is the wrong runtime callee save frame offset is being
used in computing Method*.

Change-Id: Ica23585a08be480a54d0cdd17eeca8027061b3f3
e85e123a2dff7d4b20266183a0583f9364a8b824 28-Apr-2015 Vladimir Marko <vmarko@google.com> ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points.

Missing from
https://android-review.googlesource.com/79174

Change-Id: If182b73824edfd4639f645612b2f7b67c1f31bef
5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92 20-Apr-2015 Vladimir Marko <vmarko@google.com> Remove ArtMethod* parameter from dex cache entry points.

Load the ArtMethod* using an optimized stack walk instead.
This reduces the size of the generated code.

Three of the entry points are called only from a slow-path
and the fourth (InitializeTypeAndVerifyAccess) is rare and
already slow enough that the one or two extra loads
(depending on whether we already have the ArtMethod* in a
register) are insignificant. And as we're starting to use
PC-relative addressing of the dex cache arrays (already
done by Quick for the boot image), having the ArtMethod* in
a register becomes less likely anyway.

Change-Id: Ib19b9d204e355e13bf386662a8b158178bf8ad28
2cebb24bfc3247d3e9be138a3350106737455918 22-Apr-2015 Mathieu Chartier <mathieuc@google.com> Replace NULL with nullptr

Also fixed some lines that were too long, and a few other minor
details.

Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
bb87e0f1a52de656bc77cb01cb887e51a0e5198b 03-Apr-2015 Mathieu Chartier <mathieuc@google.com> Refactor and improve GC root handling

Changed GcRoot to use compressed references. Changed root visiting to
use virtual functions instead of function pointers. Changed root visting
interface to be an array of roots instead of a single root at a time.
Added buffered root marking helper to avoid dispatch overhead.

Root marking seems a bit faster on EvaluateAndApplyChanges due to batch
marking. Pause times unaffected.

Mips64 is untested but might work, maybe.

Before:
MarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us

After:
MarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us

Bug: 19264997

Change-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca
f96e8bdf47cfcbecd8ad8ebceb765e5a257ca143 27-Mar-2015 Douglas Leung <douglas.leung@imgtec.com> Fix 099-vmdebug and 802-deoptimization art tests for Mips.

There are 2 bugs that are causing these 2 tests to fail the same way.
The first one is we should be using $t9 for function calls so $gp can
be calculated correctly. The second bug is there can't be a gap between
the quick frame and the callee save frame, otherwise the WalkStack()
function will get confused and crash.

Bug: 19003184
Change-Id: I3c545ce18268deb73150fca2a7d7a798540f1cf2
6ea651f0f4c7de4580beb2e887d86802c1ae0738 24-Feb-2015 Maja Gagic <maja.gagic@imgtec.com> Initial support for quick compiler on MIPS64r6.

Change-Id: I6f43027b84e4a98ea320cddb972d9cf39bf7c4f8
126d65952a03b3e44d5021208673c01920a982a4 03-Mar-2015 Nicolas Geoffray <ngeoffray@google.com> Fix generic JNI stubs to not discard the Java native frame.

Change-Id: Ic856b442fdde5ce91673fc5856eb0dfc84c75d28
6461d19fe1132ec25b92d008c1a7b57f5ecc134b 31-Jan-2015 Douglas Leung <douglas.leung@imgtec.com> Add Mips64 art_quick_proxy_invoke_handler assembly.

This fixes a crash during boot.

Change-Id: Ia69f3a38757355d1c33095ab59ce659a9b4ef737
cc7c39d747f5802282adcc51ffe44405f116f84b 31-Jan-2015 Andreas Gampe <agampe@google.com> ART: Add Mips64 resolution trampoline assembly

Add the resolution trampoline assembly.

Change-Id: I45306f5913c6f57f46b97cb87fa321ae16642292
1a5c40672783fac98aca5a04ac798a0a0014de65 15-Jan-2015 Andreas Gampe <agampe@google.com> ART: Mips64 runtime support

Interpret-only Mips64 runtime support.

Change-Id: Iee22d0c8c77105d9b2f03a67dc4e09957fe0ab0a