[vm] Unify native fields getters and setters (2)

No need to repeat predefined native fields in
IsRecognizedMethodForFlowGraph.

TEST=CQ, this is a simple refactoring.

Change-Id: I8079f1f08aaa67fbf09cf312608fa34d750a0abc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/233800
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index b030aad..4ebaff1 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -791,6 +791,39 @@
   return body;
 }
 
+#define LOAD_NATIVE_FIELD(V)                                                   \
+  V(ByteDataViewLength, TypedDataBase_length)                                  \
+  V(ByteDataViewOffsetInBytes, TypedDataView_offset_in_bytes)                  \
+  V(ByteDataViewTypedData, TypedDataView_typed_data)                           \
+  V(GrowableArrayLength, GrowableObjectArray_length)                           \
+  V(ImmutableArrayLength, Array_length)                                        \
+  V(ImmutableLinkedHashBase_getData, ImmutableLinkedHashBase_data)             \
+  V(ImmutableLinkedHashBase_getIndex, ImmutableLinkedHashBase_index)           \
+  V(LinkedHashBase_getData, LinkedHashBase_data)                               \
+  V(LinkedHashBase_getDeletedKeys, LinkedHashBase_deleted_keys)                \
+  V(LinkedHashBase_getHashMask, LinkedHashBase_hash_mask)                      \
+  V(LinkedHashBase_getIndex, LinkedHashBase_index)                             \
+  V(LinkedHashBase_getUsedData, LinkedHashBase_used_data)                      \
+  V(ObjectArrayLength, Array_length)                                           \
+  V(TypedDataViewOffsetInBytes, TypedDataView_offset_in_bytes)                 \
+  V(TypedDataViewTypedData, TypedDataView_typed_data)                          \
+  V(TypedListBaseLength, TypedDataBase_length)                                 \
+  V(WeakProperty_getKey, WeakProperty_key)                                     \
+  V(WeakProperty_getValue, WeakProperty_value)                                 \
+  V(WeakReference_getTarget, WeakReference_target)
+
+#define STORE_NATIVE_FIELD(V)                                                  \
+  V(LinkedHashBase_setData, LinkedHashBase_data)                               \
+  V(LinkedHashBase_setIndex, LinkedHashBase_index)                             \
+  V(WeakProperty_setKey, WeakProperty_key)                                     \
+  V(WeakProperty_setValue, WeakProperty_value)                                 \
+  V(WeakReference_setTarget, WeakReference_target)
+
+#define STORE_NATIVE_FIELD_NO_BARRIER(V)                                       \
+  V(LinkedHashBase_setDeletedKeys, LinkedHashBase_deleted_keys)                \
+  V(LinkedHashBase_setHashMask, LinkedHashBase_hash_mask)                      \
+  V(LinkedHashBase_setUsedData, LinkedHashBase_used_data)
+
 bool FlowGraphBuilder::IsRecognizedMethodForFlowGraph(
     const Function& function) {
   const MethodRecognizer::Kind kind = function.recognized_kind();
@@ -867,44 +900,22 @@
     case MethodRecognizer::kObjectEquals:
     case MethodRecognizer::kStringBaseLength:
     case MethodRecognizer::kStringBaseIsEmpty:
-    case MethodRecognizer::kGrowableArrayLength:
-    case MethodRecognizer::kObjectArrayLength:
-    case MethodRecognizer::kImmutableArrayLength:
-    case MethodRecognizer::kTypedListBaseLength:
-    case MethodRecognizer::kByteDataViewLength:
-    case MethodRecognizer::kByteDataViewOffsetInBytes:
-    case MethodRecognizer::kTypedDataViewOffsetInBytes:
-    case MethodRecognizer::kByteDataViewTypedData:
-    case MethodRecognizer::kTypedDataViewTypedData:
     case MethodRecognizer::kClassIDgetID:
     case MethodRecognizer::kGrowableArrayAllocateWithData:
     case MethodRecognizer::kGrowableArrayCapacity:
     case MethodRecognizer::kListFactory:
     case MethodRecognizer::kObjectArrayAllocate:
     case MethodRecognizer::kCopyRangeFromUint8ListToOneByteString:
-    case MethodRecognizer::kLinkedHashBase_getIndex:
-    case MethodRecognizer::kLinkedHashBase_setIndex:
-    case MethodRecognizer::kLinkedHashBase_getData:
-    case MethodRecognizer::kLinkedHashBase_setData:
-    case MethodRecognizer::kLinkedHashBase_getHashMask:
-    case MethodRecognizer::kLinkedHashBase_setHashMask:
-    case MethodRecognizer::kLinkedHashBase_getUsedData:
-    case MethodRecognizer::kLinkedHashBase_setUsedData:
-    case MethodRecognizer::kLinkedHashBase_getDeletedKeys:
-    case MethodRecognizer::kLinkedHashBase_setDeletedKeys:
-    case MethodRecognizer::kImmutableLinkedHashBase_getData:
-    case MethodRecognizer::kImmutableLinkedHashBase_getIndex:
     case MethodRecognizer::kImmutableLinkedHashBase_setIndexStoreRelease:
-    case MethodRecognizer::kWeakProperty_getKey:
-    case MethodRecognizer::kWeakProperty_setKey:
-    case MethodRecognizer::kWeakProperty_getValue:
-    case MethodRecognizer::kWeakProperty_setValue:
-    case MethodRecognizer::kWeakReference_getTarget:
-    case MethodRecognizer::kWeakReference_setTarget:
     case MethodRecognizer::kFfiAbi:
     case MethodRecognizer::kReachabilityFence:
     case MethodRecognizer::kUtf8DecoderScan:
     case MethodRecognizer::kHas63BitSmis:
+#define CASE(method, slot) case MethodRecognizer::k##method:
+      LOAD_NATIVE_FIELD(CASE)
+      STORE_NATIVE_FIELD(CASE)
+      STORE_NATIVE_FIELD_NO_BARRIER(CASE)
+#undef CASE
       return true;
     case MethodRecognizer::kDoubleToInteger:
     case MethodRecognizer::kDoubleMod:
@@ -1534,13 +1545,15 @@
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += MathUnary(MathUnaryInstr::kSqrt);
     } break;
