summaryrefslogtreecommitdiff
path: root/runtime/quick/inline_method_analyser.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-05-06 14:09:04 +0100
committer Vladimir Marko <vmarko@google.com> 2015-05-06 15:40:50 +0100
commitd5f1005da7599f149b1332402c9791ef2acb8c42 (patch)
tree7e6015d8aa0c5b5c0b69c77f93c4d08220c34119 /runtime/quick/inline_method_analyser.cc
parent9cce14f56a59bbce52254ffc50ea6817fd94d8dd (diff)
Quick: Inline synthetic accessors generated by jack.
While javac names synthetic accessors "access$nnn", jack names them "-getN", "-putN" and "-wrapN". For simplicity, treat all methods starting with "-" as synthetic accessors. Bug: 20873367 Change-Id: I67990a6c2ef1d25dafe460ef70143a113bb5b7da
Diffstat (limited to 'runtime/quick/inline_method_analyser.cc')
-rw-r--r--runtime/quick/inline_method_analyser.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/quick/inline_method_analyser.cc b/runtime/quick/inline_method_analyser.cc
index 9cf4b16582..1c404ff141 100644
--- a/runtime/quick/inline_method_analyser.cc
+++ b/runtime/quick/inline_method_analyser.cc
@@ -134,7 +134,10 @@ bool InlineMethodAnalyser::AnalyseMethodCode(verifier::MethodVerifier* verifier,
bool InlineMethodAnalyser::IsSyntheticAccessor(MethodReference ref) {
const DexFile::MethodId& method_id = ref.dex_file->GetMethodId(ref.dex_method_index);
const char* method_name = ref.dex_file->GetMethodName(method_id);
- return strncmp(method_name, "access$", strlen("access$")) == 0;
+ // javac names synthetic accessors "access$nnn",
+ // jack names them "-getN", "-putN", "-wrapN".
+ return strncmp(method_name, "access$", strlen("access$")) == 0 ||
+ strncmp(method_name, "-", strlen("-")) == 0;
}
bool InlineMethodAnalyser::AnalyseReturnMethod(const DexFile::CodeItem* code_item,