summaryrefslogtreecommitdiff
path: root/compiler/optimizing/builder.h
diff options
context:
space:
mode:
author Calin Juravle <calin@google.com> 2015-08-25 15:02:42 +0100
committer Calin Juravle <calin@google.com> 2015-09-17 12:26:28 +0100
commit5d01db1aa7634a012109d43e6403451b76de1daa (patch)
tree9032845624b975d13d28cdddd920e6b66ddae2db /compiler/optimizing/builder.h
parent9b2c10ebac8e024412b4cc43e6511d724a0fd345 (diff)
BuildInvoke refactor: extract String.init in its own code path
This makes it clear that we special handle String init. Getting rid of all `if (is_string_init)` improves readability into what we actually do and expect for strings. Change-Id: I9b4fba4c3ea89e0003c0704335cbe80e874d0e15
Diffstat (limited to 'compiler/optimizing/builder.h')
-rw-r--r--compiler/optimizing/builder.h30
1 files changed, 23 insertions, 7 deletions
diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h
index b0238dc5f8..ae452f2589 100644
--- a/compiler/optimizing/builder.h
+++ b/compiler/optimizing/builder.h
@@ -270,13 +270,29 @@ class HGraphBuilder : public ValueObject {
uintptr_t direct_method,
uintptr_t direct_code);
- bool SetupArgumentsAndAddInvoke(HInvoke* invoke,
- uint32_t number_of_vreg_arguments,
- uint32_t* args,
- uint32_t register_index,
- bool is_range,
- const char* descriptor,
- HClinitCheck* clinit_check);
+ bool SetupInvokeArguments(HInvoke* invoke,
+ uint32_t number_of_vreg_arguments,
+ uint32_t* args,
+ uint32_t register_index,
+ bool is_range,
+ const char* descriptor,
+ size_t start_index,
+ size_t* argument_index);
+
+ bool HandleInvoke(HInvoke* invoke,
+ uint32_t number_of_vreg_arguments,
+ uint32_t* args,
+ uint32_t register_index,
+ bool is_range,
+ const char* descriptor,
+ HClinitCheck* clinit_check);
+
+ bool HandleStringInit(HInvoke* invoke,
+ uint32_t number_of_vreg_arguments,
+ uint32_t* args,
+ uint32_t register_index,
+ bool is_range,
+ const char* descriptor);
HClinitCheck* ProcessClinitCheckForInvoke(
uint32_t dex_pc,