From bd36a3bcd6f81ffad4a62cacd0a54711e33fc5f2 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Fri, 17 Jan 2025 15:48:21 +0000 Subject: Set no write barrier for primitive types. Initialize the value properly, to not rely on an optimization to do it. Helps investigating performance when disabling optimizations in baseline compiler. Test: test.py Change-Id: If3c5d7cd85dd905a10d29081f571c78baae2888c --- compiler/optimizing/nodes.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'compiler') diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index c209ef5450..094bcfa876 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -6146,7 +6146,10 @@ class HInstanceFieldSet final : public HExpression<2> { declaring_class_def_index, dex_file) { SetPackedFlag(true); - SetPackedField(WriteBarrierKind::kEmitNotBeingReliedOn); + SetPackedField( + field_type == DataType::Type::kReference + ? WriteBarrierKind::kEmitNotBeingReliedOn + : WriteBarrierKind::kDontEmit); SetRawInputAt(0, object); SetRawInputAt(1, value); } @@ -6313,7 +6316,10 @@ class HArraySet final : public HExpression<3> { SetPackedFlag(value->GetType() == DataType::Type::kReference); SetPackedFlag(true); SetPackedFlag(false); - SetPackedField(WriteBarrierKind::kEmitNotBeingReliedOn); + SetPackedField( + value->GetType() == DataType::Type::kReference + ? WriteBarrierKind::kEmitNotBeingReliedOn + : WriteBarrierKind::kDontEmit); SetRawInputAt(0, array); SetRawInputAt(1, index); SetRawInputAt(2, value); @@ -7272,7 +7278,10 @@ class HStaticFieldSet final : public HExpression<2> { declaring_class_def_index, dex_file) { SetPackedFlag(true); - SetPackedField(WriteBarrierKind::kEmitNotBeingReliedOn); + SetPackedField( + field_type == DataType::Type::kReference + ? WriteBarrierKind::kEmitNotBeingReliedOn + : WriteBarrierKind::kDontEmit); SetRawInputAt(0, cls); SetRawInputAt(1, value); } -- cgit v1.2.3-59-g8ed1b