summaryrefslogtreecommitdiffstats
path: root/compiler/dex/quick/mips/codegen_mips.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-02-16 13:05:59 +0000
committerVladimir Marko <vmarko@google.com>2015-02-19 17:08:25 +0000
commit6ce3eba0f2e6e505ed408cdc40d213c8a512238d (patch)
tree5f7ced5c710ada776fa2e2624a05a0d414ed8b39 /compiler/dex/quick/mips/codegen_mips.h
parent1b472546657d31d38883373d8340d1441281a6a5 (diff)
downloadart-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.h4
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);