-#define LOAD_NATIVE_FIELD(method, slot)                                        \
+#define IL_BODY(method, slot)                                                  \
   case MethodRecognizer::k##method:                                            \
     ASSERT_EQUAL(function.NumParameters(), 1);                                 \
     body += LoadLocal(parsed_function_->RawParameterVariable(0));              \
     body += LoadNativeField(Slot::slot());                                     \
     break;
-#define STORE_NATIVE_FIELD(method, slot)                                       \
+      LOAD_NATIVE_FIELD(IL_BODY)
+#undef IL_BODY
+#define IL_BODY(method, slot)                                                  \
   case MethodRecognizer::k##method:                                            \
     ASSERT_EQUAL(function.NumParameters(), 2);                                 \
     body += LoadLocal(parsed_function_->RawParameterVariable(0));              \
@@ -1548,7 +1561,9 @@
     body += StoreNativeField(Slot::slot());                                    \
     body += NullConstant();                                                    \
     break;
-#define STORE_NATIVE_FIELD_NO_BARRIER(method, slot)                            \
+      STORE_NATIVE_FIELD(IL_BODY)
+#undef IL_BODY
+#define IL_BODY(method, slot)                                                  \
   case MethodRecognizer::k##method:                                            \
     ASSERT_EQUAL(function.NumParameters(), 2);                                 \
     body += LoadLocal(parsed_function_->RawParameterVariable(0));              \
@@ -1557,44 +1572,8 @@
         Slot::slot(), StoreInstanceFieldInstr::Kind::kOther, kNoStoreBarrier); \
     body += NullConstant();                                                    \
     break;
-      LOAD_NATIVE_FIELD(ByteDataViewLength, TypedDataBase_length)
-      LOAD_NATIVE_FIELD(ByteDataViewOffsetInBytes,
-                        TypedDataView_offset_in_bytes)
-      LOAD_NATIVE_FIELD(ByteDataViewTypedData, TypedDataView_typed_data)
-      LOAD_NATIVE_FIELD(GrowableArrayLength, GrowableObjectArray_length)
-      LOAD_NATIVE_FIELD(ImmutableLinkedHashBase_getData,
-                        ImmutableLinkedHashBase_data)
-      LOAD_NATIVE_FIELD(ImmutableArrayLength, Array_length)
-      LOAD_NATIVE_FIELD(ImmutableLinkedHashBase_getIndex,
-                        ImmutableLinkedHashBase_index)
-      LOAD_NATIVE_FIELD(LinkedHashBase_getData, LinkedHashBase_data)
-      LOAD_NATIVE_FIELD(LinkedHashBase_getDeletedKeys,
-                        LinkedHashBase_deleted_keys)
-      LOAD_NATIVE_FIELD(LinkedHashBase_getHashMask, LinkedHashBase_hash_mask)
-      LOAD_NATIVE_FIELD(LinkedHashBase_getIndex, LinkedHashBase_index)
-      LOAD_NATIVE_FIELD(LinkedHashBase_getUsedData, LinkedHashBase_used_data)
-      LOAD_NATIVE_FIELD(ObjectArrayLength, Array_length)
-      LOAD_NATIVE_FIELD(TypedDataViewOffsetInBytes,
-                        TypedDataView_offset_in_bytes)
-      LOAD_NATIVE_FIELD(TypedDataViewTypedData, TypedDataView_typed_data)
-      LOAD_NATIVE_FIELD(TypedListBaseLength, TypedDataBase_length)
-      LOAD_NATIVE_FIELD(WeakProperty_getKey, WeakProperty_key)
-      LOAD_NATIVE_FIELD(WeakProperty_getValue, WeakProperty_value)
-      LOAD_NATIVE_FIELD(WeakReference_getTarget, WeakReference_target)
-      STORE_NATIVE_FIELD_NO_BARRIER(LinkedHashBase_setDeletedKeys,
-                                    LinkedHashBase_deleted_keys)
-      STORE_NATIVE_FIELD_NO_BARRIER(LinkedHashBase_setHashMask,
-                                    LinkedHashBase_hash_mask)
-      STORE_NATIVE_FIELD_NO_BARRIER(LinkedHashBase_setUsedData,
-                                    LinkedHashBase_used_data)
-      STORE_NATIVE_FIELD(LinkedHashBase_setData, LinkedHashBase_data)
-      STORE_NATIVE_FIELD(LinkedHashBase_setIndex, LinkedHashBase_index)
-      STORE_NATIVE_FIELD(WeakProperty_setKey, WeakProperty_key)
-      STORE_NATIVE_FIELD(WeakProperty_setValue, WeakProperty_value)
-      STORE_NATIVE_FIELD(WeakReference_setTarget, WeakReference_target)
-#undef LOAD_NATIVE_FIELD
-#undef STORE_NATIVE_FIELD
-#undef STORE_NATIVE_FIELD_NO_BARRIER
+      STORE_NATIVE_FIELD_NO_BARRIER(IL_BODY)
+#undef IL_BODY
     default: {
       UNREACHABLE();
       break;