diff options
author | Vladimir Marko <vmarko@google.com> | 2015-02-16 13:05:59 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2015-02-19 17:08:25 +0000 |
commit | 6ce3eba0f2e6e505ed408cdc40d213c8a512238d (patch) | |
tree | 5f7ced5c710ada776fa2e2624a05a0d414ed8b39 /compiler/dex/quick/mips/codegen_mips.h | |
parent | 1b472546657d31d38883373d8340d1441281a6a5 (diff) | |
download | art-6ce3eba0f2e6e505ed408cdc40d213c8a512238d.tar.gz art-6ce3eba0f2e6e505ed408cdc40d213c8a512238d.tar.bz2 art-6ce3eba0f2e6e505ed408cdc40d213c8a512238d.zip |
Add suspend checks to special methods.
Generate suspend checks at the beginning of special methods.
If we need to call to runtime, go to the slow path where we
create a simplified but valid frame, spill all arguments,
call art_quick_test_suspend, restore necessary arguments and
return back to the fast path. This keeps the fast path
overhead to a minimum.
Bug: 19245639
Change-Id: I3de5aee783943941322a49c4cf2c4c94411dbaa2
Diffstat (limited to 'compiler/dex/quick/mips/codegen_mips.h')
-rw-r--r-- | compiler/dex/quick/mips/codegen_mips.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/dex/quick/mips/codegen_mips.h b/compiler/dex/quick/mips/codegen_mips.h index a37fe40cfa..e1b43ca848 100644 --- a/compiler/dex/quick/mips/codegen_mips.h +++ b/compiler/dex/quick/mips/codegen_mips.h @@ -141,7 +141,9 @@ class MipsMir2Lir FINAL : public Mir2Lir { void GenDivZeroCheckWide(RegStorage reg); void GenEntrySequence(RegLocation* ArgLocs, RegLocation rl_method); void GenExitSequence(); - void GenSpecialExitSequence(); + void GenSpecialExitSequence() OVERRIDE; + void GenSpecialEntryForSuspend() OVERRIDE; + void GenSpecialExitForSuspend() OVERRIDE; void GenFusedFPCmpBranch(BasicBlock* bb, MIR* mir, bool gt_bias, bool is_double); void GenFusedLongCmpBranch(BasicBlock* bb, MIR* mir); void GenSelect(BasicBlock* bb, MIR* mir); |