Change invoke-object-init to /range form
The invoke-object-init instruction pretends to be a regular invoke
that only knows how to call Object.<init>. As such it always takes
one argument, and if we use the /range version we can specify the
"this" register with 16 bits instead of only 4.
Bug 3486699
Change-Id: I9ee4700c6935beee1dcbaa583b57befd33641414
diff --git a/vm/compiler/Dataflow.c b/vm/compiler/Dataflow.c
index ca72a68..38f822c 100644
--- a/vm/compiler/Dataflow.c
+++ b/vm/compiler/Dataflow.c
@@ -750,7 +750,7 @@
// EF OP_EXECUTE_INLINE_RANGE
DF_FORMAT_3RC,
- // F0 OP_INVOKE_OBJECT_INIT
+ // F0 OP_INVOKE_OBJECT_INIT_RANGE
DF_NOP,
// F1 OP_RETURN_VOID_BARRIER
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 02e6f87..16fddaf 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -3266,7 +3266,7 @@
genTrap(cUnit, mir->offset, pcrLabel);
break;
}
- case OP_INVOKE_OBJECT_INIT: {
+ case OP_INVOKE_OBJECT_INIT_RANGE: {
genInterpSingleStep(cUnit, mir);
break;
}