summaryrefslogtreecommitdiffstats
path: root/compiler/dex/mir_graph.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/mir_graph.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/mir_graph.h')
-rw-r--r--compiler/dex/mir_graph.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/compiler/dex/mir_graph.h b/compiler/dex/mir_graph.h
index 020136c3d8..d74e7b6a97 100644
--- a/compiler/dex/mir_graph.h
+++ b/compiler/dex/mir_graph.h
@@ -498,19 +498,19 @@ class ChildBlockIterator {
* more efficient invoke code generation.
*/
struct CallInfo {
- int num_arg_words; // Note: word count, not arg count.
- RegLocation* args; // One for each word of arguments.
- RegLocation result; // Eventual target of MOVE_RESULT.
+ size_t num_arg_words; // Note: word count, not arg count.
+ RegLocation* args; // One for each word of arguments.
+ RegLocation result; // Eventual target of MOVE_RESULT.
int opt_flags;
InvokeType type;
uint32_t dex_idx;
- uint32_t index; // Method idx for invokes, type idx for FilledNewArray.
+ uint32_t index; // Method idx for invokes, type idx for FilledNewArray.
uintptr_t direct_code;
uintptr_t direct_method;
- RegLocation target; // Target of following move_result.
+ RegLocation target; // Target of following move_result.
bool skip_this;
bool is_range;
- DexOffset offset; // Offset in code units.
+ DexOffset offset; // Offset in code units.
MIR* mir;
};