summaryrefslogtreecommitdiff
path: root/startop/view_compiler/dex_testcase_generator.cc
diff options
context:
space:
mode:
authorEric Holk <eholk@google.com>2018-11-08 16:40:16 -0800
committerEric Holk <eholk@google.com>2018-11-13 13:47:29 -0800
commitb392758a657e4dcedfe3b3823cbfe30dbbf352e2 (patch)
tree8d2471741f13187bc352ca97dd48bbf0dc00fc87 /startop/view_compiler/dex_testcase_generator.cc
parent3cc4afc610ad418cb495a4f3072abc6b4fea51ba (diff)
[view_compiler] DexBuilder: Add support for new and calling constructors
This change also includes support for calling methods with more that one argument. In fact, we can go up to four. Bug: 111895153 Change-Id: I49472171cefcf57cdfce2ac4d41646ed4df29074
Diffstat (limited to 'startop/view_compiler/dex_testcase_generator.cc')
-rw-r--r--startop/view_compiler/dex_testcase_generator.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/startop/view_compiler/dex_testcase_generator.cc b/startop/view_compiler/dex_testcase_generator.cc
index 063a0cf6df7e..e2bf43bc1d0c 100644
--- a/startop/view_compiler/dex_testcase_generator.cc
+++ b/startop/view_compiler/dex_testcase_generator.cc
@@ -53,6 +53,19 @@ void GenerateSimpleTestCases(const string& outdir) {
}
return5.Encode();
+ // int return5() { return 5; }
+ auto integer_type{TypeDescriptor::FromClassname("java.lang.Integer")};
+ auto returnInteger5{cbuilder.CreateMethod("returnInteger5", Prototype{integer_type})};
+ [&](MethodBuilder& method) {
+ Value five{method.MakeRegister()};
+ method.BuildConst4(five, 5);
+ Value object{method.MakeRegister()};
+ method.BuildNew(
+ object, integer_type, Prototype{TypeDescriptor::Void(), TypeDescriptor::Int()}, five);
+ method.BuildReturn(object, /*is_object=*/true);
+ }(returnInteger5);
+ returnInteger5.Encode();
+
// // int returnParam(int x) { return x; }
auto returnParam{cbuilder.CreateMethod("returnParam",
Prototype{TypeDescriptor::Int(), TypeDescriptor::Int()})};