From e4196ce8c680361c4b4b375d03013393899bdaae Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Mon, 10 Jun 2019 02:55:25 +0000 Subject: [PATCH] [vm] Namespace constants like offsets and sizeofs to use runtime_api.h Second sub-CL of https://dart-review.googlesource.com/c/sdk/+/100644 The first was here https://dart-review.googlesource.com/c/sdk/+/103487 Now that offsets_extractor is checked in, and we have a big header full of hard coded constants, the next step is to make sure everything is using those constants. This is essentially everything in the original CL, except the new simarm_x64 architecture. Bug: https://github.com/dart-lang/sdk/issues/36839 Change-Id: I236e4f30aa1df6d92209891c983b792d1835b608 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104286 Commit-Queue: Liam Appelbe Reviewed-by: Ryan Macnak --- runtime/vm/class_table.cc | 14 +- runtime/vm/class_table.h | 7 +- runtime/vm/clustered_snapshot.cc | 3 +- runtime/vm/code_descriptors.cc | 2 +- .../vm/compiler/aot/aot_call_specializer.cc | 2 +- runtime/vm/compiler/asm_intrinsifier_arm.cc | 12 +- runtime/vm/compiler/asm_intrinsifier_arm64.cc | 10 +- runtime/vm/compiler/asm_intrinsifier_ia32.cc | 10 +- runtime/vm/compiler/asm_intrinsifier_x64.cc | 10 +- .../vm/compiler/assembler/assembler_arm.cc | 10 +- .../vm/compiler/assembler/assembler_arm64.cc | 14 +- .../vm/compiler/assembler/assembler_ia32.cc | 15 +- .../vm/compiler/assembler/assembler_x64.cc | 23 +- .../vm/compiler/backend/flow_graph_checker.cc | 4 +- .../compiler/backend/flow_graph_compiler.cc | 20 +- .../backend/flow_graph_compiler_arm.cc | 90 +- runtime/vm/compiler/backend/il.cc | 20 +- runtime/vm/compiler/backend/il.h | 13 +- runtime/vm/compiler/backend/il_arm.cc | 408 ++- runtime/vm/compiler/backend/il_arm64.cc | 5 +- runtime/vm/compiler/backend/il_ia32.cc | 5 +- runtime/vm/compiler/backend/il_x64.cc | 5 +- runtime/vm/compiler/backend/inliner.cc | 45 +- runtime/vm/compiler/backend/linearscan.h | 14 +- runtime/vm/compiler/backend/locations.cc | 2 +- runtime/vm/compiler/backend/range_analysis.cc | 30 +- runtime/vm/compiler/backend/range_analysis.h | 18 +- .../compiler/backend/range_analysis_test.cc | 15 +- .../backend/redundancy_elimination.cc | 7 +- runtime/vm/compiler/backend/slot.cc | 11 +- runtime/vm/compiler/backend/slot.h | 2 + runtime/vm/compiler/call_specializer.cc | 12 +- .../frontend/base_flow_graph_builder.cc | 5 +- .../frontend/bytecode_flow_graph_builder.cc | 3 +- runtime/vm/compiler/frontend/kernel_to_il.cc | 11 +- .../vm/compiler/frontend/prologue_builder.cc | 40 +- runtime/vm/compiler/graph_intrinsifier.cc | 22 +- runtime/vm/compiler/intrinsifier.cc | 5 +- runtime/vm/compiler/offsets_extractor.cc | 17 +- runtime/vm/compiler/relocation.cc | 5 +- runtime/vm/compiler/runtime_api.cc | 693 ++-- runtime/vm/compiler/runtime_api.h | 178 +- .../vm/compiler/runtime_offsets_extracted.h | 3136 ++++++++++------- runtime/vm/compiler/runtime_offsets_list.h | 8 +- runtime/vm/compiler/stub_code_compiler_arm.cc | 8 +- .../vm/compiler/stub_code_compiler_arm64.cc | 2 +- .../vm/compiler/stub_code_compiler_ia32.cc | 2 +- runtime/vm/compiler/stub_code_compiler_x64.cc | 2 +- runtime/vm/exceptions.cc | 8 +- runtime/vm/exceptions.h | 14 +- runtime/vm/image_snapshot.cc | 21 +- runtime/vm/image_snapshot.h | 2 + runtime/vm/isolate.cc | 9 +- runtime/vm/object.h | 2 +- runtime/vm/raw_object.h | 25 +- runtime/vm/runtime_entry_arm.cc | 12 +- runtime/vm/type_testing_stubs.cc | 30 +- runtime/vm/type_testing_stubs_arm.cc | 6 +- 58 files changed, 2916 insertions(+), 2208 deletions(-) diff --git a/runtime/vm/class_table.cc b/runtime/vm/class_table.cc index 70ad37ceded..3d4ab6c3463 100644 --- a/runtime/vm/class_table.cc +++ b/runtime/vm/class_table.cc @@ -464,19 +464,14 @@ void ClassTable::UpdatePromoted() { } } -intptr_t ClassTable::TableOffsetFor(intptr_t cid) { - return OFFSET_OF(ClassTable, class_heap_stats_table_); -} - intptr_t ClassTable::ClassOffsetFor(intptr_t cid) { return cid * sizeof(ClassHeapStats); // NOLINT } -intptr_t ClassTable::CounterOffsetFor(intptr_t cid, bool is_new_space) { +intptr_t ClassTable::NewSpaceCounterOffsetFor(intptr_t cid) { const intptr_t class_offset = ClassOffsetFor(cid); const intptr_t count_field_offset = - is_new_space ? ClassHeapStats::allocated_since_gc_new_space_offset() - : ClassHeapStats::allocated_since_gc_old_space_offset(); + ClassHeapStats::allocated_since_gc_new_space_offset(); return class_offset + count_field_offset; } @@ -484,11 +479,10 @@ intptr_t ClassTable::StateOffsetFor(intptr_t cid) { return ClassOffsetFor(cid) + ClassHeapStats::state_offset(); } -intptr_t ClassTable::SizeOffsetFor(intptr_t cid, bool is_new_space) { +intptr_t ClassTable::NewSpaceSizeOffsetFor(intptr_t cid) { const uword class_offset = ClassOffsetFor(cid); const uword size_field_offset = - is_new_space ? ClassHeapStats::allocated_size_since_gc_new_space_offset() - : ClassHeapStats::allocated_size_since_gc_old_space_offset(); + ClassHeapStats::allocated_size_since_gc_new_space_offset(); return class_offset + size_field_offset; } diff --git a/runtime/vm/class_table.h b/runtime/vm/class_table.h index 3268bb705b8..c851ef93026 100644 --- a/runtime/vm/class_table.h +++ b/runtime/vm/class_table.h @@ -301,16 +301,13 @@ class ClassTable { } // Used by the generated code. - static intptr_t TableOffsetFor(intptr_t cid); - - // Used by the generated code. - static intptr_t CounterOffsetFor(intptr_t cid, bool is_new_space); + static intptr_t NewSpaceCounterOffsetFor(intptr_t cid); // Used by the generated code. static intptr_t StateOffsetFor(intptr_t cid); // Used by the generated code. - static intptr_t SizeOffsetFor(intptr_t cid, bool is_new_space); + static intptr_t NewSpaceSizeOffsetFor(intptr_t cid); ClassHeapStats* StatsWithUpdatedSize(intptr_t cid); diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc index ae787906d7e..817c6570637 100644 --- a/runtime/vm/clustered_snapshot.cc +++ b/runtime/vm/clustered_snapshot.cc @@ -1818,7 +1818,8 @@ class RODataSerializationCluster : public SerializationCluster { s->TraceDataOffset(offset); ASSERT(Utils::IsAligned(offset, kObjectAlignment)); ASSERT(offset > running_offset); - s->WriteUnsigned((offset - running_offset) >> kObjectAlignmentLog2); + s->WriteUnsigned((offset - running_offset) >> + compiler::target::ObjectAlignment::kObjectAlignmentLog2); running_offset = offset; s->TraceEndWritingObject(); } diff --git a/runtime/vm/code_descriptors.cc b/runtime/vm/code_descriptors.cc index 84d98825e35..7d1b7644cb7 100644 --- a/runtime/vm/code_descriptors.cc +++ b/runtime/vm/code_descriptors.cc @@ -19,7 +19,7 @@ void DescriptorList::AddDescriptor(RawPcDescriptors::Kind kind, // When precompiling, we only use pc descriptors for exceptions. if (!FLAG_precompiled_mode || try_index != -1) { - intptr_t merged_kind_try = + int32_t merged_kind_try = RawPcDescriptors::MergedKindTry::Encode(kind, try_index); PcDescriptors::EncodeInteger(&encoded_data_, merged_kind_try); diff --git a/runtime/vm/compiler/aot/aot_call_specializer.cc b/runtime/vm/compiler/aot/aot_call_specializer.cc index 895d8a787d3..b3c2ea3ca39 100644 --- a/runtime/vm/compiler/aot/aot_call_specializer.cc +++ b/runtime/vm/compiler/aot/aot_call_specializer.cc @@ -431,7 +431,7 @@ Definition* AotCallSpecializer::TryOptimizeMod(TemplateDartCall<0>* instr, return nullptr; // non-smi mask } const int64_t modulus = Utils::Abs(value); - if (!Utils::IsPowerOfTwo(modulus) || !Smi::IsValid(modulus - 1)) { + if (!Utils::IsPowerOfTwo(modulus) || !compiler::target::IsSmi(modulus - 1)) { return nullptr; } diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc index 2da017e383e..bb2cb37081c 100644 --- a/runtime/vm/compiler/asm_intrinsifier_arm.cc +++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc @@ -430,7 +430,7 @@ void AsmIntrinsifier::Integer_shl(Assembler* assembler, Label* normal_ir_body) { ASSERT(kSmiTagShift == 1); ASSERT(kSmiTag == 0); TestBothArgumentsSmis(assembler, normal_ir_body); - __ CompareImmediate(R0, target::ToRawSmi(target::Smi::kBits)); + __ CompareImmediate(R0, target::ToRawSmi(target::kSmiBits)); __ b(normal_ir_body, HI); __ SmiUntag(R0); @@ -1450,7 +1450,7 @@ void AsmIntrinsifier::Double_hashCode(Assembler* assembler, __ ldr(R0, FieldAddress(R1, target::Double::value_offset())); __ ldr(R1, FieldAddress(R1, target::Double::value_offset() + 4)); __ eor(R0, R0, Operand(R1)); - __ AndImmediate(R0, R0, kSmiMax); + __ AndImmediate(R0, R0, target::kSmiMax); __ SmiTag(R0); __ Ret(); @@ -1495,7 +1495,7 @@ void AsmIntrinsifier::Random_nextState(Assembler* assembler, // Receiver. __ ldr(R0, Address(SP, 0 * target::kWordSize)); // Field '_state'. - __ ldr(R1, FieldAddress(R0, LookupFieldOffsetInBytes(state_field))); + __ ldr(R1, FieldAddress(R0, target::Field::OffsetOf(state_field))); // Addresses of _state[0] and _state[1]. const int64_t disp_0 = @@ -1608,8 +1608,7 @@ void AsmIntrinsifier::ObjectRuntimeType(Assembler* assembler, __ Bind(&use_declaration_type); __ LoadClassById(R2, R1); // Overwrites R1. - __ ldrh(R3, FieldAddress( - R2, target::Class::num_type_arguments_offset_in_bytes())); + __ ldrh(R3, FieldAddress(R2, target::Class::num_type_arguments_offset())); __ CompareImmediate(R3, 0); __ b(normal_ir_body, NE); @@ -1644,8 +1643,7 @@ void AsmIntrinsifier::ObjectHaveSameRuntimeType(Assembler* assembler, // Check if there are no type arguments. In this case we can return true. // Otherwise fall through into the runtime to handle comparison. __ LoadClassById(R3, R1); - __ ldrh(R3, FieldAddress( - R3, target::Class::num_type_arguments_offset_in_bytes())); + __ ldrh(R3, FieldAddress(R3, target::Class::num_type_arguments_offset())); __ CompareImmediate(R3, 0); __ b(normal_ir_body, NE); diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc index 6c63421b50d..1551dfc8fa9 100644 --- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc +++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc @@ -430,7 +430,7 @@ void AsmIntrinsifier::Integer_shl(Assembler* assembler, Label* normal_ir_body) { const Register result = R0; TestBothArgumentsSmis(assembler, normal_ir_body); - __ CompareImmediate(right, target::ToRawSmi(target::Smi::kBits)); + __ CompareImmediate(right, target::ToRawSmi(target::kSmiBits)); __ b(normal_ir_body, CS); // Left is not a constant. @@ -1520,7 +1520,7 @@ void AsmIntrinsifier::Double_hashCode(Assembler* assembler, __ Bind(&double_hash); __ fmovrd(R0, V0); __ eor(R0, R0, Operand(R0, LSR, 32)); - __ AndImmediate(R0, R0, kSmiMax); + __ AndImmediate(R0, R0, target::kSmiMax); __ SmiTag(R0); __ ret(); @@ -1669,8 +1669,7 @@ void AsmIntrinsifier::ObjectRuntimeType(Assembler* assembler, __ Bind(&use_declaration_type); __ LoadClassById(R2, R1); // Overwrites R1. - __ ldr(R3, - FieldAddress(R2, target::Class::num_type_arguments_offset_in_bytes()), + __ ldr(R3, FieldAddress(R2, target::Class::num_type_arguments_offset()), kHalfword); __ CompareImmediate(R3, 0); __ b(normal_ir_body, NE); @@ -1706,8 +1705,7 @@ void AsmIntrinsifier::ObjectHaveSameRuntimeType(Assembler* assembler, // Check if there are no type arguments. In this case we can return true. // Otherwise fall through into the runtime to handle comparison. __ LoadClassById(R3, R1); // Overwrites R1. - __ ldr(R3, - FieldAddress(R3, target::Class::num_type_arguments_offset_in_bytes()), + __ ldr(R3, FieldAddress(R3, target::Class::num_type_arguments_offset()), kHalfword); __ CompareImmediate(R3, 0); __ b(normal_ir_body, NE); diff --git a/runtime/vm/compiler/asm_intrinsifier_ia32.cc b/runtime/vm/compiler/asm_intrinsifier_ia32.cc index c035d556ec1..690df695a59 100644 --- a/runtime/vm/compiler/asm_intrinsifier_ia32.cc +++ b/runtime/vm/compiler/asm_intrinsifier_ia32.cc @@ -440,7 +440,7 @@ void AsmIntrinsifier::Integer_shl(Assembler* assembler, Label* normal_ir_body) { Label overflow; TestBothArgumentsSmis(assembler, normal_ir_body); // Shift value is in EAX. Compare with tagged Smi. - __ cmpl(EAX, Immediate(target::ToRawSmi(target::Smi::kBits))); + __ cmpl(EAX, Immediate(target::ToRawSmi(target::kSmiBits))); __ j(ABOVE_EQUAL, normal_ir_body, Assembler::kNearJump); __ SmiUntag(EAX); @@ -1553,7 +1553,7 @@ void AsmIntrinsifier::Double_hashCode(Assembler* assembler, __ movl(EAX, FieldAddress(ECX, target::Double::value_offset())); __ movl(ECX, FieldAddress(ECX, target::Double::value_offset() + 4)); __ xorl(EAX, ECX); - __ andl(EAX, Immediate(kSmiMax)); + __ andl(EAX, Immediate(target::kSmiMax)); __ SmiTag(EAX); __ ret(); @@ -1711,8 +1711,7 @@ void AsmIntrinsifier::ObjectRuntimeType(Assembler* assembler, // Object is neither double, nor integer, nor string. __ Bind(&use_declaration_type); __ LoadClassById(EBX, EDI); - __ movzxw(EDI, FieldAddress( - EBX, target::Class::num_type_arguments_offset_in_bytes())); + __ movzxw(EDI, FieldAddress(EBX, target::Class::num_type_arguments_offset())); __ cmpl(EDI, Immediate(0)); __ j(NOT_EQUAL, normal_ir_body, Assembler::kNearJump); __ movl(EAX, FieldAddress(EBX, target::Class::declaration_type_offset())); @@ -1747,8 +1746,7 @@ void AsmIntrinsifier::ObjectHaveSameRuntimeType(Assembler* assembler, // Check if there are no type arguments. In this case we can return true. // Otherwise fall through into the runtime to handle comparison. __ LoadClassById(EBX, EDI); - __ movzxw(EBX, FieldAddress( - EBX, target::Class::num_type_arguments_offset_in_bytes())); + __ movzxw(EBX, FieldAddress(EBX, target::Class::num_type_arguments_offset())); __ cmpl(EBX, Immediate(0)); __ j(NOT_EQUAL, normal_ir_body, Assembler::kNearJump); diff --git a/runtime/vm/compiler/asm_intrinsifier_x64.cc b/runtime/vm/compiler/asm_intrinsifier_x64.cc index 76618bc3ce3..d210d676e7f 100644 --- a/runtime/vm/compiler/asm_intrinsifier_x64.cc +++ b/runtime/vm/compiler/asm_intrinsifier_x64.cc @@ -494,7 +494,7 @@ void AsmIntrinsifier::Integer_shl(Assembler* assembler, Label* normal_ir_body) { Label overflow; TestBothArgumentsSmis(assembler, normal_ir_body); // Shift value is in RAX. Compare with tagged Smi. - __ cmpq(RAX, Immediate(target::ToRawSmi(target::Smi::kBits))); + __ cmpq(RAX, Immediate(target::ToRawSmi(target::kSmiBits))); __ j(ABOVE_EQUAL, normal_ir_body, Assembler::kNearJump); __ SmiUntag(RAX); @@ -1465,7 +1465,7 @@ void AsmIntrinsifier::Double_hashCode(Assembler* assembler, __ movq(RCX, RAX); __ shrq(RCX, Immediate(32)); __ xorq(RAX, RCX); - __ andq(RAX, Immediate(kSmiMax)); + __ andq(RAX, Immediate(target::kSmiMax)); __ SmiTag(RAX); __ ret(); @@ -1623,8 +1623,7 @@ void AsmIntrinsifier::ObjectRuntimeType(Assembler* assembler, // Object is neither double, nor integer, nor string. __ Bind(&use_declaration_type); __ LoadClassById(RDI, RCX); - __ movzxw(RCX, FieldAddress( - RDI, target::Class::num_type_arguments_offset_in_bytes())); + __ movzxw(RCX, FieldAddress(RDI, target::Class::num_type_arguments_offset())); __ cmpq(RCX, Immediate(0)); __ j(NOT_EQUAL, normal_ir_body, Assembler::kNearJump); __ movq(RAX, FieldAddress(RDI, target::Class::declaration_type_offset())); @@ -1659,8 +1658,7 @@ void AsmIntrinsifier::ObjectHaveSameRuntimeType(Assembler* assembler, // Check if there are no type arguments. In this case we can return true. // Otherwise fall through into the runtime to handle comparison. __ LoadClassById(RDI, RCX); - __ movzxw(RCX, FieldAddress( - RDI, target::Class::num_type_arguments_offset_in_bytes())); + __ movzxw(RCX, FieldAddress(RDI, target::Class::num_type_arguments_offset())); __ cmpq(RCX, Immediate(0)); __ j(NOT_EQUAL, normal_ir_body, Assembler::kNearJump); diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc index 34ccfa15223..fa570c53a4f 100644 --- a/runtime/vm/compiler/assembler/assembler_arm.cc +++ b/runtime/vm/compiler/assembler/assembler_arm.cc @@ -1602,9 +1602,9 @@ void Assembler::LoadObjectHelper(Register rd, } else if (CanLoadFromObjectPool(object)) { // Make sure that class CallPattern is able to decode this load from the // object pool. - const int32_t offset = ObjectPool::element_offset( - is_unique ? object_pool_builder().AddObject(object) - : object_pool_builder().FindObject(object)); + const auto index = is_unique ? object_pool_builder().AddObject(object) + : object_pool_builder().FindObject(object); + const int32_t offset = ObjectPool::element_offset(index); LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, pp, cond); } else { UNREACHABLE(); @@ -3433,8 +3433,8 @@ void Assembler::LoadAllocationStatsAddress(Register dest, intptr_t cid) { ASSERT(cid > 0); const intptr_t class_offset = ClassTable::ClassOffsetFor(cid); LoadIsolate(dest); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); ldr(dest, Address(dest, table_offset)); AddImmediate(dest, class_offset); } diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc index 7adcc268cb7..5c1b9027976 100644 --- a/runtime/vm/compiler/assembler/assembler_arm64.cc +++ b/runtime/vm/compiler/assembler/assembler_arm64.cc @@ -1495,8 +1495,8 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, ASSERT(cid > 0); intptr_t state_offset = ClassTable::StateOffsetFor(cid); LoadIsolate(temp_reg); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); ldr(temp_reg, Address(temp_reg, table_offset)); AddImmediate(temp_reg, state_offset); ldr(temp_reg, Address(temp_reg, 0)); @@ -1506,10 +1506,10 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, void Assembler::UpdateAllocationStats(intptr_t cid) { ASSERT(cid > 0); - intptr_t counter_offset = ClassTable::CounterOffsetFor(cid, /*is_new=*/true); + intptr_t counter_offset = target::ClassTable::NewSpaceCounterOffsetFor(cid); LoadIsolate(TMP2); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); ldr(TMP, Address(TMP2, table_offset)); AddImmediate(TMP2, TMP, counter_offset); ldr(TMP, Address(TMP2, 0)); @@ -1525,8 +1525,8 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid, Register size_reg) { const uword size_field_offset = ClassHeapStats::allocated_size_since_gc_new_space_offset(); LoadIsolate(TMP2); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); ldr(TMP, Address(TMP2, table_offset)); AddImmediate(TMP2, TMP, class_offset); ldr(TMP, Address(TMP2, count_field_offset)); diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc index aca37d185a9..73112980dae 100644 --- a/runtime/vm/compiler/assembler/assembler_ia32.cc +++ b/runtime/vm/compiler/assembler/assembler_ia32.cc @@ -2300,8 +2300,8 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, intptr_t state_offset = ClassTable::StateOffsetFor(cid); ASSERT(temp_reg != kNoRegister); LoadIsolate(temp_reg); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); movl(temp_reg, Address(temp_reg, table_offset)); state_address = Address(temp_reg, state_offset); testb(state_address, @@ -2313,12 +2313,11 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, void Assembler::UpdateAllocationStats(intptr_t cid, Register temp_reg) { ASSERT(cid > 0); - intptr_t counter_offset = - ClassTable::CounterOffsetFor(cid, /*is_new_space=*/true); + intptr_t counter_offset = ClassTable::NewSpaceCounterOffsetFor(cid); ASSERT(temp_reg != kNoRegister); LoadIsolate(temp_reg); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); movl(temp_reg, Address(temp_reg, table_offset)); incl(Address(temp_reg, counter_offset)); } @@ -2329,7 +2328,7 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid, ASSERT(cid > 0); ASSERT(cid < kNumPredefinedCids); UpdateAllocationStats(cid, temp_reg); - intptr_t size_offset = ClassTable::SizeOffsetFor(cid, /*is_new_space=*/true); + intptr_t size_offset = ClassTable::NewSpaceSizeOffsetFor(cid); addl(Address(temp_reg, size_offset), size_reg); } @@ -2339,7 +2338,7 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid, ASSERT(cid > 0); ASSERT(cid < kNumPredefinedCids); UpdateAllocationStats(cid, temp_reg); - intptr_t size_offset = ClassTable::SizeOffsetFor(cid, /*is_new_space=*/true); + intptr_t size_offset = ClassTable::NewSpaceSizeOffsetFor(cid); addl(Address(temp_reg, size_offset), Immediate(size_in_bytes)); } #endif // !PRODUCT diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc index 87b67428686..1a6596e236c 100644 --- a/runtime/vm/compiler/assembler/assembler_x64.cc +++ b/runtime/vm/compiler/assembler/assembler_x64.cc @@ -1191,7 +1191,7 @@ void Assembler::LoadObjectHelper(Register dst, bool is_unique) { ASSERT(IsOriginalObject(object)); - target::word offset_from_thread; + intptr_t offset_from_thread; if (target::CanLoadFromThread(object, &offset_from_thread)) { movq(dst, Address(THR, offset_from_thread)); } else if (CanLoadFromObjectPool(object)) { @@ -1216,7 +1216,7 @@ void Assembler::LoadUniqueObject(Register dst, const Object& object) { void Assembler::StoreObject(const Address& dst, const Object& object) { ASSERT(IsOriginalObject(object)); - target::word offset_from_thread; + intptr_t offset_from_thread; if (target::CanLoadFromThread(object, &offset_from_thread)) { movq(TMP, Address(THR, offset_from_thread)); movq(dst, TMP); @@ -1232,7 +1232,7 @@ void Assembler::StoreObject(const Address& dst, const Object& object) { void Assembler::PushObject(const Object& object) { ASSERT(IsOriginalObject(object)); - target::word offset_from_thread; + intptr_t offset_from_thread; if (target::CanLoadFromThread(object, &offset_from_thread)) { pushq(Address(THR, offset_from_thread)); } else if (CanLoadFromObjectPool(object)) { @@ -1247,7 +1247,7 @@ void Assembler::PushObject(const Object& object) { void Assembler::CompareObject(Register reg, const Object& object) { ASSERT(IsOriginalObject(object)); - target::word offset_from_thread; + intptr_t offset_from_thread; if (target::CanLoadFromThread(object, &offset_from_thread)) { cmpq(reg, Address(THR, offset_from_thread)); } else if (CanLoadFromObjectPool(object)) { @@ -1786,8 +1786,8 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, intptr_t state_offset = ClassTable::StateOffsetFor(cid); Register temp_reg = TMP; LoadIsolate(temp_reg); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); movq(temp_reg, Address(temp_reg, table_offset)); testb(Address(temp_reg, state_offset), Immediate(target::ClassHeapStats::TraceAllocationMask())); @@ -1798,12 +1798,11 @@ void Assembler::MaybeTraceAllocation(intptr_t cid, void Assembler::UpdateAllocationStats(intptr_t cid) { ASSERT(cid > 0); - intptr_t counter_offset = - ClassTable::CounterOffsetFor(cid, /*is_new_space=*/true); + intptr_t counter_offset = ClassTable::NewSpaceCounterOffsetFor(cid); Register temp_reg = TMP; LoadIsolate(temp_reg); - intptr_t table_offset = - Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); + intptr_t table_offset = Isolate::class_table_offset() + + ClassTable::class_heap_stats_table_offset(); movq(temp_reg, Address(temp_reg, table_offset)); incq(Address(temp_reg, counter_offset)); } @@ -1813,7 +1812,7 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid, Register size_reg) { ASSERT(cid < kNumPredefinedCids); UpdateAllocationStats(cid); Register temp_reg = TMP; - intptr_t size_offset = ClassTable::SizeOffsetFor(cid, /*is_new_space=*/true); + intptr_t size_offset = ClassTable::NewSpaceSizeOffsetFor(cid); addq(Address(temp_reg, size_offset), size_reg); } @@ -1823,7 +1822,7 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid, ASSERT(cid < kNumPredefinedCids); UpdateAllocationStats(cid); Register temp_reg = TMP; - intptr_t size_offset = ClassTable::SizeOffsetFor(cid, /*is_new_space=*/true); + intptr_t size_offset = ClassTable::NewSpaceSizeOffsetFor(cid); addq(Address(temp_reg, size_offset), Immediate(size_in_bytes)); } #endif // !PRODUCT diff --git a/runtime/vm/compiler/backend/flow_graph_checker.cc b/runtime/vm/compiler/backend/flow_graph_checker.cc index 8502f63f063..4660d82b9bf 100644 --- a/runtime/vm/compiler/backend/flow_graph_checker.cc +++ b/runtime/vm/compiler/backend/flow_graph_checker.cc @@ -340,8 +340,8 @@ void FlowGraphChecker::VisitConstant(ConstantInstr* constant) { const Object& value = constant->value(); if (value.IsSmi()) { const int64_t smi_value = Integer::Cast(value).AsInt64Value(); - ASSERT(kSmiMin <= smi_value); - ASSERT(smi_value <= kSmiMax); + ASSERT(compiler::target::kSmiMin <= smi_value); + ASSERT(smi_value <= compiler::target::kSmiMax); } // Any constant involved in SSA should appear in the entry (making it more // likely it was inserted by the utility that avoids duplication). diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc index eee9a382760..cd2a8db93e2 100644 --- a/runtime/vm/compiler/backend/flow_graph_compiler.cc +++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc @@ -824,7 +824,8 @@ void FlowGraphCompiler::RecordSafepoint(LocationSummary* locs, RegisterSet* registers = locs->live_registers(); ASSERT(registers != NULL); - const intptr_t kFpuRegisterSpillFactor = kFpuRegisterSize / kWordSize; + const intptr_t kFpuRegisterSpillFactor = + kFpuRegisterSize / compiler::target::kWordSize; intptr_t saved_registers_size = 0; const bool using_shared_stub = locs->call_on_shared_slow_path(); if (using_shared_stub) { @@ -965,7 +966,8 @@ Environment* FlowGraphCompiler::SlowPathEnvironmentFor( RegisterSet* regs = instruction->locs()->live_registers(); intptr_t fpu_reg_slots[kNumberOfFpuRegisters]; intptr_t cpu_reg_slots[kNumberOfCpuRegisters]; - const intptr_t kFpuRegisterSpillFactor = kFpuRegisterSize / kWordSize; + const intptr_t kFpuRegisterSpillFactor = + kFpuRegisterSize / compiler::target::kWordSize; // FPU registers are spilled first from highest to lowest register number. for (intptr_t i = kNumberOfFpuRegisters - 1; i >= 0; --i) { FpuRegister reg = static_cast(i); @@ -1234,7 +1236,7 @@ bool FlowGraphCompiler::TryIntrinsifyHelper() { if (field.is_instance() && (FLAG_precompiled_mode || !IsPotentialUnboxedField(field))) { SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics); - GenerateGetterIntrinsic(field.Offset()); + GenerateGetterIntrinsic(compiler::target::Field::OffsetOf(field)); SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics); return !isolate()->use_field_guards(); } @@ -1253,7 +1255,7 @@ bool FlowGraphCompiler::TryIntrinsifyHelper() { if (field.is_instance() && (FLAG_precompiled_mode || field.guarded_cid() == kDynamicCid)) { SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics); - GenerateSetterIntrinsic(field.Offset()); + GenerateSetterIntrinsic(compiler::target::Field::OffsetOf(field)); SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics); return !isolate()->use_field_guards(); } @@ -1267,8 +1269,9 @@ bool FlowGraphCompiler::TryIntrinsifyHelper() { parsed_function().function().extracted_method_closure()); auto& klass = Class::Handle(extracted_method.Owner()); const intptr_t type_arguments_field_offset = - klass.NumTypeArguments() > 0 - ? (klass.type_arguments_field_offset() - kHeapObjectTag) + compiler::target::Class::HasTypeArgumentsField(klass) + ? (compiler::target::Class::TypeArgumentsFieldOffset(klass) - + kHeapObjectTag) : 0; SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics); @@ -2308,8 +2311,9 @@ void FlowGraphCompiler::GenerateAssertAssignableViaTypeTestingStub( __ CompareObject(kTypeArgumentsReg, Object::null_object()); __ BranchIf(EQUAL, done); __ LoadField(dst_type_reg, - FieldAddress(kTypeArgumentsReg, TypeArguments::type_at_offset( - type_param.index()))); + FieldAddress(kTypeArgumentsReg, + compiler::target::TypeArguments::type_at_offset( + type_param.index()))); if (type_usage_info != NULL) { type_usage_info->UseTypeInAssertAssignable(dst_type); } diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc index 598cc1cb3a8..9018e54d13a 100644 --- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc +++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc @@ -196,7 +196,7 @@ void CompilerDeoptInfoWithStub::GenerateCode(FlowGraphCompiler* compiler, } ASSERT(deopt_env() != NULL); - __ ldr(LR, Address(THR, Thread::deoptimize_entry_offset())); + __ ldr(LR, Address(THR, compiler::target::Thread::deoptimize_entry_offset())); __ blx(LR); ASSERT(kReservedCpuRegisters & (1 << LR)); set_pc_offset(assembler->CodeSize()); @@ -431,8 +431,8 @@ RawSubtypeTestCache* FlowGraphCompiler::GenerateSubtype1TestCacheLookup( __ LoadClassById(R1, R2); // R1: instance class. // Check immediate superclass equality. - __ ldr(R2, FieldAddress(R1, Class::super_type_offset())); - __ ldr(R2, FieldAddress(R2, Type::type_class_id_offset())); + __ ldr(R2, FieldAddress(R1, compiler::target::Class::super_type_offset())); + __ ldr(R2, FieldAddress(R2, compiler::target::Type::type_class_id_offset())); __ CompareImmediate(R2, Smi::RawValue(type_class.id())); __ b(is_instance_lbl, EQ); @@ -475,7 +475,8 @@ RawSubtypeTestCache* FlowGraphCompiler::GenerateUninstantiatedTypeTest( __ CompareObject(kTypeArgumentsReg, Object::null_object()); __ b(is_instance_lbl, EQ); __ ldr(R3, FieldAddress(kTypeArgumentsReg, - TypeArguments::type_at_offset(type_param.index()))); + compiler::target::TypeArguments::type_at_offset( + type_param.index()))); // R3: concrete type of type. // Check if type argument is dynamic, Object, or void. __ CompareObject(R3, Object::dynamic_type()); @@ -772,15 +773,18 @@ void FlowGraphCompiler::GenerateAssertAssignableViaTypeTestingStub( const intptr_t sub_type_cache_index = __ object_pool_builder().AddObject( Object::null_object(), ObjectPool::Patchability::kPatchable); const intptr_t sub_type_cache_offset = - ObjectPool::element_offset(sub_type_cache_index) - kHeapObjectTag; + compiler::target::ObjectPool::element_offset(sub_type_cache_index) - + kHeapObjectTag; const intptr_t dst_name_index = __ object_pool_builder().AddObject( dst_name, ObjectPool::Patchability::kPatchable); ASSERT((sub_type_cache_index + 1) == dst_name_index); ASSERT(__ constant_pool_allowed()); - __ LoadField(R9, - FieldAddress(kDstTypeReg, - AbstractType::type_test_stub_entry_point_offset())); + __ LoadField( + R9, + FieldAddress( + kDstTypeReg, + compiler::target::AbstractType::type_test_stub_entry_point_offset())); __ LoadWordFromPoolOffset(kSubtypeTestCacheReg, sub_type_cache_offset, PP, AL); __ blx(R9); @@ -822,15 +826,17 @@ void FlowGraphCompiler::GenerateMethodExtractorIntrinsic( kPoolReg = PP; } else { __ LoadFieldFromOffset(kWord, kPoolReg, CODE_REG, - Code::object_pool_offset()); + compiler::target::Code::object_pool_offset()); } __ LoadImmediate(R4, type_arguments_field_offset); - __ LoadFieldFromOffset(kWord, R1, kPoolReg, - ObjectPool::element_offset(function_index)); - __ LoadFieldFromOffset(kWord, CODE_REG, kPoolReg, - ObjectPool::element_offset(stub_index)); - __ Branch(FieldAddress( - CODE_REG, Code::entry_point_offset(Code::EntryKind::kUnchecked))); + __ LoadFieldFromOffset( + kWord, R1, kPoolReg, + compiler::target::ObjectPool::element_offset(function_index)); + __ LoadFieldFromOffset( + kWord, CODE_REG, kPoolReg, + compiler::target::ObjectPool::element_offset(stub_index)); + __ Branch(FieldAddress(CODE_REG, compiler::target::Code::entry_point_offset( + Code::EntryKind::kUnchecked))); } void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) { @@ -838,7 +844,7 @@ void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) { // SP: receiver. // Sequence node has one return node, its input is load field node. __ Comment("Inlined Getter"); - __ ldr(R0, Address(SP, 0 * kWordSize)); + __ ldr(R0, Address(SP, 0 * compiler::target::kWordSize)); __ LoadFieldFromOffset(kWord, R0, R0, offset); __ Ret(); } @@ -849,8 +855,8 @@ void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) { // SP+0: value. // Sequence node has one store node and one return NULL node. __ Comment("Inlined Setter"); - __ ldr(R0, Address(SP, 1 * kWordSize)); // Receiver. - __ ldr(R1, Address(SP, 0 * kWordSize)); // Value. + __ ldr(R0, Address(SP, 1 * compiler::target::kWordSize)); // Receiver. + __ ldr(R1, Address(SP, 0 * compiler::target::kWordSize)); // Value. __ StoreIntoObjectOffset(R0, offset, R1); __ LoadObject(R0, Object::null_object()); __ Ret(); @@ -862,13 +868,18 @@ void FlowGraphCompiler::EmitFrameEntry() { (!is_optimizing() || may_reoptimize())) { __ Comment("Invocation Count Check"); const Register function_reg = R8; - __ ldr(function_reg, FieldAddress(CODE_REG, Code::owner_offset())); - __ ldr(R3, FieldAddress(function_reg, Function::usage_counter_offset())); + __ ldr(function_reg, + FieldAddress(CODE_REG, compiler::target::Code::owner_offset())); + __ ldr(R3, + FieldAddress(function_reg, + compiler::target::Function::usage_counter_offset())); // Reoptimization of an optimized function is triggered by counting in // IC stubs, but not at the entry of the function. if (!is_optimizing()) { __ add(R3, R3, Operand(1)); - __ str(R3, FieldAddress(function_reg, Function::usage_counter_offset())); + __ str(R3, + FieldAddress(function_reg, + compiler::target::Function::usage_counter_offset())); } __ CompareImmediate(R3, GetOptimizationThreshold()); ASSERT(function_reg == R8); @@ -878,10 +889,10 @@ void FlowGraphCompiler::EmitFrameEntry() { if (flow_graph().IsCompiledForOsr()) { const intptr_t extra_slots = ExtraStackSlotsOnOsrEntry(); ASSERT(extra_slots >= 0); - __ EnterOsrFrame(extra_slots * kWordSize); + __ EnterOsrFrame(extra_slots * compiler::target::kWordSize); } else { ASSERT(StackSize() >= 0); - __ EnterDartFrame(StackSize() * kWordSize); + __ EnterDartFrame(StackSize() * compiler::target::kWordSize); } } @@ -907,7 +918,8 @@ void FlowGraphCompiler::EmitPrologue() { const intptr_t slot_index = compiler::target::frame_layout.FrameSlotForVariableIndex(-i); Register value_reg = slot_index == args_desc_slot ? ARGS_DESC_REG : R0; - __ StoreToOffset(kWord, value_reg, FP, slot_index * kWordSize); + __ StoreToOffset(kWord, value_reg, FP, + slot_index * compiler::target::kWordSize); } } @@ -1021,9 +1033,11 @@ void FlowGraphCompiler::EmitEdgeCounter(intptr_t edge_id) { bool old_use_far_branches = assembler_->use_far_branches(); assembler_->set_use_far_branches(true); #endif // DEBUG - __ LoadFieldFromOffset(kWord, R1, R0, Array::element_offset(edge_id)); + __ LoadFieldFromOffset(kWord, R1, R0, + compiler::target::Array::element_offset(edge_id)); __ add(R1, R1, Operand(Smi::RawValue(1))); - __ StoreIntoObjectNoBarrierOffset(R0, Array::element_offset(edge_id), R1); + __ StoreIntoObjectNoBarrierOffset( + R0, compiler::target::Array::element_offset(edge_id), R1); #if defined(DEBUG) assembler_->set_use_far_branches(old_use_far_branches); #endif // DEBUG @@ -1082,9 +1096,14 @@ void FlowGraphCompiler::EmitMegamorphicInstanceCall( __ Comment("MegamorphicCall"); // Load receiver into R0. - __ LoadFromOffset(kWord, R0, SP, (args_desc.Count() - 1) * kWordSize); + __ LoadFromOffset(kWord, R0, SP, + (args_desc.Count() - 1) * compiler::target::kWordSize); __ LoadObject(R9, cache); - __ ldr(LR, Address(THR, Thread::megamorphic_call_checked_entry_offset())); + __ ldr( + LR, + Address( + THR, + compiler::target::Thread::megamorphic_call_checked_entry_offset())); __ blx(LR); RecordSafepoint(locs, slow_path_argument_count); @@ -1121,8 +1140,9 @@ void FlowGraphCompiler::EmitSwitchableInstanceCall(const ICData& ic_data, const Code& initial_stub = StubCode::ICCallThroughFunction(); __ Comment("SwitchableCall"); - __ LoadFromOffset(kWord, R0, SP, - (ic_data.CountWithoutTypeArgs() - 1) * kWordSize); + __ LoadFromOffset( + kWord, R0, SP, + (ic_data.CountWithoutTypeArgs() - 1) * compiler::target::kWordSize); if (FLAG_precompiled_mode && FLAG_use_bare_instructions) { // The AOT runtime will replace the slot in the object pool with the // entrypoint address - see clustered_snapshot.cc. @@ -1131,8 +1151,10 @@ void FlowGraphCompiler::EmitSwitchableInstanceCall(const ICData& ic_data, __ LoadUniqueObject(CODE_REG, initial_stub); const intptr_t entry_point_offset = entry_kind == Code::EntryKind::kNormal - ? Code::entry_point_offset(Code::EntryKind::kMonomorphic) - : Code::entry_point_offset(Code::EntryKind::kMonomorphicUnchecked); + ? compiler::target::Code::entry_point_offset( + Code::EntryKind::kMonomorphic) + : compiler::target::Code::entry_point_offset( + Code::EntryKind::kMonomorphicUnchecked); __ ldr(LR, FieldAddress(CODE_REG, entry_point_offset)); } __ LoadUniqueObject(R9, ic_data); @@ -1265,7 +1287,9 @@ void FlowGraphCompiler::EmitTestAndCallLoadReceiver( const Array& arguments_descriptor) { __ Comment("EmitTestAndCall"); // Load receiver into R0. - __ LoadFromOffset(kWord, R0, SP, (count_without_type_args - 1) * kWordSize); + __ LoadFromOffset( + kWord, R0, SP, + (count_without_type_args - 1) * compiler::target::kWordSize); __ LoadObject(R4, arguments_descriptor); } diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc index 4b1ef59763d..6c06e20b707 100644 --- a/runtime/vm/compiler/backend/il.cc +++ b/runtime/vm/compiler/backend/il.cc @@ -823,7 +823,7 @@ bool CheckClassInstr::IsCompactCidRange(const Cids& cids) { intptr_t min = cids.ComputeLowestCid(); intptr_t max = cids.ComputeHighestCid(); - return (max - min) < kBitsPerWord; + return (max - min) < compiler::target::kBitsPerWord; } bool CheckClassInstr::IsBitTest() const { @@ -837,7 +837,7 @@ intptr_t CheckClassInstr::ComputeCidMask() const { for (intptr_t i = 0; i < cids_.length(); ++i) { intptr_t run; uintptr_t range = 1ul + cids_[i].Extent(); - if (range >= static_cast(kBitsPerWord)) { + if (range >= static_cast(compiler::target::kBitsPerWord)) { run = -1; } else { run = (1 << range) - 1; @@ -1835,7 +1835,7 @@ bool UnboxInt32Instr::ComputeCanDeoptimize() const { } const intptr_t value_cid = value()->Type()->ToCid(); if (value_cid == kSmiCid) { - return (kSmiBits > 32) && !is_truncating() && + return (compiler::target::kSmiBits > 32) && !is_truncating() && !RangeUtils::Fits(value()->definition()->range(), RangeBoundary::kRangeBoundaryInt32); } else if (value_cid == kMintCid) { @@ -1844,7 +1844,7 @@ bool UnboxInt32Instr::ComputeCanDeoptimize() const { RangeBoundary::kRangeBoundaryInt32); } else if (is_truncating() && value()->definition()->IsBoxInteger()) { return false; - } else if ((kSmiBits < 32) && value()->Type()->IsInt()) { + } else if ((compiler::target::kSmiBits < 32) && value()->Type()->IsInt()) { return !RangeUtils::Fits(value()->definition()->range(), RangeBoundary::kRangeBoundaryInt32); } else { @@ -1935,7 +1935,7 @@ bool BinaryIntegerOpInstr::RightIsPowerOfTwoConstant() const { static intptr_t RepresentationBits(Representation r) { switch (r) { case kTagged: - return kBitsPerWord - 1; + return compiler::target::kBitsPerWord - 1; case kUnboxedInt32: case kUnboxedUint32: return 32; @@ -3184,7 +3184,7 @@ Definition* UnboxInt64Instr::Canonicalize(FlowGraph* flow_graph) { // (on simdbc64 the [UnboxedConstantInstr] handling is only implemented for // doubles and causes a bailout for everthing else) #if !defined(TARGET_ARCH_DBC) - if (kBitsPerWord == 64) { + if (compiler::target::kBitsPerWord == 64) { ConstantInstr* c = value()->definition()->AsConstant(); if (c != NULL && (c->value().IsSmi() || c->value().IsMint())) { UnboxedConstantInstr* uc = @@ -5093,18 +5093,18 @@ intptr_t CheckArrayBoundInstr::LengthOffsetFor(intptr_t class_id) { if (RawObject::IsTypedDataClassId(class_id) || RawObject::IsTypedDataViewClassId(class_id) || RawObject::IsExternalTypedDataClassId(class_id)) { - return TypedDataBase::length_offset(); + return compiler::target::TypedDataBase::length_offset(); } switch (class_id) { case kGrowableObjectArrayCid: - return GrowableObjectArray::length_offset(); + return compiler::target::GrowableObjectArray::length_offset(); case kOneByteStringCid: case kTwoByteStringCid: - return String::length_offset(); + return compiler::target::String::length_offset(); case kArrayCid: case kImmutableArrayCid: - return Array::length_offset(); + return compiler::target::Array::length_offset(); default: UNREACHABLE(); return -1; diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h index 012ebadaf5c..757c1855f38 100644 --- a/runtime/vm/compiler/backend/il.h +++ b/runtime/vm/compiler/backend/il.h @@ -3018,6 +3018,8 @@ class ConstantInstr : public TemplateDefinition<0, NoThrow, Pure> { const Object& value() const { return value_; } + bool IsSmi() const { return compiler::target::IsSmi(value()); } + virtual bool ComputeCanDeoptimize() const { return false; } virtual void InferRange(RangeAnalysis* analysis, Range* range); @@ -4775,7 +4777,11 @@ class LoadCodeUnitsInstr : public TemplateDefinition<2, NoThrow> { Value* array() const { return inputs_[0]; } Value* index() const { return inputs_[1]; } - intptr_t index_scale() const { return Instance::ElementSizeFor(class_id_); } + + intptr_t index_scale() const { + return compiler::target::Instance::ElementSizeFor(class_id_); + } + intptr_t class_id() const { return class_id_; } intptr_t element_count() const { return element_count_; } @@ -6137,7 +6143,10 @@ class CaseInsensitiveCompareInstr const RuntimeEntry& TargetFunction() const { return entry_; } bool IsExternal() const { return cid_ == kExternalTwoByteStringCid; } intptr_t class_id() const { return cid_; } - intptr_t index_scale() const { return Instance::ElementSizeFor(cid_); } + + intptr_t index_scale() const { + return compiler::target::Instance::ElementSizeFor(cid_); + } virtual bool ComputeCanDeoptimize() const { return false; } diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc index 79485c7d89e..c687ec424f8 100644 --- a/runtime/vm/compiler/backend/il_arm.cc +++ b/runtime/vm/compiler/backend/il_arm.cc @@ -64,7 +64,8 @@ DEFINE_BACKEND(TailCall, Temp temp)) { __ LoadObject(CODE_REG, instr->code()); __ LeaveDartFrame(); // The arguments are still on the stack. - __ Branch(FieldAddress(CODE_REG, Code::entry_point_offset())); + __ Branch( + FieldAddress(CODE_REG, compiler::target::Code::entry_point_offset())); // Even though the TailCallInstr will be the last instruction in a basic // block, the flow graph compiler will emit native code for other blocks after @@ -129,7 +130,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const intptr_t fp_sp_dist = (compiler::target::frame_layout.first_local_from_fp + 1 - compiler->StackSize()) * - kWordSize; + compiler::target::kWordSize; ASSERT(fp_sp_dist <= 0); __ sub(R2, SP, Operand(FP)); __ CompareImmediate(R2, fp_sp_dist); @@ -234,10 +235,11 @@ void IfThenElseInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ Lsl(result, result, Operand(shift + kSmiTagSize)); } else { __ sub(result, result, Operand(1)); - const int32_t val = Smi::RawValue(true_value) - Smi::RawValue(false_value); + const int32_t val = compiler::target::ToRawSmi(true_value) - + compiler::target::ToRawSmi(false_value); __ AndImmediate(result, result, val); if (false_value != 0) { - __ AddImmediate(result, Smi::RawValue(false_value)); + __ AddImmediate(result, compiler::target::ToRawSmi(false_value)); } } } @@ -263,8 +265,10 @@ void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { // R4: Arguments descriptor. // R0: Function. ASSERT(locs()->in(0).reg() == R0); - __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset())); - __ ldr(R2, FieldAddress(R0, Code::function_entry_point_offset(entry_kind()))); + __ ldr(CODE_REG, FieldAddress(R0, compiler::target::Function::code_offset())); + __ ldr(R2, + FieldAddress(R0, compiler::target::Code::function_entry_point_offset( + entry_kind()))); // R2: instructions entry point. // R9: Smi 0 (no IC data; the lazy-compile stub expects a GC-safe value). @@ -320,7 +324,10 @@ void ConstantInstr::EmitMoveToLocation(FlowGraphCompiler* compiler, Register tmp) { if (destination.IsRegister()) { if (representation() == kUnboxedInt32) { - __ LoadImmediate(destination.reg(), Smi::Cast(value_).Value()); + int64_t v; + const bool ok = compiler::HasIntegerValue(value_, &v); + RELEASE_ASSERT(ok); + __ LoadImmediate(destination.reg(), v); } else { ASSERT(representation() == kTagged); __ LoadObject(destination.reg(), value_); @@ -350,7 +357,10 @@ void ConstantInstr::EmitMoveToLocation(FlowGraphCompiler* compiler, ASSERT(tmp != kNoRegister); const intptr_t dest_offset = destination.ToStackSlotOffset(); if (representation() == kUnboxedInt32) { - __ LoadImmediate(tmp, Smi::Cast(value_).Value()); + int64_t v; + const bool ok = compiler::HasIntegerValue(value_, &v); + RELEASE_ASSERT(ok); + __ LoadImmediate(tmp, v); } else { __ LoadObject(tmp, value_); } @@ -803,8 +813,8 @@ Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler, const Register left = locs()->in(0).reg(); Location right = locs()->in(1); if (right.IsConstant()) { - ASSERT(right.constant().IsSmi()); - const int32_t imm = reinterpret_cast(right.constant().raw()); + ASSERT(compiler::target::IsSmi(right.constant())); + const int32_t imm = compiler::target::ToRawSmi(right.constant()); __ TestImmediate(left, imm); } else { __ tst(left, Operand(right.reg())); @@ -933,7 +943,7 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ PushObject(Object::null_object()); // Pass a pointer to the first argument in R2. - __ add(R2, SP, Operand(ArgumentCount() * kWordSize)); + __ add(R2, SP, Operand(ArgumentCount() * compiler::target::kWordSize)); // Compute the effective address. When running under the simulator, // this is a redirection address that forces the simulator to call @@ -1179,9 +1189,8 @@ void NativeEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { CallingConventions::ArgumentRegisters[0] != TMP2 && CallingConventions::ArgumentRegisters[0] != R1); __ LoadImmediate(CallingConventions::ArgumentRegisters[0], callback_id_); - __ LoadFromOffset( - kWord, R1, THR, - compiler::target::Thread::verify_callback_isolate_entry_point_offset()); + __ LoadFromOffset(kWord, R1, THR, + compiler::target::Thread::verify_callback_entry_offset()); __ blx(R1); // Load the code object. @@ -1231,8 +1240,12 @@ void OneByteStringFromCharCodeInstr::EmitNativeCode( const Register char_code = locs()->in(0).reg(); const Register result = locs()->out(0).reg(); - __ ldr(result, Address(THR, Thread::predefined_symbols_address_offset())); - __ AddImmediate(result, Symbols::kNullCharCodeSymbolOffset * kWordSize); + __ ldr( + result, + Address(THR, + compiler::target::Thread::predefined_symbols_address_offset())); + __ AddImmediate( + result, Symbols::kNullCharCodeSymbolOffset * compiler::target::kWordSize); __ ldr(result, Address(result, char_code, LSL, 1)); // Char code is a smi. } @@ -1247,10 +1260,12 @@ void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(cid_ == kOneByteStringCid); const Register str = locs()->in(0).reg(); const Register result = locs()->out(0).reg(); - __ ldr(result, FieldAddress(str, String::length_offset())); - __ cmp(result, Operand(Smi::RawValue(1))); + __ ldr(result, FieldAddress(str, compiler::target::String::length_offset())); + __ cmp(result, Operand(compiler::target::ToRawSmi(1))); __ LoadImmediate(result, -1, NE); - __ ldrb(result, FieldAddress(str, OneByteString::data_offset()), EQ); + __ ldrb(result, + FieldAddress(str, compiler::target::OneByteString::data_offset()), + EQ); __ SmiTag(result); } @@ -1416,8 +1431,8 @@ static bool CanBeImmediateIndex(Value* value, if ((constant == NULL) || !Assembler::IsSafeSmi(constant->value())) { return false; } - const int64_t index = Smi::Cast(constant->value()).AsInt64Value(); - const intptr_t scale = Instance::ElementSizeFor(cid); + const int64_t index = compiler::target::SmiValue(constant->value()); + const intptr_t scale = compiler::target::Instance::ElementSizeFor(cid); const intptr_t base_offset = (is_external ? 0 : (Instance::DataOffsetFor(cid) - kHeapObjectTag)); const int64_t offset = index * scale + base_offset; @@ -1510,7 +1525,7 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { : __ ElementAddressForIntIndex( true, // Load. IsExternal(), class_id(), index_scale(), array, - Smi::Cast(index.constant()).Value(), + compiler::target::SmiValue(index.constant()), IP); // Temp register. // Warning: element_address may use register IP as base. } else { @@ -1520,11 +1535,11 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { IsExternal(), class_id(), index_scale(), array, index.reg()); } else { - __ LoadElementAddressForIntIndex(address, - true, // Load. - IsExternal(), class_id(), index_scale(), - array, - Smi::Cast(index.constant()).Value()); + __ LoadElementAddressForIntIndex( + address, + true, // Load. + IsExternal(), class_id(), index_scale(), array, + compiler::target::SmiValue(index.constant())); } } @@ -1603,10 +1618,10 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const Register result_hi = result_pair->At(1).reg(); if (aligned()) { __ ldr(result_lo, Address(address)); - __ ldr(result_hi, Address(address, kWordSize)); + __ ldr(result_hi, Address(address, compiler::target::kWordSize)); } else { __ LoadWordUnaligned(result_lo, address, TMP); - __ AddImmediate(address, address, kWordSize); + __ AddImmediate(address, address, compiler::target::kWordSize); __ LoadWordUnaligned(result_hi, address, TMP); } break; @@ -1802,15 +1817,16 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Address element_address(kNoRegister); if (directly_addressable) { - element_address = index.IsRegister() - ? __ ElementAddressForRegIndex( - false, // Store. - IsExternal(), class_id(), index_scale(), array, - index.reg()) - : __ ElementAddressForIntIndex( - false, // Store. - IsExternal(), class_id(), index_scale(), array, - Smi::Cast(index.constant()).Value(), temp); + element_address = + index.IsRegister() + ? __ ElementAddressForRegIndex(false, // Store. + IsExternal(), class_id(), + index_scale(), array, + index.reg()) + : __ ElementAddressForIntIndex( + false, // Store. + IsExternal(), class_id(), index_scale(), array, + compiler::target::SmiValue(index.constant()), temp); } else { if (index.IsRegister()) { __ LoadElementAddressForRegIndex(temp, @@ -1818,11 +1834,11 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { IsExternal(), class_id(), index_scale(), array, index.reg()); } else { - __ LoadElementAddressForIntIndex(temp, - false, // Store. - IsExternal(), class_id(), index_scale(), - array, - Smi::Cast(index.constant()).Value()); + __ LoadElementAddressForIntIndex( + temp, + false, // Store. + IsExternal(), class_id(), index_scale(), array, + compiler::target::SmiValue(index.constant())); } } @@ -1846,8 +1862,8 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { case kOneByteStringCid: { ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr); if (locs()->in(2).IsConstant()) { - const Smi& constant = Smi::Cast(locs()->in(2).constant()); - __ LoadImmediate(IP, static_cast(constant.Value())); + __ LoadImmediate(IP, + compiler::target::SmiValue(locs()->in(2).constant())); __ strb(IP, element_address); } else { const Register value = locs()->in(2).reg(); @@ -1859,8 +1875,7 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { case kExternalTypedDataUint8ClampedArrayCid: { ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr); if (locs()->in(2).IsConstant()) { - const Smi& constant = Smi::Cast(locs()->in(2).constant()); - intptr_t value = constant.Value(); + intptr_t value = compiler::target::SmiValue(locs()->in(2).constant()); // Clamp to 0x0 or 0xFF respectively. if (value > 0xFF) { value = 0xFF; @@ -1910,10 +1925,10 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Register value_hi = value_pair->At(1).reg(); if (aligned()) { __ str(value_lo, Address(temp)); - __ str(value_hi, Address(temp, kWordSize)); + __ str(value_hi, Address(temp, compiler::target::kWordSize)); } else { __ StoreWordUnaligned(value_lo, temp, temp2); - __ AddImmediate(temp, temp, kWordSize); + __ AddImmediate(temp, temp, compiler::target::kWordSize); __ StoreWordUnaligned(value_hi, temp, temp2); } break; @@ -2033,9 +2048,10 @@ void GuardFieldClassInstr::EmitNativeCode(FlowGraphCompiler* compiler) { if (emit_full_guard) { __ LoadObject(field_reg, Field::ZoneHandle(field().Original())); - FieldAddress field_cid_operand(field_reg, Field::guarded_cid_offset()); - FieldAddress field_nullability_operand(field_reg, - Field::is_nullable_offset()); + FieldAddress field_cid_operand( + field_reg, compiler::target::Field::guarded_cid_offset()); + FieldAddress field_nullability_operand( + field_reg, compiler::target::Field::is_nullable_offset()); if (value_cid == kDynamicCid) { LoadValueCid(compiler, value_cid_reg, value_reg); @@ -2082,7 +2098,8 @@ void GuardFieldClassInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(!compiler->is_optimizing()); __ Bind(fail); - __ ldrh(IP, FieldAddress(field_reg, Field::guarded_cid_offset())); + __ ldrh(IP, FieldAddress(field_reg, + compiler::target::Field::guarded_cid_offset())); __ CompareImmediate(IP, kDynamicCid); __ b(&ok, EQ); @@ -2174,12 +2191,13 @@ void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ LoadObject(field_reg, Field::ZoneHandle(field().Original())); - __ ldrsb( - offset_reg, - FieldAddress(field_reg, - Field::guarded_list_length_in_object_offset_offset())); + __ ldrsb(offset_reg, + FieldAddress(field_reg, + compiler::target::Field:: + guarded_list_length_in_object_offset_offset())); __ ldr(length_reg, - FieldAddress(field_reg, Field::guarded_list_length_offset())); + FieldAddress(field_reg, + compiler::target::Field::guarded_list_length_offset())); __ tst(offset_reg, Operand(offset_reg)); __ b(&ok, MI); @@ -2214,8 +2232,8 @@ void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ ldr(length_reg, FieldAddress(value_reg, field().guarded_list_length_in_object_offset())); - __ CompareImmediate(length_reg, - Smi::RawValue(field().guarded_list_length())); + __ CompareImmediate( + length_reg, compiler::target::ToRawSmi(field().guarded_list_length())); __ b(deopt, NE); } } @@ -2387,9 +2405,10 @@ void LoadCodeUnitsInstr::EmitNativeCode(FlowGraphCompiler* compiler) { result, temp); __ eor(temp, temp, Operand(temp)); __ StoreToOffset(kWord, value, result, - Mint::value_offset() - kHeapObjectTag); + compiler::target::Mint::value_offset() - kHeapObjectTag); __ StoreToOffset(kWord, temp, result, - Mint::value_offset() - kHeapObjectTag + kWordSize); + compiler::target::Mint::value_offset() - kHeapObjectTag + + compiler::target::kWordSize); __ Bind(&done); } } @@ -2487,17 +2506,21 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { switch (cid) { case kDoubleCid: __ Comment("UnboxedDoubleStoreInstanceFieldInstr"); - __ StoreDToOffset(value, temp, Double::value_offset() - kHeapObjectTag); + __ StoreDToOffset( + value, temp, + compiler::target::Double::value_offset() - kHeapObjectTag); break; case kFloat32x4Cid: __ Comment("UnboxedFloat32x4StoreInstanceFieldInstr"); - __ StoreMultipleDToOffset(value, 2, temp, - Float32x4::value_offset() - kHeapObjectTag); + __ StoreMultipleDToOffset( + value, 2, temp, + compiler::target::Float32x4::value_offset() - kHeapObjectTag); break; case kFloat64x2Cid: __ Comment("UnboxedFloat64x2StoreInstanceFieldInstr"); - __ StoreMultipleDToOffset(value, 2, temp, - Float64x2::value_offset() - kHeapObjectTag); + __ StoreMultipleDToOffset( + value, 2, temp, + compiler::target::Float64x2::value_offset() - kHeapObjectTag); break; default: UNREACHABLE(); @@ -2525,23 +2548,28 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ LoadObject(temp, Field::ZoneHandle(Z, slot().field().Original())); - __ ldrh(temp2, FieldAddress(temp, Field::is_nullable_offset())); + __ ldrh(temp2, + FieldAddress(temp, compiler::target::Field::is_nullable_offset())); __ CompareImmediate(temp2, kNullCid); __ b(&store_pointer, EQ); - __ ldrb(temp2, FieldAddress(temp, Field::kind_bits_offset())); + __ ldrb(temp2, + FieldAddress(temp, compiler::target::Field::kind_bits_offset())); __ tst(temp2, Operand(1 << Field::kUnboxingCandidateBit)); __ b(&store_pointer, EQ); - __ ldrh(temp2, FieldAddress(temp, Field::guarded_cid_offset())); + __ ldrh(temp2, + FieldAddress(temp, compiler::target::Field::guarded_cid_offset())); __ CompareImmediate(temp2, kDoubleCid); __ b(&store_double, EQ); - __ ldrh(temp2, FieldAddress(temp, Field::guarded_cid_offset())); + __ ldrh(temp2, + FieldAddress(temp, compiler::target::Field::guarded_cid_offset())); __ CompareImmediate(temp2, kFloat32x4Cid); __ b(&store_float32x4, EQ); - __ ldrh(temp2, FieldAddress(temp, Field::guarded_cid_offset())); + __ ldrh(temp2, + FieldAddress(temp, compiler::target::Field::guarded_cid_offset())); __ CompareImmediate(temp2, kFloat64x2Cid); __ b(&store_float64x2, EQ); @@ -2621,7 +2649,8 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Zone* zone, void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const Register field = locs()->in(0).reg(); const Register result = locs()->out(0).reg(); - __ LoadFieldFromOffset(kWord, result, field, Field::static_value_offset()); + __ LoadFieldFromOffset(kWord, result, field, + compiler::target::Field::static_value_offset()); } LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone, @@ -2641,12 +2670,16 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ LoadObject(temp, Field::ZoneHandle(Z, field().Original())); if (this->value()->NeedsWriteBarrier()) { - __ StoreIntoObject(temp, FieldAddress(temp, Field::static_value_offset()), - value, CanValueBeSmi(), - /*lr_reserved=*/!compiler->intrinsic_mode()); + __ StoreIntoObject( + temp, + FieldAddress(temp, compiler::target::Field::static_value_offset()), + value, CanValueBeSmi(), + /*lr_reserved=*/!compiler->intrinsic_mode()); } else { __ StoreIntoObjectNoBarrier( - temp, FieldAddress(temp, Field::static_value_offset()), value); + temp, + FieldAddress(temp, compiler::target::Field::static_value_offset()), + value); } } @@ -2703,11 +2736,13 @@ static void InlineArrayAllocation(FlowGraphCompiler* compiler, // Store the type argument field. __ StoreIntoObjectNoBarrier( - R0, FieldAddress(R0, Array::type_arguments_offset()), kElemTypeReg); + R0, FieldAddress(R0, compiler::target::Array::type_arguments_offset()), + kElemTypeReg); // Set the length field. - __ StoreIntoObjectNoBarrier(R0, FieldAddress(R0, Array::length_offset()), - kLengthReg); + __ StoreIntoObjectNoBarrier( + R0, FieldAddress(R0, compiler::target::Array::length_offset()), + kLengthReg); // Initialize all array elements to raw_null. // R0: new object start as a tagged pointer. @@ -2727,9 +2762,9 @@ static void InlineArrayAllocation(FlowGraphCompiler* compiler, #endif // DEBUG } __ AddImmediate(R6, R0, sizeof(RawArray) - kHeapObjectTag); - if (array_size < (kInlineArraySize * kWordSize)) { - __ InitializeFieldsNoBarrierUnrolled(R0, R6, 0, num_elements * kWordSize, - R8, R9); + if (array_size < (kInlineArraySize * compiler::target::kWordSize)) { + __ InitializeFieldsNoBarrierUnrolled( + R0, R6, 0, num_elements * compiler::target::kWordSize, R8, R9); } else { __ InitializeFieldsNoBarrier(R0, R6, R3, R8, R9); } @@ -2755,8 +2790,9 @@ void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) { if (compiler->is_optimizing() && !FLAG_precompiled_mode && num_elements()->BindsToConstant() && - num_elements()->BoundConstant().IsSmi()) { - const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value(); + compiler::target::IsSmi(num_elements()->BoundConstant())) { + const intptr_t length = + compiler::target::SmiValue(num_elements()->BoundConstant()); if (Array::IsValidLength(length)) { Label slow_path, done; InlineArrayAllocation(compiler, length, &slow_path, &done); @@ -2815,18 +2851,21 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { switch (cid) { case kDoubleCid: __ Comment("UnboxedDoubleLoadFieldInstr"); - __ LoadDFromOffset(result, temp, - Double::value_offset() - kHeapObjectTag); + __ LoadDFromOffset( + result, temp, + compiler::target::Double::value_offset() - kHeapObjectTag); break; case kFloat32x4Cid: __ Comment("UnboxedFloat32x4LoadFieldInstr"); - __ LoadMultipleDFromOffset(result, 2, temp, - Float32x4::value_offset() - kHeapObjectTag); + __ LoadMultipleDFromOffset( + result, 2, temp, + compiler::target::Float32x4::value_offset() - kHeapObjectTag); break; case kFloat64x2Cid: __ Comment("UnboxedFloat64x2LoadFieldInstr"); - __ LoadMultipleDFromOffset(result, 2, temp, - Float64x2::value_offset() - kHeapObjectTag); + __ LoadMultipleDFromOffset( + result, 2, temp, + compiler::target::Float64x2::value_offset() - kHeapObjectTag); break; default: UNREACHABLE(); @@ -2848,9 +2887,10 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ LoadObject(result_reg, Field::ZoneHandle(slot().field().Original())); - FieldAddress field_cid_operand(result_reg, Field::guarded_cid_offset()); - FieldAddress field_nullability_operand(result_reg, - Field::is_nullable_offset()); + FieldAddress field_cid_operand( + result_reg, compiler::target::Field::guarded_cid_offset()); + FieldAddress field_nullability_operand( + result_reg, compiler::target::Field::is_nullable_offset()); __ ldrh(temp, field_nullability_operand); __ CompareImmediate(temp, kNullCid); @@ -2982,25 +3022,38 @@ void InstantiateTypeArgumentsInstr::EmitNativeCode( // TODO(regis): Consider moving this into a shared stub to reduce // generated code size. __ LoadObject(R3, type_arguments()); - __ ldr(R3, FieldAddress(R3, TypeArguments::instantiations_offset())); - __ AddImmediate(R3, Array::data_offset() - kHeapObjectTag); + __ ldr(R3, FieldAddress( + R3, compiler::target::TypeArguments::instantiations_offset())); + __ AddImmediate(R3, compiler::target::Array::data_offset() - kHeapObjectTag); // The instantiations cache is initialized with Object::zero_array() and is // therefore guaranteed to contain kNoInstantiator. No length check needed. Label loop, next, found, slow_case; __ Bind(&loop); - __ ldr(R2, Address(R3, 0 * kWordSize)); // Cached instantiator type args. + __ ldr( + R2, + Address( + R3, + 0 * compiler::target::kWordSize)); // Cached instantiator type args. __ cmp(R2, Operand(instantiator_type_args_reg)); __ b(&next, NE); - __ ldr(IP, Address(R3, 1 * kWordSize)); // Cached function type args. + __ ldr( + IP, + Address(R3, + 1 * compiler::target::kWordSize)); // Cached function type args. __ cmp(IP, Operand(function_type_args_reg)); __ b(&found, EQ); __ Bind(&next); - __ AddImmediate(R3, StubCode::kInstantiationSizeInWords * kWordSize); - __ CompareImmediate(R2, Smi::RawValue(StubCode::kNoInstantiator)); + __ AddImmediate( + R3, StubCode::kInstantiationSizeInWords * compiler::target::kWordSize); + __ CompareImmediate(R2, + compiler::target::ToRawSmi(StubCode::kNoInstantiator)); __ b(&loop, NE); __ b(&slow_case); __ Bind(&found); - __ ldr(result_reg, Address(R3, 2 * kWordSize)); // Cached instantiated args. + __ ldr( + result_reg, + Address(R3, + 2 * compiler::target::kWordSize)); // Cached instantiated args. __ b(&type_arguments_instantiated); __ Bind(&slow_case); @@ -3076,7 +3129,8 @@ void AllocateUninitializedContextInstr::EmitNativeCode( // Setup up number of context variables field. __ LoadImmediate(temp0, num_context_variables()); - __ str(temp0, FieldAddress(result, Context::num_variables_offset())); + __ str(temp0, FieldAddress( + result, compiler::target::Context::num_variables_offset())); __ Bind(slow_path->exit_label()); } @@ -3117,7 +3171,8 @@ void InitStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Register temp = locs()->temp(0).reg(); Label call_runtime, no_call; - __ ldr(temp, FieldAddress(field, Field::static_value_offset())); + __ ldr(temp, + FieldAddress(field, compiler::target::Field::static_value_offset())); __ CompareObject(temp, Object::sentinel()); __ b(&call_runtime, EQ); @@ -3186,7 +3241,7 @@ void CatchBlockEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const intptr_t fp_sp_dist = (compiler::target::frame_layout.first_local_from_fp + 1 - compiler->StackSize()) * - kWordSize; + compiler::target::kWordSize; ASSERT(fp_sp_dist <= 0); __ AddImmediate(SP, FP, fp_sp_dist); @@ -3232,7 +3287,9 @@ class CheckStackOverflowSlowPath __ Comment("CheckStackOverflowSlowPathOsr"); __ Bind(osr_entry_label()); __ LoadImmediate(value, Thread::kOsrRequest); - __ str(value, Address(THR, Thread::stack_overflow_flags_offset())); + __ str(value, + Address(THR, + compiler::target::Thread::stack_overflow_flags_offset())); } __ Comment("CheckStackOverflowSlowPath"); __ Bind(entry_label()); @@ -3249,8 +3306,8 @@ class CheckStackOverflowSlowPath compiler->pending_deoptimization_env_ = env; if (using_shared_stub) { - const uword entry_point_offset = - Thread::stack_overflow_shared_stub_entry_point_offset( + const uword entry_point_offset = compiler::target::Thread:: + stack_overflow_shared_stub_entry_point_offset( instruction()->locs()->live_registers()->FpuRegisterCount() > 0); __ ldr(LR, Address(THR, entry_point_offset)); __ blx(LR); @@ -3290,7 +3347,7 @@ class CheckStackOverflowSlowPath }; void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - __ ldr(IP, Address(THR, Thread::stack_limit_offset())); + __ ldr(IP, Address(THR, compiler::target::Thread::stack_limit_offset())); __ cmp(SP, Operand(IP)); auto object_store = compiler->isolate()->object_store(); @@ -3327,7 +3384,8 @@ void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ LoadObject(temp, compiler->parsed_function().function()); intptr_t threshold = FLAG_optimization_counter_threshold * (loop_depth() + 1); - __ ldr(temp, FieldAddress(temp, Function::usage_counter_offset())); + __ ldr(temp, FieldAddress( + temp, compiler::target::Function::usage_counter_offset())); __ CompareImmediate(temp, threshold); __ b(slow_path->osr_entry_label(), GE); } @@ -3348,10 +3406,10 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler, : NULL; if (locs.in(1).IsConstant()) { const Object& constant = locs.in(1).constant(); - ASSERT(constant.IsSmi()); + ASSERT(compiler::target::IsSmi(constant)); // Immediate shift operation takes 5 bits for the count. const intptr_t kCountLimit = 0x1F; - const intptr_t value = Smi::Cast(constant).Value(); + const intptr_t value = compiler::target::SmiValue(constant); ASSERT((0 < value) && (value < kCountLimit)); if (shift_left->can_overflow()) { // Check for overflow (preserve left). @@ -3371,19 +3429,20 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler, // TODO(srdjan): Implement code below for is_truncating(). // If left is constant, we know the maximal allowed size for right. const Object& obj = shift_left->left()->BoundConstant(); - if (obj.IsSmi()) { - const intptr_t left_int = Smi::Cast(obj).Value(); + if (compiler::target::IsSmi(obj)) { + const intptr_t left_int = compiler::target::SmiValue(obj); if (left_int == 0) { __ cmp(right, Operand(0)); __ b(deopt, MI); __ mov(result, Operand(0)); return; } - const intptr_t max_right = kSmiBits - Utils::HighestBit(left_int); + const intptr_t max_right = + compiler::target::kSmiBits - Utils::HighestBit(left_int); const bool right_needs_check = !RangeUtils::IsWithin(right_range, 0, max_right - 1); if (right_needs_check) { - __ cmp(right, Operand(reinterpret_cast(Smi::New(max_right)))); + __ cmp(right, Operand(compiler::target::ToRawSmi(max_right))); __ b(deopt, CS); } __ SmiUntag(IP, right); @@ -3393,7 +3452,7 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler, } const bool right_needs_check = - !RangeUtils::IsWithin(right_range, 0, (Smi::kBits - 1)); + !RangeUtils::IsWithin(right_range, 0, (compiler::target::kSmiBits - 1)); if (!shift_left->can_overflow()) { if (right_needs_check) { if (!RangeUtils::IsPositive(right_range)) { @@ -3402,7 +3461,8 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler, __ b(deopt, MI); } - __ cmp(right, Operand(reinterpret_cast(Smi::New(Smi::kBits)))); + __ cmp(right, + Operand(compiler::target::ToRawSmi(compiler::target::kSmiBits))); __ mov(result, Operand(0), CS); __ SmiUntag(IP, right, CC); // SmiUntag right into IP if CC. __ Lsl(result, left, IP, CC); @@ -3413,7 +3473,8 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler, } else { if (right_needs_check) { ASSERT(shift_left->CanDeoptimize()); - __ cmp(right, Operand(reinterpret_cast(Smi::New(Smi::kBits)))); + __ cmp(right, + Operand(compiler::target::ToRawSmi(compiler::target::kSmiBits))); __ b(deopt, CS); } // Left is not a constant. @@ -3535,7 +3596,8 @@ void CheckedSmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { case Token::kSHL: ASSERT(result != left); ASSERT(result != right); - __ CompareImmediate(right, Smi::RawValue(Smi::kBits)); + __ CompareImmediate( + right, compiler::target::ToRawSmi(compiler::target::kSmiBits)); __ b(slow_path->entry_label(), HI); __ SmiUntag(TMP, right); @@ -3548,7 +3610,8 @@ void CheckedSmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { case Token::kSHR: ASSERT(result != left); ASSERT(result != right); - __ CompareImmediate(right, Smi::RawValue(Smi::kBits)); + __ CompareImmediate( + right, compiler::target::ToRawSmi(compiler::target::kSmiBits)); __ b(slow_path->entry_label(), HI); __ SmiUntag(result, right); @@ -3764,8 +3827,8 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { if (locs()->in(1).IsConstant()) { const Object& constant = locs()->in(1).constant(); - ASSERT(constant.IsSmi()); - const int32_t imm = reinterpret_cast(constant.raw()); + ASSERT(compiler::target::IsSmi(constant)); + const int32_t imm = compiler::target::ToRawSmi(constant); switch (op_kind()) { case Token::kADD: { if (deopt == NULL) { @@ -3789,7 +3852,7 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } case Token::kMUL: { // Keep left value tagged and untag right value. - const intptr_t value = Smi::Cast(constant).Value(); + const intptr_t value = compiler::target::SmiValue(constant); if (deopt == NULL) { __ LoadImmediate(IP, value); __ mul(result, left, IP); @@ -3803,7 +3866,7 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { break; } case Token::kTRUNCDIV: { - const intptr_t value = Smi::Cast(constant).Value(); + const intptr_t value = compiler::target::SmiValue(constant); ASSERT(value != kIntptrMin); ASSERT(Utils::IsPowerOfTwo(Utils::Abs(value))); const intptr_t shift_count = @@ -3859,7 +3922,7 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { case Token::kSHR: { // sarl operation masks the count to 5 bits. const intptr_t kCountLimit = 0x1F; - intptr_t value = Smi::Cast(constant).Value(); + intptr_t value = compiler::target::SmiValue(constant); __ Asr(result, left, Operand(Utils::Minimum(value + kSmiTagSize, kCountLimit))); __ SmiTag(result); @@ -4023,10 +4086,10 @@ static void EmitInt32ShiftLeft(FlowGraphCompiler* compiler, : NULL; ASSERT(locs.in(1).IsConstant()); const Object& constant = locs.in(1).constant(); - ASSERT(constant.IsSmi()); + ASSERT(compiler::target::IsSmi(constant)); // Immediate shift operation takes 5 bits for the count. const intptr_t kCountLimit = 0x1F; - const intptr_t value = Smi::Cast(constant).Value(); + const intptr_t value = compiler::target::SmiValue(constant); ASSERT((0 < value) && (value < kCountLimit)); if (shift_left->can_overflow()) { // Check for overflow (preserve left). @@ -4076,8 +4139,8 @@ void BinaryInt32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { if (locs()->in(1).IsConstant()) { const Object& constant = locs()->in(1).constant(); - ASSERT(constant.IsSmi()); - const intptr_t value = Smi::Cast(constant).Value(); + ASSERT(compiler::target::IsSmi(constant)); + const intptr_t value = compiler::target::SmiValue(constant); switch (op_kind()) { case Token::kADD: { if (deopt == NULL) { @@ -4318,7 +4381,7 @@ void UnboxInstr::EmitLoadFromBox(FlowGraphCompiler* compiler) { ASSERT(result->At(0).reg() != box); __ LoadFieldFromOffset(kWord, result->At(0).reg(), box, ValueOffset()); __ LoadFieldFromOffset(kWord, result->At(1).reg(), box, - ValueOffset() + kWordSize); + ValueOffset() + compiler::target::kWordSize); break; } @@ -4380,7 +4443,8 @@ void UnboxInstr::EmitLoadInt32FromBoxOrSmi(FlowGraphCompiler* compiler) { const Register result = locs()->out(0).reg(); Label done; __ SmiUntag(result, value, &done); - __ LoadFieldFromOffset(kWord, result, value, Mint::value_offset()); + __ LoadFieldFromOffset(kWord, result, value, + compiler::target::Mint::value_offset()); __ Bind(&done); } @@ -4435,14 +4499,16 @@ void BoxInteger32Instr::EmitNativeCode(FlowGraphCompiler* compiler) { BoxAllocationSlowPath::Allocate(compiler, this, compiler->mint_class(), out, temp); if (from_representation() == kUnboxedInt32) { - __ Asr(temp, value, Operand(kBitsPerWord - 1)); + __ Asr(temp, value, Operand(compiler::target::kBitsPerWord - 1)); } else { ASSERT(from_representation() == kUnboxedUint32); __ eor(temp, temp, Operand(temp)); } - __ StoreToOffset(kWord, value, out, Mint::value_offset() - kHeapObjectTag); + __ StoreToOffset(kWord, value, out, + compiler::target::Mint::value_offset() - kHeapObjectTag); __ StoreToOffset(kWord, temp, out, - Mint::value_offset() - kHeapObjectTag + kWordSize); + compiler::target::Mint::value_offset() - kHeapObjectTag + + compiler::target::kWordSize); __ Bind(&done); } } @@ -4488,9 +4554,10 @@ void BoxInt64Instr::EmitNativeCode(FlowGraphCompiler* compiler) { BoxAllocationSlowPath::Allocate(compiler, this, compiler->mint_class(), out_reg, tmp); __ StoreToOffset(kWord, value_lo, out_reg, - Mint::value_offset() - kHeapObjectTag); + compiler::target::Mint::value_offset() - kHeapObjectTag); __ StoreToOffset(kWord, value_hi, out_reg, - Mint::value_offset() - kHeapObjectTag + kWordSize); + compiler::target::Mint::value_offset() - kHeapObjectTag + + compiler::target::kWordSize); __ Bind(&done); } @@ -4499,10 +4566,13 @@ static void LoadInt32FromMint(FlowGraphCompiler* compiler, Register result, Register temp, Label* deopt) { - __ LoadFieldFromOffset(kWord, result, mint, Mint::value_offset()); + __ LoadFieldFromOffset(kWord, result, mint, + compiler::target::Mint::value_offset()); if (deopt != NULL) { - __ LoadFieldFromOffset(kWord, temp, mint, Mint::value_offset() + kWordSize); - __ cmp(temp, Operand(result, ASR, kBitsPerWord - 1)); + __ LoadFieldFromOffset( + kWord, temp, mint, + compiler::target::Mint::value_offset() + compiler::target::kWordSize); + __ cmp(temp, Operand(result, ASR, compiler::target::kBitsPerWord - 1)); __ b(deopt, NE); } } @@ -5489,7 +5559,8 @@ void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const Register value_obj = locs()->in(0).reg(); ASSERT(result == R0); ASSERT(result != value_obj); - __ LoadDFromOffset(DTMP, value_obj, Double::value_offset() - kHeapObjectTag); + __ LoadDFromOffset(DTMP, value_obj, + compiler::target::Double::value_offset() - kHeapObjectTag); Label done, do_call; // First check for NaN. Checking for minint after the conversion doesn't work @@ -6066,11 +6137,11 @@ void CheckClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Register value = locs()->in(0).reg(); Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckClass); if (cids_.IsSingleCid()) { - __ CompareImmediate(value, Smi::RawValue(cids_.cid_start)); + __ CompareImmediate(value, compiler::target::ToRawSmi(cids_.cid_start)); __ b(deopt, NE); } else { - __ AddImmediate(value, -Smi::RawValue(cids_.cid_start)); - __ CompareImmediate(value, Smi::RawValue(cids_.Extent())); + __ AddImmediate(value, -compiler::target::ToRawSmi(cids_.cid_start)); + __ CompareImmediate(value, compiler::target::ToRawSmi(cids_.Extent())); __ b(deopt, HI); // Unsigned higher. } } @@ -6096,9 +6167,11 @@ void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Location index_loc = locs()->in(kIndexPos); if (length_loc.IsConstant() && index_loc.IsConstant()) { - ASSERT((Smi::Cast(length_loc.constant()).Value() <= - Smi::Cast(index_loc.constant()).Value()) || - (Smi::Cast(index_loc.constant()).Value() < 0)); +#ifdef DEBUG + const int32_t length = compiler::target::SmiValue(length_loc.constant()); + const int32_t index = compiler::target::SmiValue(index_loc.constant()); + ASSERT((length <= index) || (index < 0)); +#endif // Unconditionally deoptimize for constant bounds checks because they // only occur only when index is out-of-bounds. __ b(deopt); @@ -6108,20 +6181,21 @@ void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { const intptr_t index_cid = index()->Type()->ToCid(); if (index_loc.IsConstant()) { const Register length = length_loc.reg(); - const Smi& index = Smi::Cast(index_loc.constant()); - __ CompareImmediate(length, reinterpret_cast(index.raw())); + __ CompareImmediate(length, + compiler::target::ToRawSmi(index_loc.constant())); __ b(deopt, LS); } else if (length_loc.IsConstant()) { - const Smi& length = Smi::Cast(length_loc.constant()); const Register index = index_loc.reg(); if (index_cid != kSmiCid) { __ BranchIfNotSmi(index, deopt); } - if (length.Value() == Smi::kMaxValue) { + if (compiler::target::SmiValue(length_loc.constant()) == + compiler::target::kSmiMax) { __ tst(index, Operand(index)); __ b(deopt, MI); } else { - __ CompareImmediate(index, reinterpret_cast(length.raw())); + __ CompareImmediate(index, + compiler::target::ToRawSmi(length_loc.constant())); __ b(deopt, CS); } } else { @@ -6353,7 +6427,8 @@ class ShiftInt64OpSlowPath : public ThrowErrorSlowPathCode { switch (instruction()->AsShiftInt64Op()->op_kind()) { case Token::kSHR: - __ Asr(out_hi, left_hi, Operand(kBitsPerWord - 1), GE); + __ Asr(out_hi, left_hi, Operand(compiler::target::kBitsPerWord - 1), + GE); __ mov(out_lo, Operand(out_hi), GE); break; case Token::kSHL: { @@ -6372,10 +6447,13 @@ class ShiftInt64OpSlowPath : public ThrowErrorSlowPathCode { // The unboxed int64 argument is passed through a dedicated slot in Thread. // TODO(dartbug.com/33549): Clean this up when unboxed values // could be passed as arguments. - __ StoreToOffset(kWord, right_lo, THR, - Thread::unboxed_int64_runtime_arg_offset()); - __ StoreToOffset(kWord, right_hi, THR, - Thread::unboxed_int64_runtime_arg_offset() + kWordSize); + __ StoreToOffset( + kWord, right_lo, THR, + compiler::target::Thread::unboxed_int64_runtime_arg_offset()); + __ StoreToOffset( + kWord, right_hi, THR, + compiler::target::Thread::unboxed_int64_runtime_arg_offset() + + compiler::target::kWordSize); } }; @@ -6513,10 +6591,13 @@ class ShiftUint32OpSlowPath : public ThrowErrorSlowPathCode { // The unboxed int64 argument is passed through a dedicated slot in Thread. // TODO(dartbug.com/33549): Clean this up when unboxed values // could be passed as arguments. - __ StoreToOffset(kWord, right_lo, THR, - Thread::unboxed_int64_runtime_arg_offset()); - __ StoreToOffset(kWord, right_hi, THR, - Thread::unboxed_int64_runtime_arg_offset() + kWordSize); + __ StoreToOffset( + kWord, right_lo, THR, + compiler::target::Thread::unboxed_int64_runtime_arg_offset()); + __ StoreToOffset( + kWord, right_hi, THR, + compiler::target::Thread::unboxed_int64_runtime_arg_offset() + + compiler::target::kWordSize); } }; @@ -6809,7 +6890,7 @@ void IntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnboxInteger); ASSERT(to() == kUnboxedInt32); - __ cmp(in_hi, Operand(in_lo, ASR, kBitsPerWord - 1)); + __ cmp(in_hi, Operand(in_lo, ASR, compiler::target::kBitsPerWord - 1)); __ b(deopt, NE); } } else if (from() == kUnboxedUint32 || from() == kUnboxedInt32) { @@ -6824,7 +6905,7 @@ void IntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ eor(out_hi, out_hi, Operand(out_hi)); } else { ASSERT(from() == kUnboxedInt32); - __ mov(out_hi, Operand(in, ASR, kBitsPerWord - 1)); + __ mov(out_hi, Operand(in, ASR, compiler::target::kBitsPerWord - 1)); } } else { UNREACHABLE(); @@ -6847,7 +6928,8 @@ void UnboxedWidthExtenderInstr::EmitNativeCode(FlowGraphCompiler* compiler) { Register reg = locs()->in(0).reg(); // There are no builtin sign- or zero-extension instructions, so we'll have to // use shifts instead. - const intptr_t shift_length = (kWordSize - from_width_bytes()) * kBitsPerByte; + const intptr_t shift_length = + (compiler::target::kWordSize - from_width_bytes()) * kBitsPerByte; __ Lsl(reg, reg, Operand(shift_length)); switch (representation_) { case kUnboxedInt32: // Sign extend operand. diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc index 610325da5ed..1b5b2c3cceb 100644 --- a/runtime/vm/compiler/backend/il_arm64.cc +++ b/runtime/vm/compiler/backend/il_arm64.cc @@ -1079,9 +1079,8 @@ void NativeEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { CallingConventions::ArgumentRegisters[0] != TMP2 && CallingConventions::ArgumentRegisters[0] != R1); __ LoadImmediate(CallingConventions::ArgumentRegisters[0], callback_id_); - __ LoadFromOffset( - R1, THR, - compiler::target::Thread::verify_callback_isolate_entry_point_offset()); + __ LoadFromOffset(R1, THR, + compiler::target::Thread::verify_callback_entry_offset()); __ blr(R1); // Load the code object. diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc index a91227ac211..7268abe603c 100644 --- a/runtime/vm/compiler/backend/il_ia32.cc +++ b/runtime/vm/compiler/backend/il_ia32.cc @@ -1049,8 +1049,9 @@ void NativeEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { // Now that the safepoint has ended, we can hold Dart objects with bare hands. // TODO(35934): fix linking issue __ pushl(Immediate(callback_id_)); - __ movl(EAX, Address(THR, compiler::target::Thread:: - verify_callback_isolate_entry_point_offset())); + __ movl( + EAX, + Address(THR, compiler::target::Thread::verify_callback_entry_offset())); __ call(EAX); __ popl(EAX); diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc index ec4b97b8920..c0d1f411f44 100644 --- a/runtime/vm/compiler/backend/il_x64.cc +++ b/runtime/vm/compiler/backend/il_x64.cc @@ -1072,8 +1072,9 @@ void NativeEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { // Otherwise we'll clobber the argument sent from the caller. COMPILE_ASSERT(RAX != CallingConventions::kArg1Reg); __ movq(CallingConventions::kArg1Reg, Immediate(callback_id_)); - __ movq(RAX, Address(THR, compiler::target::Thread:: - verify_callback_isolate_entry_point_offset())); + __ movq( + RAX, + Address(THR, compiler::target::Thread::verify_callback_entry_offset())); __ call(RAX); // Load the code object. diff --git a/runtime/vm/compiler/backend/inliner.cc b/runtime/vm/compiler/backend/inliner.cc index 9c17bb46404..523500588d1 100644 --- a/runtime/vm/compiler/backend/inliner.cc +++ b/runtime/vm/compiler/backend/inliner.cc @@ -2391,7 +2391,8 @@ static bool ShouldInlineInt64ArrayOps() { static bool CanUnboxInt32() { // Int32/Uint32 can be unboxed if it fits into a smi or the platform // supports unboxed mints. - return (kSmiBits >= 32) || FlowGraphCompiler::SupportsUnboxedInt64(); + return (compiler::target::kSmiBits >= 32) || + FlowGraphCompiler::SupportsUnboxedInt64(); } // Quick access to the current one. @@ -2423,8 +2424,9 @@ static intptr_t PrepareInlineIndexedOp(FlowGraph* flow_graph, *array = elements; array_cid = kArrayCid; } else if (RawObject::IsExternalTypedDataClassId(array_cid)) { - LoadUntaggedInstr* elements = new (Z) LoadUntaggedInstr( - new (Z) Value(*array), ExternalTypedData::data_offset()); + LoadUntaggedInstr* elements = new (Z) + LoadUntaggedInstr(new (Z) Value(*array), + compiler::target::TypedDataBase::data_field_offset()); *cursor = flow_graph->AppendTo(*cursor, elements, NULL, FlowGraph::kValue); *array = elements; } @@ -2456,11 +2458,12 @@ static bool InlineGetIndexed(FlowGraph* flow_graph, if ((array_cid == kTypedDataInt32ArrayCid) || (array_cid == kTypedDataUint32ArrayCid)) { // Deoptimization may be needed if result does not always fit in a Smi. - deopt_id = (kSmiBits >= 32) ? DeoptId::kNone : call->deopt_id(); + deopt_id = + (compiler::target::kSmiBits >= 32) ? DeoptId::kNone : call->deopt_id(); } // Array load and return. - intptr_t index_scale = Instance::ElementSizeFor(array_cid); + intptr_t index_scale = compiler::target::Instance::ElementSizeFor(array_cid); LoadIndexedInstr* load = new (Z) LoadIndexedInstr(new (Z) Value(array), new (Z) Value(index), index_scale, array_cid, kAlignedAccess, deopt_id, call->token_pos()); @@ -2679,7 +2682,8 @@ static bool InlineSetIndexed(FlowGraph* flow_graph, FlowGraph::kValue); } - const intptr_t index_scale = Instance::ElementSizeFor(array_cid); + const intptr_t index_scale = + compiler::target::Instance::ElementSizeFor(array_cid); *last = new (Z) StoreIndexedInstr( new (Z) Value(array), new (Z) Value(index), new (Z) Value(stored_value), needs_store_barrier, index_scale, array_cid, kAlignedAccess, @@ -2835,7 +2839,7 @@ static void PrepareInlineTypedArrayBoundsCheck(FlowGraph* flow_graph, call->token_pos()); *cursor = flow_graph->AppendTo(*cursor, length, NULL, FlowGraph::kValue); - intptr_t element_size = Instance::ElementSizeFor(array_cid); + intptr_t element_size = compiler::target::Instance::ElementSizeFor(array_cid); ConstantInstr* bytes_per_element = flow_graph->GetConstant(Smi::Handle(Z, Smi::New(element_size))); BinarySmiOpInstr* len_in_bytes = new (Z) @@ -2846,7 +2850,8 @@ static void PrepareInlineTypedArrayBoundsCheck(FlowGraph* flow_graph, // adjusted_length = len_in_bytes - (element_size - 1). Definition* adjusted_length = len_in_bytes; - intptr_t adjustment = Instance::ElementSizeFor(view_cid) - 1; + intptr_t adjustment = + compiler::target::Instance::ElementSizeFor(view_cid) - 1; if (adjustment > 0) { ConstantInstr* length_adjustment = flow_graph->GetConstant(Smi::Handle(Z, Smi::New(adjustment))); @@ -2887,8 +2892,9 @@ static void PrepareInlineByteArrayBaseOp(FlowGraph* flow_graph, if (array_cid == kDynamicCid || RawObject::IsExternalTypedDataClassId(array_cid)) { // Internal or External typed data: load untagged. - auto elements = new (Z) LoadUntaggedInstr( - new (Z) Value(*array), TypedDataBase::data_field_offset()); + auto elements = new (Z) + LoadUntaggedInstr(new (Z) Value(*array), + compiler::target::TypedDataBase::data_field_offset()); *cursor = flow_graph->AppendTo(*cursor, elements, NULL, FlowGraph::kValue); *array = elements; } else { @@ -3045,7 +3051,7 @@ static bool InlineByteArrayBaseStore(FlowGraph* flow_graph, case kTypedDataInt32ArrayCid: case kTypedDataUint32ArrayCid: // On 64-bit platforms assume that stored value is always a smi. - if (kSmiBits >= 32) { + if (compiler::target::kSmiBits >= 32) { value_check = Cids::CreateMonomorphic(Z, kSmiCid); } break; @@ -3209,18 +3215,21 @@ static Definition* PrepareInlineStringIndexOp(FlowGraph* flow_graph, // For external strings: Load backing store. if (cid == kExternalOneByteStringCid) { - str = new LoadUntaggedInstr(new Value(str), - ExternalOneByteString::external_data_offset()); + str = new LoadUntaggedInstr( + new Value(str), + compiler::target::ExternalOneByteString::external_data_offset()); cursor = flow_graph->AppendTo(cursor, str, NULL, FlowGraph::kValue); } else if (cid == kExternalTwoByteStringCid) { - str = new LoadUntaggedInstr(new Value(str), - ExternalTwoByteString::external_data_offset()); + str = new LoadUntaggedInstr( + new Value(str), + compiler::target::ExternalTwoByteString::external_data_offset()); cursor = flow_graph->AppendTo(cursor, str, NULL, FlowGraph::kValue); } - LoadIndexedInstr* load_indexed = new (Z) LoadIndexedInstr( - new (Z) Value(str), new (Z) Value(index), Instance::ElementSizeFor(cid), - cid, kAlignedAccess, DeoptId::kNone, call->token_pos()); + LoadIndexedInstr* load_indexed = new (Z) + LoadIndexedInstr(new (Z) Value(str), new (Z) Value(index), + compiler::target::Instance::ElementSizeFor(cid), cid, + kAlignedAccess, DeoptId::kNone, call->token_pos()); cursor = flow_graph->AppendTo(cursor, load_indexed, NULL, FlowGraph::kValue); auto box = BoxInstr::Create(kUnboxedIntPtr, new Value(load_indexed)); diff --git a/runtime/vm/compiler/backend/linearscan.h b/runtime/vm/compiler/backend/linearscan.h index 7c1a93e3bd1..9655f32d1c3 100644 --- a/runtime/vm/compiler/backend/linearscan.h +++ b/runtime/vm/compiler/backend/linearscan.h @@ -52,7 +52,8 @@ struct ExtraLoopInfo; class FlowGraphAllocator : public ValueObject { public: // Number of stack slots needed for a fpu register spill slot. - static const intptr_t kDoubleSpillFactor = kDoubleSize / kWordSize; + static const intptr_t kDoubleSpillFactor = + kDoubleSize / compiler::target::kWordSize; explicit FlowGraphAllocator(const FlowGraph& flow_graph, bool intrinsic_mode = false); @@ -525,16 +526,16 @@ class LiveRange : public ZoneAllocated { Location spill_slot() const { return spill_slot_; } bool HasOnlyUnconstrainedUsesInLoop(intptr_t loop_id) const { - if (loop_id < kBitsPerWord) { - const intptr_t mask = static_cast(1) << loop_id; + if (loop_id < kMaxLoops) { + const uint64_t mask = static_cast(1) << loop_id; return (has_only_any_uses_in_loops_ & mask) != 0; } return false; } void MarkHasOnlyUnconstrainedUsesInLoop(intptr_t loop_id) { - if (loop_id < kBitsPerWord) { - has_only_any_uses_in_loops_ |= static_cast(1) << loop_id; + if (loop_id < kMaxLoops) { + has_only_any_uses_in_loops_ |= static_cast(1) << loop_id; } } @@ -576,7 +577,8 @@ class LiveRange : public ZoneAllocated { LiveRange* next_sibling_; - intptr_t has_only_any_uses_in_loops_; + static constexpr intptr_t kMaxLoops = sizeof(uint64_t) * kBitsPerByte; + uint64_t has_only_any_uses_in_loops_; bool is_loop_phi_; AllocationFinger finger_; diff --git a/runtime/vm/compiler/backend/locations.cc b/runtime/vm/compiler/backend/locations.cc index f705a155075..34f8223df73 100644 --- a/runtime/vm/compiler/backend/locations.cc +++ b/runtime/vm/compiler/backend/locations.cc @@ -145,7 +145,7 @@ Address LocationToStackSlotAddress(Location loc) { template intptr_t TemplateLocation::ToStackSlotOffset() const { - return stack_index() * kWordSize; + return stack_index() * compiler::target::kWordSize; } template diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc index d619f960d3a..28f3b2d192d 100644 --- a/runtime/vm/compiler/backend/range_analysis.cc +++ b/runtime/vm/compiler/backend/range_analysis.cc @@ -816,8 +816,8 @@ class BoundsCheckGeneralizer { // AOT should only see non-deopting GenericCheckBound. ASSERT(!FLAG_precompiled_mode); - ConstantInstr* max_smi = - flow_graph_->GetConstant(Smi::Handle(Smi::New(Smi::kMaxValue))); + ConstantInstr* max_smi = flow_graph_->GetConstant( + Smi::Handle(Smi::New(compiler::target::kSmiMax))); for (intptr_t i = 0; i < non_positive_symbols.length(); i++) { CheckArrayBoundInstr* precondition = new CheckArrayBoundInstr( new Value(max_smi), new Value(non_positive_symbols[i]), @@ -1075,7 +1075,7 @@ class BoundsCheckGeneralizer { c = left_const + right_const; if (Utils::WillAddOverflow(left_const, right_const) || - !Smi::IsValid(c)) { + !compiler::target::IsSmi(c)) { return false; // Abort. } @@ -1120,7 +1120,7 @@ class BoundsCheckGeneralizer { c = (left_const - right_const); if (Utils::WillSubOverflow(left_const, right_const) || - !Smi::IsValid(c)) { + !compiler::target::IsSmi(c)) { return false; // Abort. } @@ -1180,7 +1180,7 @@ class BoundsCheckGeneralizer { } } else if ((*defn)->IsConstant()) { ConstantInstr* constant_defn = (*defn)->AsConstant(); - if ((constant != NULL) && constant_defn->value().IsSmi()) { + if ((constant != NULL) && constant_defn->IsSmi()) { *defn = NULL; *constant = Smi::Cast(constant_defn->value()).Value(); } @@ -1195,7 +1195,7 @@ class BoundsCheckGeneralizer { Definition* defn) { if (defn->IsConstant()) { const Object& value = defn->AsConstant()->value(); - return value.IsSmi() && (Smi::Cast(value).Value() >= 0); + return compiler::target::IsSmi(value) && (Smi::Cast(value).Value() >= 0); } else if (defn->HasSSATemp()) { if (!RangeUtils::IsPositive(defn->range())) { symbols->Add(defn); @@ -1683,7 +1683,7 @@ void IntegerInstructionSelector::ReplaceInstructions() { } RangeBoundary RangeBoundary::FromDefinition(Definition* defn, int64_t offs) { - if (defn->IsConstant() && defn->AsConstant()->value().IsSmi()) { + if (defn->IsConstant() && defn->AsConstant()->IsSmi()) { return FromConstant(Smi::Cast(defn->AsConstant()->value()).Value() + offs); } ASSERT(IsValidOffsetForSymbolicRangeBoundary(offs)); @@ -2289,7 +2289,8 @@ void Range::Mul(const Range* left_range, const int64_t left_max = ConstantAbsMax(left_range); const int64_t right_max = ConstantAbsMax(right_range); - if ((left_max <= -kSmiMin) && (right_max <= -kSmiMin) && + if ((left_max <= -compiler::target::kSmiMin) && + (right_max <= -compiler::target::kSmiMin) && ((left_max == 0) || (right_max <= kMaxInt64 / left_max))) { // Product of left and right max values stays in 64 bit range. const int64_t mul_max = left_max * right_max; @@ -2625,8 +2626,9 @@ void LoadFieldInstr::InferRange(RangeAnalysis* analysis, Range* range) { switch (slot().kind()) { case Slot::Kind::kArray_length: case Slot::Kind::kGrowableObjectArray_length: - *range = Range(RangeBoundary::FromConstant(0), - RangeBoundary::FromConstant(Array::kMaxElements)); + *range = Range( + RangeBoundary::FromConstant(0), + RangeBoundary::FromConstant(compiler::target::Array::kMaxElements)); break; case Slot::Kind::kTypedDataBase_length: @@ -2635,8 +2637,9 @@ void LoadFieldInstr::InferRange(RangeAnalysis* analysis, Range* range) { break; case Slot::Kind::kString_length: - *range = Range(RangeBoundary::FromConstant(0), - RangeBoundary::FromConstant(String::kMaxElements)); + *range = Range( + RangeBoundary::FromConstant(0), + RangeBoundary::FromConstant(compiler::target::String::kMaxElements)); break; case Slot::Kind::kDartField: @@ -2929,7 +2932,8 @@ bool CheckArrayBoundInstr::IsRedundant(const RangeBoundary& length) { // Range of the index is unknown can't decide if the check is redundant. if (index_range == NULL) { - if (!(index()->BindsToConstant() && index()->BoundConstant().IsSmi())) { + if (!(index()->BindsToConstant() && + compiler::target::IsSmi(index()->BoundConstant()))) { return false; } diff --git a/runtime/vm/compiler/backend/range_analysis.h b/runtime/vm/compiler/backend/range_analysis.h index a16ea2beae0..e34d230781e 100644 --- a/runtime/vm/compiler/backend/range_analysis.h +++ b/runtime/vm/compiler/backend/range_analysis.h @@ -64,7 +64,8 @@ class RangeBoundary : public ValueObject { static RangeBoundary FromDefinition(Definition* defn, int64_t offs = 0); static bool IsValidOffsetForSymbolicRangeBoundary(int64_t offset) { - if ((offset > (kMaxInt64 - kSmiMax)) || (offset < (kMinInt64 - kSmiMin))) { + if ((offset > (kMaxInt64 - compiler::target::kSmiMax)) || + (offset < (kMinInt64 - compiler::target::kSmiMin))) { // Avoid creating symbolic range boundaries which can wrap around. return false; } @@ -72,16 +73,20 @@ class RangeBoundary : public ValueObject { } // Construct a RangeBoundary for the constant MinSmi value. - static RangeBoundary MinSmi() { return FromConstant(Smi::kMinValue); } + static RangeBoundary MinSmi() { + return FromConstant(compiler::target::kSmiMin); + } // Construct a RangeBoundary for the constant MaxSmi value. - static RangeBoundary MaxSmi() { return FromConstant(Smi::kMaxValue); } + static RangeBoundary MaxSmi() { + return FromConstant(compiler::target::kSmiMax); + } // Construct a RangeBoundary for the constant kMin value. static RangeBoundary MinConstant(RangeSize size) { switch (size) { case kRangeBoundarySmi: - return FromConstant(Smi::kMinValue); + return FromConstant(compiler::target::kSmiMin); case kRangeBoundaryInt32: return FromConstant(kMinInt32); case kRangeBoundaryInt64: @@ -94,7 +99,7 @@ class RangeBoundary : public ValueObject { static RangeBoundary MaxConstant(RangeSize size) { switch (size) { case kRangeBoundarySmi: - return FromConstant(Smi::kMaxValue); + return FromConstant(compiler::target::kSmiMax); case kRangeBoundaryInt32: return FromConstant(kMaxInt32); case kRangeBoundaryInt64: @@ -138,7 +143,8 @@ class RangeBoundary : public ValueObject { // Returns true when this is a constant that is outside of Smi range. bool OverflowedSmi() const { - return (IsConstant() && !Smi::IsValid(ConstantValue())) || IsInfinity(); + return (IsConstant() && !compiler::target::IsSmi(ConstantValue())) || + IsInfinity(); } bool Overflowed(RangeBoundary::RangeSize size) const { diff --git a/runtime/vm/compiler/backend/range_analysis_test.cc b/runtime/vm/compiler/backend/range_analysis_test.cc index c67708f9eaf..81b1467f0fa 100644 --- a/runtime/vm/compiler/backend/range_analysis_test.cc +++ b/runtime/vm/compiler/backend/range_analysis_test.cc @@ -67,15 +67,18 @@ TEST_CASE(RangeTests) { TEST_RANGE_OP(Range::Shl, -1, 1, 63, 63, RangeBoundary(kMinInt64), RangeBoundary::PositiveInfinity()); if (kBitsPerWord == 64) { - TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 62, 62, RangeBoundary(kSmiMin), - RangeBoundary(kSmiMax)); + TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 62, 62, + RangeBoundary(compiler::target::kSmiMin), + RangeBoundary(compiler::target::kSmiMax)); TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 30, 30, RangeBoundary(-(1 << 30)), RangeBoundary(1 << 30)); } else { - TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 30, 30, RangeBoundary(kSmiMin), - RangeBoundary(kSmiMax)); - TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 62, 62, RangeBoundary(kSmiMin), - RangeBoundary(kSmiMax)); + TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 30, 30, + RangeBoundary(compiler::target::kSmiMin), + RangeBoundary(compiler::target::kSmiMax)); + TEST_RANGE_OP_SMI(Range::Shl, -1, 1, 62, 62, + RangeBoundary(compiler::target::kSmiMin), + RangeBoundary(compiler::target::kSmiMax)); } TEST_RANGE_OP(Range::Shl, 0, 100, 0, 64, RangeBoundary(0), RangeBoundary::PositiveInfinity()); diff --git a/runtime/vm/compiler/backend/redundancy_elimination.cc b/runtime/vm/compiler/backend/redundancy_elimination.cc index 27245b2dd8d..1144be82b7f 100644 --- a/runtime/vm/compiler/backend/redundancy_elimination.cc +++ b/runtime/vm/compiler/backend/redundancy_elimination.cc @@ -1725,10 +1725,9 @@ class LoadOptimizer : public ValueObject { Definition* forward_def = graph_->constant_null(); if (alloc->ArgumentCount() > 0) { ASSERT(alloc->ArgumentCount() == 1); - intptr_t type_args_offset = - alloc->cls().type_arguments_field_offset(); - if (load->slot().IsTypeArguments() && - load->slot().offset_in_bytes() == type_args_offset) { + const Slot& type_args_slot = Slot::GetTypeArgumentsSlotFor( + graph_->thread(), alloc->cls()); + if (load->slot().IsIdentical(type_args_slot)) { forward_def = alloc->PushArgumentAt(0)->value()->definition(); } } diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc index df6904b7d99..bb0c918ab11 100644 --- a/runtime/vm/compiler/backend/slot.cc +++ b/runtime/vm/compiler/backend/slot.cc @@ -54,7 +54,8 @@ const Slot& Slot::GetNativeSlot(Kind kind) { #define FIELD_VAR (0) #define DEFINE_NATIVE_FIELD(ClassName, FieldName, cid, mutability) \ Slot(Kind::k##ClassName##_##FieldName, FIELD_##mutability, k##cid##Cid, \ - ClassName::FieldName##_offset(), #ClassName "." #FieldName, nullptr), + compiler::target::ClassName::FieldName##_offset(), \ + #ClassName "." #FieldName, nullptr), NATIVE_SLOTS_LIST(DEFINE_NATIVE_FIELD) @@ -102,7 +103,8 @@ const Slot& Slot::GetTypeArgumentsSlotAt(Thread* thread, intptr_t offset) { } const Slot& Slot::GetTypeArgumentsSlotFor(Thread* thread, const Class& cls) { - return GetTypeArgumentsSlotAt(thread, cls.type_arguments_field_offset()); + return GetTypeArgumentsSlotAt( + thread, compiler::target::Class::TypeArgumentsFieldOffset(cls)); } const Slot& Slot::GetContextVariableSlotFor(Thread* thread, @@ -115,7 +117,8 @@ const Slot& Slot::GetContextVariableSlotFor(Thread* thread, return SlotCache::Instance(thread).Canonicalize(Slot( Kind::kCapturedVariable, IsImmutableBit::encode(variable.is_final()) | IsNullableBit::encode(true), - kDynamicCid, Context::variable_offset(variable.index().value()), + kDynamicCid, + compiler::target::Context::variable_offset(variable.index().value()), &variable.name(), /*static_type=*/nullptr)); } @@ -156,7 +159,7 @@ const Slot& Slot::Get(const Field& field, IsImmutableBit::encode(field.is_final() || field.is_const()) | IsNullableBit::encode(is_nullable) | IsGuardedBit::encode(used_guarded_state), - nullable_cid, field.Offset(), &field, + nullable_cid, compiler::target::Field::OffsetOf(field), &field, &AbstractType::ZoneHandle(zone, field.type()))); // If properties of this slot were based on the guarded state make sure diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h index ef6a4085e50..46141a932f5 100644 --- a/runtime/vm/compiler/backend/slot.h +++ b/runtime/vm/compiler/backend/slot.h @@ -168,6 +168,8 @@ class Slot : public ZoneAllocated { bool Equals(const Slot* other) const; intptr_t Hashcode() const; + bool IsIdentical(const Slot& other) const { return this == &other; } + private: Slot(Kind kind, int8_t bits, diff --git a/runtime/vm/compiler/call_specializer.cc b/runtime/vm/compiler/call_specializer.cc index 1c405f96a2b..de3c1b53bb9 100644 --- a/runtime/vm/compiler/call_specializer.cc +++ b/runtime/vm/compiler/call_specializer.cc @@ -510,7 +510,7 @@ bool CallSpecializer::TryStringLengthOneEquality(InstanceCallInstr* call, } static bool SmiFitsInDouble() { - return kSmiBits < 53; + return compiler::target::kSmiBits < 53; } bool CallSpecializer::TryReplaceWithEqualityOp(InstanceCallInstr* call, @@ -1836,8 +1836,9 @@ Definition* TypedDataSpecializer::AppendLoadIndexed(TemplateDartCall<0>* call, const intptr_t element_size = TypedDataBase::ElementSizeFor(cid); const intptr_t index_scale = element_size; - auto data = new (Z) LoadUntaggedInstr(new (Z) Value(array), - TypedDataBase::data_field_offset()); + auto data = new (Z) + LoadUntaggedInstr(new (Z) Value(array), + compiler::target::TypedDataBase::data_field_offset()); flow_graph_->InsertBefore(call, data, call->env(), FlowGraph::kValue); Definition* load = new (Z) @@ -1913,8 +1914,9 @@ void TypedDataSpecializer::AppendStoreIndexed(TemplateDartCall<0>* call, break; } - auto data = new (Z) LoadUntaggedInstr(new (Z) Value(array), - TypedDataBase::data_field_offset()); + auto data = new (Z) + LoadUntaggedInstr(new (Z) Value(array), + compiler::target::TypedDataBase::data_field_offset()); flow_graph_->InsertBefore(call, data, call->env(), FlowGraph::kValue); auto store = new (Z) StoreIndexedInstr( diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc index aff93f90ee4..c133f75c261 100644 --- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc +++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc @@ -539,8 +539,9 @@ Fragment BaseFlowGraphBuilder::StoreIndexed(intptr_t class_id) { value->BindsToConstant() ? kNoStoreBarrier : kEmitStoreBarrier; StoreIndexedInstr* store = new (Z) StoreIndexedInstr( Pop(), // Array. - index, value, emit_store_barrier, Instance::ElementSizeFor(class_id), - class_id, kAlignedAccess, DeoptId::kNone, TokenPosition::kNoSource); + index, value, emit_store_barrier, + compiler::target::Instance::ElementSizeFor(class_id), class_id, + kAlignedAccess, DeoptId::kNone, TokenPosition::kNoSource); return Fragment(store); } diff --git a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc index 71a60b5fc55..82204fde44a 100644 --- a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc +++ b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc @@ -674,7 +674,8 @@ void BytecodeFlowGraphBuilder::BuildCheckFunctionTypeArgs() { store_type_args += B->LoadArgDescriptor(); store_type_args += B->LoadNativeField(Slot::ArgumentsDescriptor_count()); store_type_args += B->LoadFpRelativeSlot( - kWordSize * (1 + compiler::target::frame_layout.param_end_from_fp), + compiler::target::kWordSize * + (1 + compiler::target::frame_layout.param_end_from_fp), CompileType::CreateNullable(/*is_nullable=*/true, kTypeArgumentsCid)); store_type_args += B->StoreLocalRaw(TokenPosition::kNoSource, type_args_var); diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc index f3524f563c3..b8be355abdc 100644 --- a/runtime/vm/compiler/frontend/kernel_to_il.cc +++ b/runtime/vm/compiler/frontend/kernel_to_il.cc @@ -1033,13 +1033,13 @@ Fragment FlowGraphBuilder::BuildTypedDataViewFactoryConstructor( // instructions! body += LoadLocal(view_object); body += LoadLocal(typed_data); - body += LoadUntagged(TypedDataBase::data_field_offset()); + body += LoadUntagged(compiler::target::TypedDataBase::data_field_offset()); body += ConvertUntaggedToIntptr(); body += LoadLocal(offset_in_bytes); body += UnboxSmiToIntptr(); body += AddIntptrIntegers(); body += ConvertIntptrToUntagged(); - body += StoreUntagged(TypedDataView::data_field_offset()); + body += StoreUntagged(compiler::target::TypedDataBase::data_field_offset()); return body; } @@ -1772,9 +1772,10 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfNoSuchMethodForwarder( loop_body += LoadLocal(argument_count); loop_body += LoadLocal(index); loop_body += SmiBinaryOp(Token::kSUB, /*truncate=*/true); - loop_body += LoadFpRelativeSlot( - kWordSize * compiler::target::frame_layout.param_end_from_fp, - CompileType::Dynamic()); + loop_body += + LoadFpRelativeSlot(compiler::target::kWordSize * + compiler::target::frame_layout.param_end_from_fp, + CompileType::Dynamic()); loop_body += StoreIndexed(kArrayCid); // ++i diff --git a/runtime/vm/compiler/frontend/prologue_builder.cc b/runtime/vm/compiler/frontend/prologue_builder.cc index f0cb2cf0dc3..d4f782940f3 100644 --- a/runtime/vm/compiler/frontend/prologue_builder.cc +++ b/runtime/vm/compiler/frontend/prologue_builder.cc @@ -190,8 +190,9 @@ Fragment PrologueBuilder::BuildOptionalParameterHandling( for (; param < num_fixed_params; ++param) { copy_args_prologue += LoadLocal(optional_count_var); copy_args_prologue += LoadFpRelativeSlot( - kWordSize * (compiler::target::frame_layout.param_end_from_fp + - num_fixed_params - param), + compiler::target::kWordSize * + (compiler::target::frame_layout.param_end_from_fp + + num_fixed_params - param), ParameterType(ParameterVariable(param))); copy_args_prologue += StoreLocalRaw(TokenPosition::kNoSource, ParameterVariable(param)); @@ -211,8 +212,9 @@ Fragment PrologueBuilder::BuildOptionalParameterHandling( Fragment good(supplied); good += LoadLocal(optional_count_var); good += LoadFpRelativeSlot( - kWordSize * (compiler::target::frame_layout.param_end_from_fp + - num_fixed_params - param), + compiler::target::kWordSize * + (compiler::target::frame_layout.param_end_from_fp + + num_fixed_params - param), ParameterType(ParameterVariable(param))); good += StoreLocalRaw(TokenPosition::kNoSource, ParameterVariable(param)); good += Drop(); @@ -249,7 +251,8 @@ Fragment PrologueBuilder::BuildOptionalParameterHandling( ASSERT(num_opt_named_params > 0); const intptr_t first_name_offset = - ArgumentsDescriptor::first_named_entry_offset() - Array::data_offset(); + compiler::target::ArgumentsDescriptor::first_named_entry_offset() - + compiler::target::Array::data_offset(); // Start by alphabetically sorting the names of the optional parameters. int* opt_param_position = Z->Alloc(num_opt_named_params); @@ -266,19 +269,23 @@ Fragment PrologueBuilder::BuildOptionalParameterHandling( for (intptr_t i = 0; param < num_params; ++param, ++i) { JoinEntryInstr* join = BuildJoinEntry(); - copy_args_prologue += - IntConstant(ArgumentsDescriptor::named_entry_size() / kWordSize); + copy_args_prologue += IntConstant( + compiler::target::ArgumentsDescriptor::named_entry_size() / + compiler::target::kWordSize); copy_args_prologue += LoadLocal(optional_count_vars_processed); copy_args_prologue += SmiBinaryOp(Token::kMUL, /* truncate= */ true); LocalVariable* tuple_diff = MakeTemporary(); // name = arg_desc[names_offset + arg_desc_name_index + nameOffset] copy_args_prologue += LoadArgDescriptor(); - copy_args_prologue += IntConstant( - (first_name_offset + ArgumentsDescriptor::name_offset()) / kWordSize); + copy_args_prologue += + IntConstant((first_name_offset + + compiler::target::ArgumentsDescriptor::name_offset()) / + compiler::target::kWordSize); copy_args_prologue += LoadLocal(tuple_diff); copy_args_prologue += SmiBinaryOp(Token::kADD, /* truncate= */ true); - copy_args_prologue += LoadIndexed(/* index_scale = */ kWordSize); + copy_args_prologue += + LoadIndexed(/* index_scale = */ compiler::target::kWordSize); // first name in sorted list of all names const String& param_name = String::ZoneHandle( @@ -303,15 +310,17 @@ Fragment PrologueBuilder::BuildOptionalParameterHandling( // pos = arg_desc[names_offset + arg_desc_name_index + positionOffset] good += LoadArgDescriptor(); good += IntConstant( - (first_name_offset + ArgumentsDescriptor::position_offset()) / - kWordSize); + (first_name_offset + + compiler::target::ArgumentsDescriptor::position_offset()) / + compiler::target::kWordSize); good += LoadLocal(tuple_diff); good += SmiBinaryOp(Token::kADD, /* truncate= */ true); - good += LoadIndexed(/* index_scale = */ kWordSize); + good += LoadIndexed(/* index_scale = */ compiler::target::kWordSize); } good += SmiBinaryOp(Token::kSUB, /* truncate= */ true); good += LoadFpRelativeSlot( - kWordSize * compiler::target::frame_layout.param_end_from_fp, + compiler::target::kWordSize * + compiler::target::frame_layout.param_end_from_fp, ParameterType(ParameterVariable(opt_param_position[i]))); // Copy down. @@ -417,7 +426,8 @@ Fragment PrologueBuilder::BuildTypeArgumentsHandling(JoinEntryInstr* nsm) { store_type_args += LoadArgDescriptor(); store_type_args += LoadNativeField(Slot::ArgumentsDescriptor_count()); store_type_args += LoadFpRelativeSlot( - kWordSize * (1 + compiler::target::frame_layout.param_end_from_fp), + compiler::target::kWordSize * + (1 + compiler::target::frame_layout.param_end_from_fp), CompileType::CreateNullable(/*is_nullable=*/true, kTypeArgumentsCid)); store_type_args += StoreLocal(TokenPosition::kNoSource, type_args_var); store_type_args += Drop(); diff --git a/runtime/vm/compiler/graph_intrinsifier.cc b/runtime/vm/compiler/graph_intrinsifier.cc index ddf564b3694..5c51441b8e3 100644 --- a/runtime/vm/compiler/graph_intrinsifier.cc +++ b/runtime/vm/compiler/graph_intrinsifier.cc @@ -169,12 +169,12 @@ static bool IntrinsifyArrayGetIndexed(FlowGraph* flow_graph, if (RawObject::IsExternalTypedDataClassId(array_cid)) { array = builder.AddDefinition(new LoadUntaggedInstr( - new Value(array), ExternalTypedData::data_offset())); + new Value(array), target::TypedDataBase::data_field_offset())); } Definition* result = builder.AddDefinition(new LoadIndexedInstr( new Value(array), new Value(index), - Instance::ElementSizeFor(array_cid), // index scale + target::Instance::ElementSizeFor(array_cid), // index scale array_cid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); // We don't perform [RangeAnalysis] for graph intrinsics. To inform the @@ -347,14 +347,14 @@ static bool IntrinsifyArraySetIndexed(FlowGraph* flow_graph, if (RawObject::IsExternalTypedDataClassId(array_cid)) { array = builder.AddDefinition(new LoadUntaggedInstr( - new Value(array), ExternalTypedData::data_offset())); + new Value(array), target::TypedDataBase::data_field_offset())); } // No store barrier. ASSERT(RawObject::IsExternalTypedDataClassId(array_cid) || RawObject::IsTypedDataClassId(array_cid)); builder.AddInstruction(new StoreIndexedInstr( new Value(array), new Value(index), new Value(value), kNoStoreBarrier, - Instance::ElementSizeFor(array_cid), // index scale + target::Instance::ElementSizeFor(array_cid), // index scale array_cid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); // Return null. Definition* null_def = builder.AddNullDefinition(); @@ -482,15 +482,15 @@ static bool BuildCodeUnitAt(FlowGraph* flow_graph, intptr_t cid) { // For external strings: Load external data. if (cid == kExternalOneByteStringCid) { str = builder.AddDefinition(new LoadUntaggedInstr( - new Value(str), ExternalOneByteString::external_data_offset())); + new Value(str), target::ExternalOneByteString::external_data_offset())); } else if (cid == kExternalTwoByteStringCid) { str = builder.AddDefinition(new LoadUntaggedInstr( - new Value(str), ExternalTwoByteString::external_data_offset())); + new Value(str), target::ExternalTwoByteString::external_data_offset())); } Definition* load = builder.AddDefinition(new LoadIndexedInstr( - new Value(str), new Value(index), Instance::ElementSizeFor(cid), cid, - kAlignedAccess, DeoptId::kNone, builder.TokenPos())); + new Value(str), new Value(index), target::Instance::ElementSizeFor(cid), + cid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); // We don't perform [RangeAnalysis] for graph intrinsics. To inform the // following boxing instruction about a more precise range we attach it here @@ -687,7 +687,7 @@ bool GraphIntrinsifier::Build_GrowableArrayGetIndexed(FlowGraph* flow_graph) { Slot::GrowableObjectArray_data(), builder.TokenPos())); Definition* result = builder.AddDefinition(new LoadIndexedInstr( new Value(backing_store), new Value(index), - Instance::ElementSizeFor(kArrayCid), // index scale + target::Instance::ElementSizeFor(kArrayCid), // index scale kArrayCid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); builder.AddReturn(new Value(result)); return true; @@ -716,7 +716,7 @@ bool GraphIntrinsifier::Build_ObjectArraySetIndexedUnchecked( builder.AddInstruction(new StoreIndexedInstr( new Value(array), new Value(index), new Value(value), kEmitStoreBarrier, - Instance::ElementSizeFor(kArrayCid), // index scale + target::Instance::ElementSizeFor(kArrayCid), // index scale kArrayCid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); // Return null. Definition* null_def = builder.AddNullDefinition(); @@ -751,7 +751,7 @@ bool GraphIntrinsifier::Build_GrowableArraySetIndexedUnchecked( builder.AddInstruction(new StoreIndexedInstr( new Value(backing_store), new Value(index), new Value(value), kEmitStoreBarrier, - Instance::ElementSizeFor(kArrayCid), // index scale + target::Instance::ElementSizeFor(kArrayCid), // index scale kArrayCid, kAlignedAccess, DeoptId::kNone, builder.TokenPos())); // Return null. Definition* null_def = builder.AddNullDefinition(); diff --git a/runtime/vm/compiler/intrinsifier.cc b/runtime/vm/compiler/intrinsifier.cc index ee1649f2d28..84b3bafee93 100644 --- a/runtime/vm/compiler/intrinsifier.cc +++ b/runtime/vm/compiler/intrinsifier.cc @@ -59,7 +59,8 @@ bool Intrinsifier::CanIntrinsify(const Function& function) { case MethodRecognizer::kUint64ArrayGetIndexed: case MethodRecognizer::kUint64ArraySetIndexed: // TODO(ajcbik): consider 32-bit as well. - if (kBitsPerWord == 64 && FlowGraphCompiler::SupportsUnboxedInt64()) { + if (target::kBitsPerWord == 64 && + FlowGraphCompiler::SupportsUnboxedInt64()) { break; } if (FLAG_trace_intrinsifier) { @@ -186,7 +187,7 @@ bool Intrinsifier::Intrinsify(const ParsedFunction& parsed_function, return compiler->intrinsic_slow_path_label()->IsUnused(); } -#if !defined(HASH_IN_OBJECT_HEADER) +#if !defined(TARGET_HASH_IN_OBJECT_HEADER) // These two are more complicated on 32 bit platforms, where the // identity hash is not stored in the header of the object. We // therefore don't intrinsify them, falling back on the native C++ diff --git a/runtime/vm/compiler/offsets_extractor.cc b/runtime/vm/compiler/offsets_extractor.cc index ec0c8663191..026277932e1 100644 --- a/runtime/vm/compiler/offsets_extractor.cc +++ b/runtime/vm/compiler/offsets_extractor.cc @@ -42,28 +42,32 @@ class OffsetsExtractor : public AllStatic { public: static void DumpOffsets() { #define PRINT_FIELD_OFFSET(Class, Name) \ - std::cout << "static constexpr dart::word " #Class "_" #Name " = " \ + std::cout << "static constexpr dart::compiler::target::word " #Class \ + "_" #Name " = " \ << Class::Name() << ";\n"; #define PRINT_ARRAY_LAYOUT(Class, Name) \ - std::cout << "static constexpr dart::word " #Class \ + std::cout << "static constexpr dart::compiler::target::word " #Class \ "_elements_start_offset = " \ << Class::ArrayLayout::elements_start_offset() << ";\n"; \ - std::cout << "static constexpr dart::word " #Class "_element_size = " \ + std::cout << "static constexpr dart::compiler::target::word " #Class \ + "_element_size = " \ << Class::ArrayLayout::kElementSize << ";\n"; #define PRINT_ARRAY_STRUCTFIELD_OFFSET(Class, Name, ElementOffsetName, \ FieldOffset) #define PRINT_SIZEOF(Class, Name, What) \ - std::cout << "static constexpr dart::word " #Class "_" #Name " = " \ + std::cout << "static constexpr dart::compiler::target::word " #Class \ + "_" #Name " = " \ << sizeof(What) << ";\n"; #define PRINT_RANGE(Class, Name, Type, First, Last, Filter) \ { \ auto filter = Filter; \ bool comma = false; \ - std::cout << "static dart::word " #Class "_" #Name "[] = {"; \ + std::cout << "static dart::compiler::target::word " #Class "_" #Name \ + "[] = {"; \ for (intptr_t i = static_cast(First); \ i <= static_cast(Last); i++) { \ auto v = static_cast(i); \ @@ -74,7 +78,8 @@ class OffsetsExtractor : public AllStatic { } #define PRINT_CONSTANT(Class, Name) \ - std::cout << "static constexpr dart::word " #Class "_" #Name " = " \ + std::cout << "static constexpr dart::compiler::target::word " #Class \ + "_" #Name " = " \ << Class::Name << ";\n"; #define PRECOMP_NO_CHECK(Code) Code diff --git a/runtime/vm/compiler/relocation.cc b/runtime/vm/compiler/relocation.cc index 5d4d35f2e49..aec5b3e6d9b 100644 --- a/runtime/vm/compiler/relocation.cc +++ b/runtime/vm/compiler/relocation.cc @@ -107,7 +107,8 @@ void CodeRelocator::FindInstructionAndCallLimits() { for (intptr_t i = 0; i < code_objects_->length(); ++i) { current_caller = (*code_objects_)[i]; - const intptr_t size = current_caller.instructions()->HeapSize(); + const intptr_t size = + ImageWriter::SizeInSnapshot(current_caller.instructions()); if (size > max_instructions_size_) { max_instructions_size_ = size; } @@ -182,7 +183,7 @@ bool CodeRelocator::AddInstructionsToText(RawCode* code) { } text_offsets_.Insert({instructions, next_text_offset_}); commands_->Add(ImageWriterCommand(next_text_offset_, code)); - next_text_offset_ += instructions->HeapSize(); + next_text_offset_ += ImageWriter::SizeInSnapshot(instructions); return true; } diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc index c5a4a537f06..0c35cedba95 100644 --- a/runtime/vm/compiler/runtime_api.cc +++ b/runtime/vm/compiler/runtime_api.cc @@ -4,8 +4,19 @@ #include "vm/compiler/runtime_api.h" +namespace dart { +namespace compiler { +namespace target { + +#include "vm/compiler/runtime_offsets_extracted.h" + +} // namespace target +} // namespace compiler +} // namespace dart + #if !defined(DART_PRECOMPILED_RUNTIME) +#include "vm/compiler/runtime_offsets_list.h" #include "vm/dart_entry.h" #include "vm/longjump.h" #include "vm/native_arguments.h" @@ -20,6 +31,11 @@ namespace dart { namespace compiler { bool IsSameObject(const Object& a, const Object& b) { + if (a.IsMint() && b.IsMint()) { + return Mint::Cast(a).value() == Mint::Cast(b).value(); + } else if (a.IsDouble() && b.IsDouble()) { + return Double::Cast(a).value() == Double::Cast(b).value(); + } return a.raw() == b.raw(); } @@ -49,7 +65,7 @@ CLASS_LIST_FOR_HANDLES(DO) #undef DO bool IsInOldSpace(const Object& obj) { - return obj.IsOld(); + return obj.IsSmi() || obj.IsOld(); } intptr_t ObjectHash(const Object& obj) { @@ -162,7 +178,8 @@ word TypedDataElementSizeInBytes(classid_t cid) { } word TypedDataMaxNewSpaceElements(classid_t cid) { - return dart::TypedData::MaxNewSpaceElements(cid); + return (dart::Heap::kNewAllocatableSize - target::TypedData::InstanceSize()) / + TypedDataElementSizeInBytes(cid); } const Field& LookupMathRandomStateFieldOffset() { @@ -215,23 +232,29 @@ void BailoutWithBranchOffsetError() { } word RuntimeEntry::OffsetFromThread() const { - return dart::Thread::OffsetFromThread(runtime_entry_); + return target::Thread::OffsetFromThread(runtime_entry_); } namespace target { const word kPageSize = dart::kPageSize; -const word kPageSizeInWords = dart::kPageSizeInWords; +const word kPageSizeInWords = dart::kPageSize / kWordSize; const word kPageMask = dart::kPageMask; +static word TranslateOffsetInWordsToHost(word offset) { + RELEASE_ASSERT((offset % kWordSize) == 0); + return (offset / kWordSize) * dart::kWordSize; +} + uint32_t MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size) { - return dart::RawObject::SizeTag::encode(instance_size) | + return dart::RawObject::SizeTag::encode( + TranslateOffsetInWordsToHost(instance_size)) | dart::RawObject::ClassIdTag::encode(cid) | dart::RawObject::NewBit::encode(true); } word Object::tags_offset() { - return dart::Object::tags_offset(); + return 0; } const word RawObject::kCardRememberedBit = dart::RawObject::kCardRememberedBit; @@ -247,7 +270,8 @@ const word RawObject::kClassIdTagPos = dart::RawObject::kClassIdTagPos; const word RawObject::kClassIdTagSize = dart::RawObject::kClassIdTagSize; const word RawObject::kSizeTagMaxSizeTag = - dart::RawObject::SizeTag::kMaxSizeTag; + dart::RawObject::SizeTag::kMaxSizeTagInUnitsOfAlignment * + ObjectAlignment::kObjectAlignment; const word RawObject::kTagBitsSizeTagPos = dart::RawObject::TagBits::kSizeTagPos; @@ -262,21 +286,6 @@ bool RawObject::IsTypedDataClassId(intptr_t cid) { return dart::RawObject::IsTypedDataClassId(cid); } -intptr_t ObjectPool::element_offset(intptr_t index) { - return dart::ObjectPool::element_offset(index); -} - -word Class::type_arguments_field_offset_in_words_offset() { - return dart::Class::type_arguments_field_offset_in_words_offset(); -} - -word Class::declaration_type_offset() { - return dart::Class::declaration_type_offset(); -} - -word Class::num_type_arguments_offset_in_bytes() { - return dart::Class::num_type_arguments_offset(); -} const word Class::kNoTypeArguments = dart::Class::kNoTypeArguments; @@ -284,8 +293,59 @@ classid_t Class::GetId(const dart::Class& handle) { return handle.id(); } +static word TranslateOffsetInWords(word offset) { + RELEASE_ASSERT((offset % dart::kWordSize) == 0); + return (offset / dart::kWordSize) * kWordSize; +} + +static uword GetInstanceSizeImpl(const dart::Class& handle) { + switch (handle.id()) { + case kMintCid: + return Mint::InstanceSize(); + case kDoubleCid: + return Double::InstanceSize(); + case kInt32x4Cid: + return Int32x4::InstanceSize(); + case kFloat32x4Cid: + return Float32x4::InstanceSize(); + case kFloat64x2Cid: + return Float64x2::InstanceSize(); + case kObjectCid: + return Object::InstanceSize(); + case kInstanceCid: + return Instance::InstanceSize(); + case kGrowableObjectArrayCid: + return GrowableObjectArray::InstanceSize(); + case kClosureCid: + return Closure::InstanceSize(); + case kTypedDataBaseCid: + return TypedDataBase::InstanceSize(); + case kLinkedHashMapCid: + return LinkedHashMap::InstanceSize(); + case kByteBufferCid: + case kByteDataViewCid: + case kFfiPointerCid: +#define HANDLE_CASE(clazz) \ + case kTypedData##clazz##Cid: \ + case kTypedData##clazz##ViewCid: \ + case kExternalTypedData##clazz##Cid: + CLASS_LIST_TYPED_DATA(HANDLE_CASE) +#undef HANDLE_CASE + return TranslateOffsetInWords(handle.instance_size()); + default: + if (handle.id() >= kNumPredefinedCids) { + return TranslateOffsetInWords(handle.instance_size()); + } + } + FATAL3("Unsupported class for size translation: %s (id=%" Pd + ", kNumPredefinedCids=%d)\n", + handle.ToCString(), handle.id(), kNumPredefinedCids); + return -1; +} + uword Class::GetInstanceSize(const dart::Class& handle) { - return handle.instance_size(); + return Utils::RoundUp(GetInstanceSizeImpl(handle), + ObjectAlignment::kObjectAlignment); } intptr_t Class::NumTypeArguments(const dart::Class& klass) { @@ -297,11 +357,7 @@ bool Class::HasTypeArgumentsField(const dart::Class& klass) { } intptr_t Class::TypeArgumentsFieldOffset(const dart::Class& klass) { - return klass.type_arguments_field_offset(); -} - -intptr_t Class::InstanceSize(const dart::Class& klass) { - return klass.instance_size(); + return TranslateOffsetInWords(klass.type_arguments_field_offset()); } bool Class::TraceAllocation(const dart::Class& klass) { @@ -309,57 +365,60 @@ bool Class::TraceAllocation(const dart::Class& klass) { } word Instance::first_field_offset() { - return dart::Instance::NextFieldOffset(); + return TranslateOffsetInWords(dart::Instance::NextFieldOffset()); } word Instance::DataOffsetFor(intptr_t cid) { - return dart::Instance::DataOffsetFor(cid); + if (dart::RawObject::IsExternalTypedDataClassId(cid) || + dart::RawObject::IsExternalStringClassId(cid)) { + // Elements start at offset 0 of the external data. + return 0; + } + if (dart::RawObject::IsTypedDataClassId(cid)) { + return TypedData::data_offset(); + } + switch (cid) { + case kArrayCid: + case kImmutableArrayCid: + return Array::data_offset(); + case kOneByteStringCid: + return OneByteString::data_offset(); + case kTwoByteStringCid: + return TwoByteString::data_offset(); + default: + UNIMPLEMENTED(); + return Array::data_offset(); + } } word Instance::ElementSizeFor(intptr_t cid) { - return dart::Instance::ElementSizeFor(cid); -} - -word Function::code_offset() { - return dart::Function::code_offset(); -} - -word Function::entry_point_offset() { - return dart::Function::entry_point_offset(); -} - -word Function::usage_counter_offset() { - return dart::Function::usage_counter_offset(); -} - -word Function::unchecked_entry_point_offset() { - return dart::Function::unchecked_entry_point_offset(); + if (dart::RawObject::IsExternalTypedDataClassId(cid) || + dart::RawObject::IsTypedDataClassId(cid) || + dart::RawObject::IsTypedDataViewClassId(cid)) { + return dart::TypedDataBase::ElementSizeInBytes(cid); + } + switch (cid) { + case kArrayCid: + case kImmutableArrayCid: + return kWordSize; + case kOneByteStringCid: + return dart::OneByteString::kBytesPerElement; + case kTwoByteStringCid: + return dart::TwoByteString::kBytesPerElement; + case kExternalOneByteStringCid: + return dart::ExternalOneByteString::kBytesPerElement; + case kExternalTwoByteStringCid: + return dart::ExternalTwoByteString::kBytesPerElement; + default: + UNIMPLEMENTED(); + return 0; + } } word ICData::CodeIndexFor(word num_args) { return dart::ICData::CodeIndexFor(num_args); } -word ICData::owner_offset() { - return dart::ICData::owner_offset(); -} - -word ICData::arguments_descriptor_offset() { - return dart::ICData::arguments_descriptor_offset(); -} - -word ICData::entries_offset() { - return dart::ICData::entries_offset(); -} - -word ICData::receivers_static_type_offset() { - return dart::ICData::receivers_static_type_offset(); -} - -word ICData::state_bits_offset() { - return dart::ICData::state_bits_offset(); -} - word ICData::CountIndexFor(word num_args) { return dart::ICData::CountIndexFor(num_args); } @@ -380,144 +439,77 @@ word ICData::EntryPointIndexFor(word num_args) { return dart::ICData::EntryPointIndexFor(num_args); } -word ICData::NumArgsTestedShift() { - return dart::ICData::NumArgsTestedShift(); -} - -word ICData::NumArgsTestedMask() { - return dart::ICData::NumArgsTestedMask(); -} - const word MegamorphicCache::kSpreadFactor = dart::MegamorphicCache::kSpreadFactor; -word MegamorphicCache::mask_offset() { - return dart::MegamorphicCache::mask_offset(); -} -word MegamorphicCache::buckets_offset() { - return dart::MegamorphicCache::buckets_offset(); -} -word MegamorphicCache::arguments_descriptor_offset() { - return dart::MegamorphicCache::arguments_descriptor_offset(); -} - -word SingleTargetCache::lower_limit_offset() { - return dart::SingleTargetCache::lower_limit_offset(); -} -word SingleTargetCache::upper_limit_offset() { - return dart::SingleTargetCache::upper_limit_offset(); -} -word SingleTargetCache::entry_point_offset() { - return dart::SingleTargetCache::entry_point_offset(); -} -word SingleTargetCache::target_offset() { - return dart::SingleTargetCache::target_offset(); -} - -const word Array::kMaxNewSpaceElements = dart::Array::kMaxNewSpaceElements; - word Context::InstanceSize(word n) { - return dart::Context::InstanceSize(n); + return TranslateOffsetInWords(dart::Context::InstanceSize(n)); } word Context::variable_offset(word n) { - return dart::Context::variable_offset(n); + return TranslateOffsetInWords(dart::Context::variable_offset(n)); } -word TypedData::InstanceSize() { - return sizeof(RawTypedData); +#define DEFINE_FIELD(clazz, name) \ + word clazz::name() { return clazz##_##name; } + +#define DEFINE_ARRAY(clazz, name) \ + word clazz::name(intptr_t index) { \ + return clazz##_elements_start_offset + index * clazz##_element_size; \ + } + +#define DEFINE_ARRAY_STRUCTFIELD(clazz, name, element_offset, field_offset) \ + word clazz::name(intptr_t index) { \ + return element_offset(index) + field_offset; \ + } + +#define DEFINE_SIZEOF(clazz, name, what) \ + word clazz::name() { return clazz##_##name; } + +#define DEFINE_RANGE(Class, Getter, Type, First, Last, Filter) \ + word Class::Getter(Type index) { \ + return Class##_##Getter[static_cast(index) - \ + static_cast(First)]; \ + } + +#define DEFINE_CONSTANT(Class, Name) const word Class::Name = Class##_##Name; + +#define PRECOMP_NO_CHECK(Code) Code + +OFFSETS_LIST(DEFINE_FIELD, + DEFINE_ARRAY, + DEFINE_ARRAY_STRUCTFIELD, + DEFINE_SIZEOF, + DEFINE_RANGE, + DEFINE_CONSTANT, + PRECOMP_NO_CHECK) + +#undef DEFINE_FIELD +#undef DEFINE_ARRAY +#undef DEFINE_ARRAY_STRUCTFIELD +#undef DEFINE_SIZEOF +#undef DEFINE_RANGE +#undef DEFINE_CONSTANT +#undef PRECOMP_NO_CHECK + +const word StoreBufferBlock::kSize = dart::StoreBufferBlock::kSize; + +const word MarkingStackBlock::kSize = dart::MarkingStackBlock::kSize; + +word Instructions::HeaderSize() { + intptr_t alignment = OS::PreferredCodeAlignment(); + intptr_t aligned_size = + Utils::RoundUp(Instructions::UnalignedHeaderSize(), alignment); + ASSERT(aligned_size == alignment); + return aligned_size; } -word Array::header_size() { - return sizeof(dart::RawArray); +#if !defined(TARGET_ARCH_DBC) +word Thread::stack_overflow_shared_stub_entry_point_offset(bool fpu_regs) { + return fpu_regs ? stack_overflow_shared_with_fpu_regs_entry_point_offset() + : stack_overflow_shared_without_fpu_regs_entry_point_offset(); } - -#define CLASS_NAME_LIST(V) \ - V(AbstractType, type_test_stub_entry_point_offset) \ - V(ArgumentsDescriptor, count_offset) \ - V(ArgumentsDescriptor, type_args_len_offset) \ - V(Array, data_offset) \ - V(Array, length_offset) \ - V(Array, tags_offset) \ - V(Array, type_arguments_offset) \ - V(ClassTable, table_offset) \ - V(Closure, context_offset) \ - V(Closure, delayed_type_arguments_offset) \ - V(Closure, function_offset) \ - V(Closure, function_type_arguments_offset) \ - V(Closure, instantiator_type_arguments_offset) \ - V(Code, object_pool_offset) \ - V(Code, saved_instructions_offset) \ - V(Context, num_variables_offset) \ - V(Context, parent_offset) \ - V(Double, value_offset) \ - V(Float32x4, value_offset) \ - V(Float64x2, value_offset) \ - V(GrowableObjectArray, data_offset) \ - V(GrowableObjectArray, length_offset) \ - V(GrowableObjectArray, type_arguments_offset) \ - V(HeapPage, card_table_offset) \ - V(Isolate, class_table_offset) \ - V(Isolate, current_tag_offset) \ - V(Isolate, default_tag_offset) \ - V(Isolate, ic_miss_code_offset) \ - V(Isolate, object_store_offset) \ - V(Isolate, user_tag_offset) \ - V(MarkingStackBlock, pointers_offset) \ - V(MarkingStackBlock, top_offset) \ - V(Mint, value_offset) \ - V(NativeArguments, argc_tag_offset) \ - V(NativeArguments, argv_offset) \ - V(NativeArguments, retval_offset) \ - V(NativeArguments, thread_offset) \ - V(ObjectStore, double_type_offset) \ - V(ObjectStore, int_type_offset) \ - V(ObjectStore, string_type_offset) \ - V(OneByteString, data_offset) \ - V(StoreBufferBlock, pointers_offset) \ - V(StoreBufferBlock, top_offset) \ - V(String, hash_offset) \ - V(String, length_offset) \ - V(SubtypeTestCache, cache_offset) \ - V(Thread, active_exception_offset) \ - V(Thread, active_stacktrace_offset) \ - V(Thread, async_stack_trace_offset) \ - V(Thread, auto_scope_native_wrapper_entry_point_offset) \ - V(Thread, bool_false_offset) \ - V(Thread, bool_true_offset) \ - V(Thread, dart_stream_offset) \ - V(Thread, end_offset) \ - V(Thread, global_object_pool_offset) \ - V(Thread, isolate_offset) \ - V(Thread, marking_stack_block_offset) \ - V(Thread, no_scope_native_wrapper_entry_point_offset) \ - V(Thread, object_null_offset) \ - V(Thread, predefined_symbols_address_offset) \ - V(Thread, resume_pc_offset) \ - V(Thread, store_buffer_block_offset) \ - V(Thread, top_exit_frame_info_offset) \ - V(Thread, top_offset) \ - V(Thread, top_resource_offset) \ - V(Thread, vm_tag_offset) \ - V(Thread, safepoint_state_offset) \ - V(Thread, callback_code_offset) \ - V(TimelineStream, enabled_offset) \ - V(TwoByteString, data_offset) \ - V(Type, arguments_offset) \ - V(TypedDataBase, data_field_offset) \ - V(TypedDataBase, length_offset) \ - V(TypedData, data_offset) \ - V(Type, hash_offset) \ - V(TypeRef, type_offset) \ - V(Type, signature_offset) \ - V(Type, type_state_offset) \ - V(UserTag, tag_offset) - -#define DEFINE_FORWARDER(clazz, name) \ - word clazz::name() { return dart::clazz::name(); } - -CLASS_NAME_LIST(DEFINE_FORWARDER) -#undef DEFINE_FORWARDER +#endif // !defined(TARGET_ARCH_DBC) uword Thread::safepoint_state_unacquired() { return dart::Thread::safepoint_state_unacquired(); @@ -527,285 +519,67 @@ uword Thread::safepoint_state_acquired() { return dart::Thread::safepoint_state_acquired(); } -const word HeapPage::kBytesPerCardLog2 = dart::HeapPage::kBytesPerCardLog2; - -const word String::kHashBits = dart::String::kHashBits; - -word String::InstanceSize() { - return sizeof(dart::RawString); -} - -bool Heap::IsAllocatableInNewSpace(intptr_t instance_size) { - return dart::Heap::IsAllocatableInNewSpace(instance_size); -} - -#if !defined(TARGET_ARCH_DBC) -word Thread::write_barrier_code_offset() { - return dart::Thread::write_barrier_code_offset(); -} - -word Thread::array_write_barrier_code_offset() { - return dart::Thread::array_write_barrier_code_offset(); -} - -word Thread::fix_callers_target_code_offset() { - return dart::Thread::fix_callers_target_code_offset(); -} - -word Thread::fix_allocation_stub_code_offset() { - return dart::Thread::fix_allocation_stub_code_offset(); -} - -word Thread::call_to_runtime_entry_point_offset() { - return dart::Thread::call_to_runtime_entry_point_offset(); -} - -word Thread::null_error_shared_with_fpu_regs_entry_point_offset() { - return dart::Thread::null_error_shared_with_fpu_regs_entry_point_offset(); -} - -word Thread::null_error_shared_without_fpu_regs_entry_point_offset() { - return dart::Thread::null_error_shared_without_fpu_regs_entry_point_offset(); -} - -word Thread::monomorphic_miss_entry_offset() { - return dart::Thread::monomorphic_miss_entry_offset(); -} - -word Thread::write_barrier_mask_offset() { - return dart::Thread::write_barrier_mask_offset(); -} - -word Thread::write_barrier_entry_point_offset() { - return dart::Thread::write_barrier_entry_point_offset(); -} - -word Thread::array_write_barrier_entry_point_offset() { - return dart::Thread::array_write_barrier_entry_point_offset(); -} - -word Thread::verify_callback_isolate_entry_point_offset() { - return dart::Thread::verify_callback_entry_offset(); -} -#endif // !defined(TARGET_ARCH_DBC) - -#if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64) || \ - defined(TARGET_ARCH_X64) -word Thread::write_barrier_wrappers_thread_offset(intptr_t regno) { - return dart::Thread::write_barrier_wrappers_thread_offset( - static_cast(regno)); -} -#endif - -#if !defined(TARGET_ARCH_DBC) - -word Thread::monomorphic_miss_stub_offset() { - return dart::Thread::monomorphic_miss_stub_offset(); -} - -word Thread::ic_lookup_through_code_stub_offset() { - return dart::Thread::ic_lookup_through_code_stub_offset(); -} - -word Thread::lazy_specialize_type_test_stub_offset() { - return dart::Thread::lazy_specialize_type_test_stub_offset(); -} - -word Thread::slow_type_test_stub_offset() { - return dart::Thread::slow_type_test_stub_offset(); -} - -word Thread::call_to_runtime_stub_offset() { - return dart::Thread::call_to_runtime_stub_offset(); -} - -word Thread::invoke_dart_code_stub_offset() { - return dart::Thread::invoke_dart_code_stub_offset(); -} - -word Thread::interpret_call_entry_point_offset() { - return dart::Thread::interpret_call_entry_point_offset(); -} - -word Thread::invoke_dart_code_from_bytecode_stub_offset() { - return dart::Thread::invoke_dart_code_from_bytecode_stub_offset(); -} - -word Thread::null_error_shared_without_fpu_regs_stub_offset() { - return dart::Thread::null_error_shared_without_fpu_regs_stub_offset(); -} - -word Thread::null_error_shared_with_fpu_regs_stub_offset() { - return dart::Thread::null_error_shared_with_fpu_regs_stub_offset(); -} - -word Thread::stack_overflow_shared_without_fpu_regs_stub_offset() { - return dart::Thread::stack_overflow_shared_without_fpu_regs_stub_offset(); -} - -word Thread::stack_overflow_shared_with_fpu_regs_stub_offset() { - return dart::Thread::stack_overflow_shared_with_fpu_regs_stub_offset(); -} - -word Thread::lazy_deopt_from_return_stub_offset() { - return dart::Thread::lazy_deopt_from_return_stub_offset(); -} - -word Thread::lazy_deopt_from_throw_stub_offset() { - return dart::Thread::lazy_deopt_from_throw_stub_offset(); -} - -word Thread::deoptimize_stub_offset() { - return dart::Thread::deoptimize_stub_offset(); -} - -word Thread::enter_safepoint_stub_offset() { - return dart::Thread::enter_safepoint_stub_offset(); -} - -word Thread::exit_safepoint_stub_offset() { - return dart::Thread::exit_safepoint_stub_offset(); -} - -word Thread::execution_state_offset() { - return dart::Thread::execution_state_offset(); +uword Thread::generated_execution_state() { + return dart::Thread::ExecutionState::kThreadInGenerated; } uword Thread::native_execution_state() { return dart::Thread::ExecutionState::kThreadInNative; } -uword Thread::generated_execution_state() { - return dart::Thread::ExecutionState::kThreadInGenerated; -} - uword Thread::vm_tag_compiled_id() { return dart::VMTag::kDartCompiledTagId; } -#endif // !defined(TARGET_ARCH_DBC) - -#define DECLARE_CONSTANT_OFFSET_GETTER(name) \ - word Thread::name##_address_offset() { \ - return dart::Thread::name##_address_offset(); \ - } -THREAD_XMM_CONSTANT_LIST(DECLARE_CONSTANT_OFFSET_GETTER) -#undef DECLARE_CONSTANT_OFFSET_GETTER - word Thread::OffsetFromThread(const dart::Object& object) { - return dart::Thread::OffsetFromThread(object); + auto host_offset = dart::Thread::OffsetFromThread(object); + return object_null_offset() + + TranslateOffsetInWords(host_offset - + dart::Thread::object_null_offset()); } -const word StoreBufferBlock::kSize = dart::StoreBufferBlock::kSize; - -const word MarkingStackBlock::kSize = dart::MarkingStackBlock::kSize; - -#if !defined(PRODUCT) -word Isolate::single_step_offset() { - return dart::Isolate::single_step_offset(); -} -#endif // !defined(PRODUCT) - -#if !defined(PRODUCT) -word ClassTable::ClassOffsetFor(intptr_t cid) { - return dart::ClassTable::ClassOffsetFor(cid); +intptr_t Thread::OffsetFromThread(const dart::RuntimeEntry* runtime_entry) { + auto host_offset = dart::Thread::OffsetFromThread(runtime_entry); + return AllocateArray_entry_point_offset() + + TranslateOffsetInWords( + host_offset - dart::Thread::AllocateArray_entry_point_offset()); } -word ClassTable::StateOffsetFor(intptr_t cid) { - return dart::ClassTable::StateOffsetFor(cid); +bool CanLoadFromThread(const dart::Object& object, + intptr_t* offset /* = nullptr */) { + if (dart::Thread::CanLoadFromThread(object)) { + if (offset != nullptr) { + *offset = Thread::OffsetFromThread(object); + } + return true; + } + return false; } -word ClassTable::TableOffsetFor(intptr_t cid) { - return dart::ClassTable::TableOffsetFor(cid); -} +static_assert( + kSmiBits <= dart::kSmiBits, + "Expected that size of Smi on HOST is at least as large as on target."); -word ClassTable::CounterOffsetFor(intptr_t cid, bool is_new) { - return dart::ClassTable::CounterOffsetFor(cid, is_new); -} - -word ClassTable::SizeOffsetFor(intptr_t cid, bool is_new) { - return dart::ClassTable::SizeOffsetFor(cid, is_new); -} -#endif // !defined(PRODUCT) - -const word ClassTable::kSizeOfClassPairLog2 = - dart::ClassTable::kSizeOfClassPairLog2; - -const intptr_t Instructions::kPolymorphicEntryOffset = - dart::Instructions::kPolymorphicEntryOffset; - -const intptr_t Instructions::kMonomorphicEntryOffset = - dart::Instructions::kMonomorphicEntryOffset; - -intptr_t Instructions::HeaderSize() { - return dart::Instructions::HeaderSize(); -} - -intptr_t Code::entry_point_offset(CodeEntryKind kind) { - return dart::Code::entry_point_offset(kind); -} - -const word SubtypeTestCache::kTestEntryLength = - dart::SubtypeTestCache::kTestEntryLength; -const word SubtypeTestCache::kInstanceClassIdOrFunction = - dart::SubtypeTestCache::kInstanceClassIdOrFunction; -const word SubtypeTestCache::kInstanceTypeArguments = - dart::SubtypeTestCache::kInstanceTypeArguments; -const word SubtypeTestCache::kInstantiatorTypeArguments = - dart::SubtypeTestCache::kInstantiatorTypeArguments; -const word SubtypeTestCache::kFunctionTypeArguments = - dart::SubtypeTestCache::kFunctionTypeArguments; -const word SubtypeTestCache::kInstanceParentFunctionTypeArguments = - dart::SubtypeTestCache::kInstanceParentFunctionTypeArguments; -const word SubtypeTestCache::kInstanceDelayedFunctionTypeArguments = - dart::SubtypeTestCache::kInstanceDelayedFunctionTypeArguments; -const word SubtypeTestCache::kTestResult = dart::SubtypeTestCache::kTestResult; - -word Context::header_size() { - return sizeof(dart::RawContext); -} - -#if !defined(PRODUCT) -word ClassHeapStats::TraceAllocationMask() { - return dart::ClassHeapStats::TraceAllocationMask(); -} - -word ClassHeapStats::state_offset() { - return dart::ClassHeapStats::state_offset(); -} - -word ClassHeapStats::allocated_since_gc_new_space_offset() { - return dart::ClassHeapStats::allocated_since_gc_new_space_offset(); -} - -word ClassHeapStats::allocated_size_since_gc_new_space_offset() { - return dart::ClassHeapStats::allocated_size_since_gc_new_space_offset(); -} -#endif // !defined(PRODUCT) - -const word Smi::kBits = dart::Smi::kBits; bool IsSmi(const dart::Object& a) { - return a.IsSmi(); + return a.IsSmi() && Utils::IsInt(kSmiBits + 1, dart::Smi::Cast(a).Value()); +} + +bool IsSmi(int64_t v) { + return Utils::IsInt(kSmiBits + 1, v); } word ToRawSmi(const dart::Object& a) { - ASSERT(a.IsSmi()); - return reinterpret_cast(a.raw()); + RELEASE_ASSERT(IsSmi(a)); + return static_cast(reinterpret_cast(a.raw())); } word ToRawSmi(intptr_t value) { return dart::Smi::RawValue(value); } -bool CanLoadFromThread(const dart::Object& object, - word* offset /* = nullptr */) { - if (dart::Thread::CanLoadFromThread(object)) { - if (offset != nullptr) { - *offset = dart::Thread::OffsetFromThread(object); - } - return true; - } - return false; +word SmiValue(const dart::Object& a) { + RELEASE_ASSERT(IsSmi(a)); + return static_cast(dart::Smi::Cast(a).Value()); } #if defined(TARGET_ARCH_IA32) @@ -828,15 +602,8 @@ word ToRawPointer(const dart::Object& a) { } #endif // defined(TARGET_ARCH_IA32) -const word NativeEntry::kNumCallWrapperArguments = - dart::NativeEntry::kNumCallWrapperArguments; - -word NativeArguments::StructSize() { - return sizeof(dart::NativeArguments); -} - word RegExp::function_offset(classid_t cid, bool sticky) { - return dart::RegExp::function_offset(cid, sticky); + return TranslateOffsetInWords(dart::RegExp::function_offset(cid, sticky)); } const word Symbols::kNumberOfOneCharCodeSymbols = @@ -844,6 +611,28 @@ const word Symbols::kNumberOfOneCharCodeSymbols = const word Symbols::kNullCharCodeSymbolOffset = dart::Symbols::kNullCharCodeSymbolOffset; +const word String::kHashBits = dart::String::kHashBits; + +bool Heap::IsAllocatableInNewSpace(intptr_t instance_size) { + return dart::Heap::IsAllocatableInNewSpace(instance_size); +} + +word Field::OffsetOf(const dart::Field& field) { + return TranslateOffsetInWords(field.Offset()); +} + +} // namespace target +} // namespace compiler +} // namespace dart + +#else + +namespace dart { +namespace compiler { +namespace target { + +const word Array::kMaxElements = Array_kMaxElements; + } // namespace target } // namespace compiler } // namespace dart diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h index 24ce3015fa7..57f43129c9d 100644 --- a/runtime/vm/compiler/runtime_api.h +++ b/runtime/vm/compiler/runtime_api.h @@ -23,6 +23,7 @@ #include "vm/bitfield.h" #include "vm/class_id.h" #include "vm/code_entry_kind.h" +#include "vm/constants.h" #include "vm/frame_layout.h" #include "vm/pointer_tagging.h" #include "vm/runtime_entry_list.h" @@ -64,12 +65,16 @@ namespace compiler { class InvalidClass {}; extern InvalidClass kWordSize; extern InvalidClass kWordSizeLog2; +extern InvalidClass kBitsPerWord; extern InvalidClass kNewObjectAlignmentOffset; extern InvalidClass kOldObjectAlignmentOffset; extern InvalidClass kNewObjectBitPosition; extern InvalidClass kObjectAlignment; extern InvalidClass kObjectAlignmentLog2; extern InvalidClass kObjectAlignmentMask; +extern InvalidClass kSmiBits; +extern InvalidClass kSmiMin; +extern InvalidClass kSmiMax; static constexpr intptr_t kHostWordSize = dart::kWordSize; static constexpr intptr_t kHostWordSizeLog2 = dart::kWordSizeLog2; @@ -252,21 +257,30 @@ DART_NORETURN void BailoutWithBranchOffsetError(); // - sizes of structures namespace target { -// Currently we define target::word to match dart::word which represents -// host word. -// -// Once refactoring of the compiler is complete we will switch target::word -// to be independent from host word. -typedef dart::word word; -typedef dart::uword uword; +#if defined(TARGET_ARCH_IS_32_BIT) +typedef int32_t word; +typedef uint32_t uword; +static constexpr word kWordSize = 4; +static constexpr word kWordSizeLog2 = 2; +#elif defined(TARGET_ARCH_IS_64_BIT) +typedef int64_t word; +typedef uint64_t uword; +static constexpr word kWordSize = 8; +static constexpr word kWordSizeLog2 = 3; +#else +#error "Unsupported architecture" +#endif -static constexpr word kWordSize = dart::kWordSize; -static constexpr word kWordSizeLog2 = dart::kWordSizeLog2; +static constexpr word kBitsPerWord = 8 * kWordSize; static_assert((1 << kWordSizeLog2) == kWordSize, "kWordSizeLog2 should match kWordSize"); using ObjectAlignment = dart::ObjectAlignment; +const intptr_t kSmiBits = kBitsPerWord - 2; +const intptr_t kSmiMax = (static_cast(1) << kSmiBits) - 1; +const intptr_t kSmiMin = -(static_cast(1) << kSmiBits); + // Information about heap pages. extern const word kPageSize; extern const word kPageSizeInWords; @@ -291,10 +305,14 @@ uint32_t MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size); // Target specific information about objects. // -// Returns true if the given object can be represented as a Smi on the -// target platform. +// Returns true if the given object can be represented as a Smi on the target +// platform. bool IsSmi(const dart::Object& a); +// Returns true if the given value can be represented as a Smi on the target +// platform. +bool IsSmi(int64_t value); + // Return raw Smi representation of the given object for the target platform. word ToRawSmi(const dart::Object& a); @@ -305,10 +323,12 @@ word ToRawSmi(const dart::Object& a); // as a Smi. word ToRawSmi(intptr_t value); +word SmiValue(const dart::Object& a); + // If the given object can be loaded from the thread on the target then // return true and set offset (if provided) to the offset from the // thread pointer to a field that contains the object. -bool CanLoadFromThread(const dart::Object& object, word* offset = nullptr); +bool CanLoadFromThread(const dart::Object& object, intptr_t* offset = nullptr); // On IA32 we can embed raw pointers into generated code. #if defined(TARGET_ARCH_IA32) @@ -350,12 +370,13 @@ class Object : public AllStatic { public: // Offset of the tags word. static word tags_offset(); + static word InstanceSize(); }; class ObjectPool : public AllStatic { public: // Return offset to the element with the given [index] in the object pool. - static intptr_t element_offset(intptr_t index); + static word element_offset(intptr_t index); }; class Class : public AllStatic { @@ -364,8 +385,10 @@ class Class : public AllStatic { static word declaration_type_offset(); + static word super_type_offset(); + // The offset of the RawObject::num_type_arguments_ field in bytes. - static word num_type_arguments_offset_in_bytes(); + static word num_type_arguments_offset(); // The value used if no type arguments vector is present. static const word kNoTypeArguments; @@ -385,9 +408,6 @@ class Class : public AllStatic { // Returns the offset (in bytes) of the type arguments vector. static intptr_t TypeArgumentsFieldOffset(const dart::Class& klass); - // Returns the instance size (in bytes). - static intptr_t InstanceSize(const dart::Class& klass); - // Whether to trace allocation for this klass. static bool TraceAllocation(const dart::Class& klass); }; @@ -398,6 +418,7 @@ class Instance : public AllStatic { static word first_field_offset(); static word DataOffsetFor(intptr_t cid); static word ElementSizeFor(intptr_t cid); + static word InstanceSize(); }; class Function : public AllStatic { @@ -449,7 +470,9 @@ class Array : public AllStatic { static word data_offset(); static word type_arguments_offset(); static word length_offset(); + static word element_offset(intptr_t index); + static const word kMaxElements; static const word kMaxNewSpaceElements; }; @@ -458,12 +481,14 @@ class GrowableObjectArray : public AllStatic { static word data_offset(); static word type_arguments_offset(); static word length_offset(); + static word InstanceSize(); }; class TypedDataBase : public AllStatic { public: static word data_field_offset(); static word length_offset(); + static word InstanceSize(); }; class TypedData : public AllStatic { @@ -472,10 +497,41 @@ class TypedData : public AllStatic { static word InstanceSize(); }; +class ExternalTypedData : public AllStatic { + public: + static word data_offset(); +}; + +class TypedDataView : public AllStatic { + public: + static word offset_in_bytes_offset(); + static word data_offset(); +}; + +class LinkedHashMap : public AllStatic { + public: + static word index_offset(); + static word data_offset(); + static word hash_mask_offset(); + static word used_data_offset(); + static word deleted_keys_offset(); + static word InstanceSize(); +}; + class ArgumentsDescriptor : public AllStatic { public: + static word first_named_entry_offset(); + static word named_entry_size(); + static word position_offset(); + static word name_offset(); static word count_offset(); static word type_args_len_offset(); + static word positional_count_offset(); +}; + +class Pointer : public AllStatic { + public: + static word c_memory_address_offset(); }; class AbstractType : public AllStatic { @@ -489,6 +545,7 @@ class Type : public AllStatic { static word type_state_offset(); static word arguments_offset(); static word signature_offset(); + static word type_class_id_offset(); }; class TypeRef : public AllStatic { @@ -499,21 +556,19 @@ class TypeRef : public AllStatic { class Double : public AllStatic { public: static word value_offset(); -}; - -class Smi : public AllStatic { - public: - static const word kBits; + static word InstanceSize(); }; class Mint : public AllStatic { public: static word value_offset(); + static word InstanceSize(); }; class String : public AllStatic { public: static const word kHashBits; + static const word kMaxElements; static word hash_offset(); static word length_offset(); static word InstanceSize(); @@ -529,14 +584,31 @@ class TwoByteString : public AllStatic { static word data_offset(); }; +class ExternalOneByteString : public AllStatic { + public: + static word external_data_offset(); +}; + +class ExternalTwoByteString : public AllStatic { + public: + static word external_data_offset(); +}; + +class Int32x4 : public AllStatic { + public: + static word InstanceSize(); +}; + class Float32x4 : public AllStatic { public: static word value_offset(); + static word InstanceSize(); }; class Float64x2 : public AllStatic { public: static word value_offset(); + static word InstanceSize(); }; class TimelineStream : public AllStatic { @@ -544,12 +616,18 @@ class TimelineStream : public AllStatic { static word enabled_offset(); }; +class VMHandles : public AllStatic { + public: + static constexpr intptr_t kOffsetOfRawPtrInHandle = kWordSize; +}; + class Thread : public AllStatic { public: static word dart_stream_offset(); static word async_stack_trace_offset(); static word predefined_symbols_address_offset(); - + static word deoptimize_entry_offset(); + static word megamorphic_call_checked_entry_offset(); static word active_exception_offset(); static word active_stacktrace_offset(); static word resume_pc_offset(); @@ -569,10 +647,10 @@ class Thread : public AllStatic { static word null_error_shared_without_fpu_regs_entry_point_offset(); static word write_barrier_mask_offset(); static word monomorphic_miss_entry_offset(); - static word write_barrier_wrappers_thread_offset(intptr_t regno); + static word write_barrier_wrappers_thread_offset(Register regno); static word array_write_barrier_entry_point_offset(); static word write_barrier_entry_point_offset(); - static word verify_callback_isolate_entry_point_offset(); + static word verify_callback_entry_offset(); static word vm_tag_offset(); static uword vm_tag_compiled_id(); @@ -583,9 +661,14 @@ class Thread : public AllStatic { static word execution_state_offset(); static uword native_execution_state(); static uword generated_execution_state(); + static word stack_overflow_flags_offset(); + static word stack_overflow_shared_stub_entry_point_offset(bool fpu_regs); + static word stack_limit_offset(); + static word unboxed_int64_runtime_arg_offset(); static word callback_code_offset(); + static word AllocateArray_entry_point_offset(); #if !defined(TARGET_ARCH_DBC) static word write_barrier_code_offset(); static word array_write_barrier_code_offset(); @@ -602,7 +685,9 @@ class Thread : public AllStatic { static word invoke_dart_code_from_bytecode_stub_offset(); static word null_error_shared_without_fpu_regs_stub_offset(); static word null_error_shared_with_fpu_regs_stub_offset(); + static word stack_overflow_shared_without_fpu_regs_entry_point_offset(); static word stack_overflow_shared_without_fpu_regs_stub_offset(); + static word stack_overflow_shared_with_fpu_regs_entry_point_offset(); static word stack_overflow_shared_with_fpu_regs_stub_offset(); static word lazy_deopt_from_return_stub_offset(); static word lazy_deopt_from_throw_stub_offset(); @@ -628,6 +713,7 @@ class Thread : public AllStatic { #undef DECLARE_CONSTANT_OFFSET_GETTER static word OffsetFromThread(const dart::Object& object); + static intptr_t OffsetFromThread(const dart::RuntimeEntry* runtime_entry); }; class StoreBufferBlock : public AllStatic { @@ -670,9 +756,9 @@ class ClassTable : public AllStatic { #if !defined(PRODUCT) static word ClassOffsetFor(intptr_t cid); static word StateOffsetFor(intptr_t cid); - static word TableOffsetFor(intptr_t cid); - static word CounterOffsetFor(intptr_t cid, bool is_new); - static word SizeOffsetFor(intptr_t cid, bool is_new); + static word class_heap_stats_table_offset(); + static word NewSpaceCounterOffsetFor(intptr_t cid); + static word NewSpaceSizeOffsetFor(intptr_t cid); #endif // !defined(PRODUCT) static const word kSizeOfClassPairLog2; }; @@ -689,9 +775,10 @@ class ClassHeapStats : public AllStatic { class Instructions : public AllStatic { public: - static const intptr_t kPolymorphicEntryOffset; - static const intptr_t kMonomorphicEntryOffset; - static intptr_t HeaderSize(); + static const word kPolymorphicEntryOffset; + static const word kMonomorphicEntryOffset; + static word HeaderSize(); + static word UnalignedHeaderSize(); }; class Code : public AllStatic { @@ -700,10 +787,11 @@ class Code : public AllStatic { static uword EntryPointOf(const dart::Code& code); #endif // defined(TARGET_ARCH_IA32) - static intptr_t object_pool_offset(); - static intptr_t entry_point_offset( - CodeEntryKind kind = CodeEntryKind::kNormal); - static intptr_t saved_instructions_offset(); + static word object_pool_offset(); + static word entry_point_offset(CodeEntryKind kind = CodeEntryKind::kNormal); + static word function_entry_point_offset(CodeEntryKind kind); + static word saved_instructions_offset(); + static word owner_offset(); }; class SubtypeTestCache : public AllStatic { @@ -736,6 +824,8 @@ class Closure : public AllStatic { static word function_offset(); static word function_type_arguments_offset(); static word instantiator_type_arguments_offset(); + static word hash_offset(); + static word InstanceSize(); }; class HeapPage : public AllStatic { @@ -783,6 +873,24 @@ class Symbols : public AllStatic { static const word kNullCharCodeSymbolOffset; }; +class Field : public AllStatic { + public: + static word OffsetOf(const dart::Field& field); + + static word guarded_cid_offset(); + static word guarded_list_length_in_object_offset_offset(); + static word guarded_list_length_offset(); + static word is_nullable_offset(); + static word static_value_offset(); + static word kind_bits_offset(); +}; + +class TypeArguments : public AllStatic { + public: + static word instantiations_offset(); + static word type_at_offset(intptr_t i); +}; + } // namespace target } // namespace compiler } // namespace dart diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h index 4540195c48f..761b30fdd67 100644 --- a/runtime/vm/compiler/runtime_offsets_extracted.h +++ b/runtime/vm/compiler/runtime_offsets_extracted.h @@ -16,1328 +16,1954 @@ // dart.cc. #if defined(TARGET_ARCH_ARM) -static constexpr dart::word ObjectPool_elements_start_offset = 8; -static constexpr dart::word ObjectPool_element_size = 4; -static constexpr dart::word Array_kMaxElements = 268435455; -static constexpr dart::word Array_kMaxNewSpaceElements = 65533; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 3; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 20; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 0; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 9; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 536870911; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 8; +static constexpr dart::compiler::target::word ObjectPool_element_size = 4; +static constexpr dart::compiler::target::word Array_kMaxElements = 268435455; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 65533; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 3; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 20; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 0; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = 536870911; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 4; -static constexpr dart::word ArgumentsDescriptor_count_offset = 16; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 24; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 8; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 4; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 20; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 12; -static constexpr dart::word Array_data_offset = 12; -static constexpr dart::word Array_length_offset = 8; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 4; -static constexpr dart::word Class_declaration_type_offset = 56; -static constexpr dart::word Class_num_type_arguments_offset = 102; -static constexpr dart::word Class_super_type_offset = 44; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 92; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 48; -static constexpr dart::word - ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; -static constexpr dart::word ClassHeapStats_state_offset = 160; -static constexpr dart::word ClassTable_table_offset = 8; -static constexpr dart::word Closure_context_offset = 20; -static constexpr dart::word Closure_delayed_type_arguments_offset = 12; -static constexpr dart::word Closure_function_offset = 16; -static constexpr dart::word Closure_function_type_arguments_offset = 8; -static constexpr dart::word Closure_hash_offset = 24; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 4; -static constexpr dart::word Code_object_pool_offset = 20; -static constexpr dart::word Code_saved_instructions_offset = 24; -static constexpr dart::word Code_owner_offset = 28; -static constexpr dart::word Context_num_variables_offset = 4; -static constexpr dart::word Context_parent_offset = 8; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 12; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 12; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 48; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 4; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 16; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 24; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 4; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 20; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 12; +static constexpr dart::compiler::target::word Array_data_offset = 12; +static constexpr dart::compiler::target::word Array_length_offset = 8; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Class_declaration_type_offset = 56; -static constexpr dart::word Field_guarded_list_length_offset = 28; -static constexpr dart::word Field_is_nullable_offset = 50; -static constexpr dart::word Field_static_value_offset = 16; -static constexpr dart::word Field_kind_bits_offset = 58; -static constexpr dart::word Function_code_offset = 44; -static constexpr dart::word Function_entry_point_offset = 4; -static constexpr dart::word Function_unchecked_entry_point_offset = 8; -static constexpr dart::word Function_usage_counter_offset = 76; -static constexpr dart::word GrowableObjectArray_data_offset = 12; -static constexpr dart::word GrowableObjectArray_length_offset = 8; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 4; -static constexpr dart::word HeapPage_card_table_offset = 20; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 12; -static constexpr dart::word ICData_entries_offset = 4; -static constexpr dart::word ICData_owner_offset = 20; -static constexpr dart::word ICData_state_bits_offset = 28; -static constexpr dart::word ICData_receivers_static_type_offset = 16; -static constexpr dart::word Isolate_class_table_offset = 24; -static constexpr dart::word Isolate_current_tag_offset = 8; -static constexpr dart::word Isolate_default_tag_offset = 12; -static constexpr dart::word Isolate_ic_miss_code_offset = 16; -static constexpr dart::word Isolate_object_store_offset = 20; -static constexpr dart::word Isolate_single_step_offset = 44; -static constexpr dart::word Isolate_user_tag_offset = 4; -static constexpr dart::word LinkedHashMap_data_offset = 16; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 12; -static constexpr dart::word LinkedHashMap_index_offset = 8; -static constexpr dart::word LinkedHashMap_used_data_offset = 20; -static constexpr dart::word MarkingStackBlock_pointers_offset = 8; -static constexpr dart::word MarkingStackBlock_top_offset = 4; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 16; -static constexpr dart::word MegamorphicCache_buckets_offset = 4; -static constexpr dart::word MegamorphicCache_mask_offset = 8; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 4; -static constexpr dart::word NativeArguments_argv_offset = 8; -static constexpr dart::word NativeArguments_retval_offset = 12; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 64; -static constexpr dart::word ObjectStore_int_type_offset = 32; -static constexpr dart::word ObjectStore_string_type_offset = 80; -static constexpr dart::word OneByteString_data_offset = 12; -static constexpr dart::word Pointer_c_memory_address_offset = 8; -static constexpr dart::word SingleTargetCache_entry_point_offset = 8; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 12; -static constexpr dart::word SingleTargetCache_target_offset = 4; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 14; -static constexpr dart::word StoreBufferBlock_pointers_offset = 8; -static constexpr dart::word StoreBufferBlock_top_offset = 4; -static constexpr dart::word String_hash_offset = 8; -static constexpr dart::word String_length_offset = 4; -static constexpr dart::word SubtypeTestCache_cache_offset = 4; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 284; -static constexpr dart::word Thread_active_exception_offset = 612; -static constexpr dart::word Thread_active_stacktrace_offset = 616; -static constexpr dart::word Thread_array_write_barrier_code_offset = 112; -static constexpr dart::word Thread_array_write_barrier_entry_point_offset = 196; -static constexpr dart::word Thread_async_stack_trace_offset = 84; -static constexpr dart::word +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 102; +static constexpr dart::compiler::target::word Class_super_type_offset = 44; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 92; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 48; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 160; +static constexpr dart::compiler::target::word ClassTable_table_offset = 8; +static constexpr dart::compiler::target::word Closure_context_offset = 20; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 12; +static constexpr dart::compiler::target::word Closure_function_offset = 16; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Closure_hash_offset = 24; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Code_object_pool_offset = 20; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 24; +static constexpr dart::compiler::target::word Code_owner_offset = 28; +static constexpr dart::compiler::target::word Context_num_variables_offset = 4; +static constexpr dart::compiler::target::word Context_parent_offset = 8; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 48; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 56; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 28; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 50; +static constexpr dart::compiler::target::word Field_static_value_offset = 16; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 58; +static constexpr dart::compiler::target::word Function_code_offset = 44; +static constexpr dart::compiler::target::word Function_entry_point_offset = 4; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 8; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 76; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 12; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 8; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 4; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 12; +static constexpr dart::compiler::target::word ICData_entries_offset = 4; +static constexpr dart::compiler::target::word ICData_owner_offset = 20; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 28; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 16; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 24; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 8; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 12; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 16; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 20; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 44; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 4; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 12; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 20; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 8; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 4; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 16; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 4; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 8; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 4; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 12; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 64; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 32; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 80; +static constexpr dart::compiler::target::word OneByteString_data_offset = 12; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 8; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 12; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 4; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 14; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 8; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 4; +static constexpr dart::compiler::target::word String_hash_offset = 8; +static constexpr dart::compiler::target::word String_length_offset = 4; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 284; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 612; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 616; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_code_offset = 112; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_entry_point_offset = 196; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 84; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 244; -static constexpr dart::word Thread_bool_false_offset = 104; -static constexpr dart::word Thread_bool_true_offset = 100; -static constexpr dart::word Thread_call_to_runtime_entry_point_offset = 200; -static constexpr dart::word Thread_call_to_runtime_stub_offset = 132; -static constexpr dart::word Thread_dart_stream_offset = 644; -static constexpr dart::word Thread_deoptimize_entry_offset = 232; -static constexpr dart::word Thread_deoptimize_stub_offset = 164; -static constexpr dart::word Thread_double_abs_address_offset = 264; -static constexpr dart::word Thread_double_negate_address_offset = 260; -static constexpr dart::word Thread_end_offset = 60; -static constexpr dart::word Thread_enter_safepoint_stub_offset = 184; -static constexpr dart::word Thread_execution_state_offset = 628; -static constexpr dart::word Thread_exit_safepoint_stub_offset = 188; -static constexpr dart::word Thread_fix_allocation_stub_code_offset = 120; -static constexpr dart::word Thread_fix_callers_target_code_offset = 116; -static constexpr dart::word Thread_float_absolute_address_offset = 276; -static constexpr dart::word Thread_float_negate_address_offset = 272; -static constexpr dart::word Thread_float_not_address_offset = 268; -static constexpr dart::word Thread_float_zerow_address_offset = 280; -static constexpr dart::word Thread_global_object_pool_offset = 620; -static constexpr dart::word Thread_ic_lookup_through_code_stub_offset = 156; -static constexpr dart::word Thread_interpret_call_entry_point_offset = 248; -static constexpr dart::word Thread_invoke_dart_code_from_bytecode_stub_offset = - 128; -static constexpr dart::word Thread_invoke_dart_code_stub_offset = 124; -static constexpr dart::word Thread_isolate_offset = 48; -static constexpr dart::word Thread_lazy_deopt_from_return_stub_offset = 168; -static constexpr dart::word Thread_lazy_deopt_from_throw_stub_offset = 172; -static constexpr dart::word Thread_lazy_specialize_type_test_stub_offset = 180; -static constexpr dart::word Thread_marking_stack_block_offset = 72; -static constexpr dart::word Thread_megamorphic_call_checked_entry_offset = 220; -static constexpr dart::word Thread_monomorphic_miss_entry_offset = 224; -static constexpr dart::word Thread_monomorphic_miss_stub_offset = 152; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 240; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_bool_false_offset = 104; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 100; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_entry_point_offset = 200; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_stub_offset = 132; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 644; +static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = + 232; +static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = + 164; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 264; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 260; +static constexpr dart::compiler::target::word Thread_end_offset = 60; +static constexpr dart::compiler::target::word + Thread_enter_safepoint_stub_offset = 184; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 628; +static constexpr dart::compiler::target::word + Thread_exit_safepoint_stub_offset = 188; +static constexpr dart::compiler::target::word + Thread_fix_allocation_stub_code_offset = 120; +static constexpr dart::compiler::target::word + Thread_fix_callers_target_code_offset = 116; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 276; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 272; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 268; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 280; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 620; +static constexpr dart::compiler::target::word + Thread_ic_lookup_through_code_stub_offset = 156; +static constexpr dart::compiler::target::word + Thread_interpret_call_entry_point_offset = 248; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_from_bytecode_stub_offset = 128; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_stub_offset = 124; +static constexpr dart::compiler::target::word Thread_isolate_offset = 48; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_return_stub_offset = 168; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_throw_stub_offset = 172; +static constexpr dart::compiler::target::word + Thread_lazy_specialize_type_test_stub_offset = 180; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 72; +static constexpr dart::compiler::target::word + Thread_megamorphic_call_checked_entry_offset = 220; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_entry_offset = 224; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_stub_offset = 152; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 240; +static constexpr dart::compiler::target::word Thread_null_error_shared_with_fpu_regs_entry_point_offset = 208; -static constexpr dart::word Thread_null_error_shared_with_fpu_regs_stub_offset = - 140; -static constexpr dart::word +static constexpr dart::compiler::target::word + Thread_null_error_shared_with_fpu_regs_stub_offset = 140; +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_entry_point_offset = 204; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_stub_offset = 136; -static constexpr dart::word Thread_object_null_offset = 96; -static constexpr dart::word Thread_predefined_symbols_address_offset = 252; -static constexpr dart::word Thread_resume_pc_offset = 624; -static constexpr dart::word Thread_safepoint_state_offset = 632; -static constexpr dart::word Thread_slow_type_test_stub_offset = 176; -static constexpr dart::word Thread_stack_limit_offset = 36; -static constexpr dart::word Thread_stack_overflow_flags_offset = 40; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_object_null_offset = 96; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 252; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 624; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 632; +static constexpr dart::compiler::target::word + Thread_slow_type_test_stub_offset = 176; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 36; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 40; +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 216; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 148; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 212; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 144; -static constexpr dart::word Thread_store_buffer_block_offset = 68; -static constexpr dart::word Thread_top_exit_frame_info_offset = 64; -static constexpr dart::word Thread_top_offset = 56; -static constexpr dart::word Thread_top_resource_offset = 24; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 88; -static constexpr dart::word Thread_vm_tag_offset = 80; -static constexpr dart::word Thread_write_barrier_code_offset = 108; -static constexpr dart::word Thread_write_barrier_entry_point_offset = 192; -static constexpr dart::word Thread_write_barrier_mask_offset = 44; -static constexpr dart::word Thread_verify_callback_entry_offset = 236; -static constexpr dart::word Thread_callback_code_offset = 636; -static constexpr dart::word TimelineStream_enabled_offset = 8; -static constexpr dart::word TwoByteString_data_offset = 12; -static constexpr dart::word Type_arguments_offset = 16; -static constexpr dart::word Type_hash_offset = 20; -static constexpr dart::word Type_signature_offset = 24; -static constexpr dart::word Type_type_class_id_offset = 12; -static constexpr dart::word Type_type_state_offset = 32; -static constexpr dart::word TypeArguments_instantiations_offset = 4; -static constexpr dart::word TypeRef_type_offset = 12; -static constexpr dart::word TypedDataBase_data_field_offset = 4; -static constexpr dart::word TypedDataBase_length_offset = 8; -static constexpr dart::word TypedDataView_data_offset = 12; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 16; -static constexpr dart::word TypedData_data_offset = 12; -static constexpr dart::word UserTag_tag_offset = 8; -static constexpr dart::word Array_elements_start_offset = 12; -static constexpr dart::word Array_element_size = 4; -static constexpr dart::word TypeArguments_elements_start_offset = 16; -static constexpr dart::word TypeArguments_element_size = 4; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 168; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 16; -static dart::word Code_entry_point_offset[] = {4, 12, 8, 16}; -static dart::word Code_function_entry_point_offset[] = {4, 8}; -static dart::word Thread_write_barrier_wrappers_thread_offset[] = { - 576, 580, 584, 588, 592, -1, 596, 600, 604, 608, -1, -1, -1, -1, -1, -1}; -static constexpr dart::word Array_header_size = 12; -static constexpr dart::word Context_header_size = 12; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 16; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 16; -static constexpr dart::word String_InstanceSize = 12; -static constexpr dart::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 68; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 64; +static constexpr dart::compiler::target::word Thread_top_offset = 56; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 24; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 88; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 80; +static constexpr dart::compiler::target::word Thread_write_barrier_code_offset = + 108; +static constexpr dart::compiler::target::word + Thread_write_barrier_entry_point_offset = 192; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 44; +static constexpr dart::compiler::target::word + Thread_verify_callback_entry_offset = 236; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 636; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; +static constexpr dart::compiler::target::word Type_arguments_offset = 16; +static constexpr dart::compiler::target::word Type_hash_offset = 20; +static constexpr dart::compiler::target::word Type_signature_offset = 24; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 12; +static constexpr dart::compiler::target::word Type_type_state_offset = 32; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 4; +static constexpr dart::compiler::target::word TypeRef_type_offset = 12; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 4; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 12; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 16; +static constexpr dart::compiler::target::word TypedData_data_offset = 12; +static constexpr dart::compiler::target::word UserTag_tag_offset = 8; +static constexpr dart::compiler::target::word Array_elements_start_offset = 12; +static constexpr dart::compiler::target::word Array_element_size = 4; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 16; +static constexpr dart::compiler::target::word TypeArguments_element_size = 4; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 168; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 16; +static dart::compiler::target::word Code_entry_point_offset[] = {4, 12, 8, 16}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {4, 8}; +static dart::compiler::target::word + Thread_write_barrier_wrappers_thread_offset[] = { + 576, 580, 584, 588, 592, -1, 596, 600, + 604, 608, -1, -1, -1, -1, -1, -1}; +static constexpr dart::compiler::target::word Array_header_size = 12; +static constexpr dart::compiler::target::word Context_header_size = 12; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 16; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 16; +static constexpr dart::compiler::target::word String_InstanceSize = 12; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Object_InstanceSize = 4; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12; +static constexpr dart::compiler::target::word Closure_InstanceSize = 28; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 16; +static constexpr dart::compiler::target::word Instance_InstanceSize = 4; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; #endif // defined(TARGET_ARCH_ARM) #if defined(TARGET_ARCH_X64) -static constexpr dart::word ObjectPool_elements_start_offset = 16; -static constexpr dart::word ObjectPool_element_size = 8; -static constexpr dart::word Array_kMaxElements = 576460752303423487; -static constexpr dart::word Array_kMaxNewSpaceElements = 32765; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 4; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 32; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 8; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 10; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 2305843009213693951; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 16; +static constexpr dart::compiler::target::word ObjectPool_element_size = 8; +static constexpr dart::compiler::target::word Array_kMaxElements = + 576460752303423487; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 32765; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 4; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 32; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 8; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = + 2305843009213693951; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 8; -static constexpr dart::word ArgumentsDescriptor_count_offset = 32; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 48; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 16; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 8; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 40; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 24; -static constexpr dart::word Array_data_offset = 24; -static constexpr dart::word Array_length_offset = 16; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 8; -static constexpr dart::word Class_declaration_type_offset = 112; -static constexpr dart::word Class_num_type_arguments_offset = 186; -static constexpr dart::word Class_super_type_offset = 88; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 176; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 96; -static constexpr dart::word +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 32; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 48; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 16; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 8; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 40; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 24; +static constexpr dart::compiler::target::word Array_data_offset = 24; +static constexpr dart::compiler::target::word Array_length_offset = 16; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Class_declaration_type_offset = + 112; +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 186; +static constexpr dart::compiler::target::word Class_super_type_offset = 88; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 176; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 96; +static constexpr dart::compiler::target::word ClassHeapStats_allocated_size_since_gc_new_space_offset = 104; -static constexpr dart::word ClassHeapStats_state_offset = 272; -static constexpr dart::word ClassTable_table_offset = 16; -static constexpr dart::word Closure_context_offset = 40; -static constexpr dart::word Closure_delayed_type_arguments_offset = 24; -static constexpr dart::word Closure_function_offset = 32; -static constexpr dart::word Closure_function_type_arguments_offset = 16; -static constexpr dart::word Closure_hash_offset = 48; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 8; -static constexpr dart::word Code_object_pool_offset = 40; -static constexpr dart::word Code_saved_instructions_offset = 48; -static constexpr dart::word Code_owner_offset = 56; -static constexpr dart::word Context_num_variables_offset = 8; -static constexpr dart::word Context_parent_offset = 16; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 16; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 16; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 88; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = - 96; -static constexpr dart::word Field_guarded_list_length_offset = 56; -static constexpr dart::word Field_is_nullable_offset = 90; -static constexpr dart::word Field_static_value_offset = 32; -static constexpr dart::word Field_kind_bits_offset = 98; -static constexpr dart::word Function_code_offset = 88; -static constexpr dart::word Function_entry_point_offset = 8; -static constexpr dart::word Function_unchecked_entry_point_offset = 16; -static constexpr dart::word Function_usage_counter_offset = 132; -static constexpr dart::word GrowableObjectArray_data_offset = 24; -static constexpr dart::word GrowableObjectArray_length_offset = 16; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 8; -static constexpr dart::word HeapPage_card_table_offset = 40; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 24; -static constexpr dart::word ICData_entries_offset = 8; -static constexpr dart::word ICData_owner_offset = 40; -static constexpr dart::word ICData_state_bits_offset = 52; -static constexpr dart::word ICData_receivers_static_type_offset = 32; -static constexpr dart::word Isolate_class_table_offset = 48; -static constexpr dart::word Isolate_current_tag_offset = 16; -static constexpr dart::word Isolate_default_tag_offset = 24; -static constexpr dart::word Isolate_ic_miss_code_offset = 32; -static constexpr dart::word Isolate_object_store_offset = 40; -static constexpr dart::word Isolate_single_step_offset = 88; -static constexpr dart::word Isolate_user_tag_offset = 8; -static constexpr dart::word LinkedHashMap_data_offset = 32; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::word LinkedHashMap_index_offset = 16; -static constexpr dart::word LinkedHashMap_used_data_offset = 40; -static constexpr dart::word MarkingStackBlock_pointers_offset = 16; -static constexpr dart::word MarkingStackBlock_top_offset = 8; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 32; -static constexpr dart::word MegamorphicCache_buckets_offset = 8; -static constexpr dart::word MegamorphicCache_mask_offset = 16; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 8; -static constexpr dart::word NativeArguments_argv_offset = 16; -static constexpr dart::word NativeArguments_retval_offset = 24; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 128; -static constexpr dart::word ObjectStore_int_type_offset = 64; -static constexpr dart::word ObjectStore_string_type_offset = 160; -static constexpr dart::word OneByteString_data_offset = 16; -static constexpr dart::word Pointer_c_memory_address_offset = 16; -static constexpr dart::word SingleTargetCache_entry_point_offset = 16; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 24; -static constexpr dart::word SingleTargetCache_target_offset = 8; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 26; -static constexpr dart::word StoreBufferBlock_pointers_offset = 16; -static constexpr dart::word StoreBufferBlock_top_offset = 8; -static constexpr dart::word String_hash_offset = 4; -static constexpr dart::word String_length_offset = 8; -static constexpr dart::word SubtypeTestCache_cache_offset = 8; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 560; -static constexpr dart::word Thread_active_exception_offset = 1232; -static constexpr dart::word Thread_active_stacktrace_offset = 1240; -static constexpr dart::word Thread_array_write_barrier_code_offset = 216; -static constexpr dart::word Thread_array_write_barrier_entry_point_offset = 384; -static constexpr dart::word Thread_async_stack_trace_offset = 168; -static constexpr dart::word +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 272; +static constexpr dart::compiler::target::word ClassTable_table_offset = 16; +static constexpr dart::compiler::target::word Closure_context_offset = 40; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 24; +static constexpr dart::compiler::target::word Closure_function_offset = 32; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 16; +static constexpr dart::compiler::target::word Closure_hash_offset = 48; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Code_object_pool_offset = 40; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 48; +static constexpr dart::compiler::target::word Code_owner_offset = 56; +static constexpr dart::compiler::target::word Context_num_variables_offset = 8; +static constexpr dart::compiler::target::word Context_parent_offset = 16; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 88; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 96; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 56; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 90; +static constexpr dart::compiler::target::word Field_static_value_offset = 32; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 98; +static constexpr dart::compiler::target::word Function_code_offset = 88; +static constexpr dart::compiler::target::word Function_entry_point_offset = 8; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 16; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 132; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 24; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 16; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 8; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 24; +static constexpr dart::compiler::target::word ICData_entries_offset = 8; +static constexpr dart::compiler::target::word ICData_owner_offset = 40; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 52; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 32; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 48; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 16; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 24; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 40; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 88; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 24; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 40; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 16; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 8; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 32; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 8; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 16; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 8; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 16; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 24; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 128; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 64; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 160; +static constexpr dart::compiler::target::word OneByteString_data_offset = 16; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 16; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 16; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 24; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 26; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 16; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 8; +static constexpr dart::compiler::target::word String_hash_offset = 4; +static constexpr dart::compiler::target::word String_length_offset = 8; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 560; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 1232; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1240; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_code_offset = 216; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_entry_point_offset = 384; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 168; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 480; -static constexpr dart::word Thread_bool_false_offset = 200; -static constexpr dart::word Thread_bool_true_offset = 192; -static constexpr dart::word Thread_call_to_runtime_entry_point_offset = 392; -static constexpr dart::word Thread_call_to_runtime_stub_offset = 256; -static constexpr dart::word Thread_dart_stream_offset = 1296; -static constexpr dart::word Thread_deoptimize_entry_offset = 456; -static constexpr dart::word Thread_deoptimize_stub_offset = 320; -static constexpr dart::word Thread_double_abs_address_offset = 520; -static constexpr dart::word Thread_double_negate_address_offset = 512; -static constexpr dart::word Thread_end_offset = 120; -static constexpr dart::word Thread_enter_safepoint_stub_offset = 360; -static constexpr dart::word Thread_execution_state_offset = 1264; -static constexpr dart::word Thread_exit_safepoint_stub_offset = 368; -static constexpr dart::word Thread_fix_allocation_stub_code_offset = 232; -static constexpr dart::word Thread_fix_callers_target_code_offset = 224; -static constexpr dart::word Thread_float_absolute_address_offset = 544; -static constexpr dart::word Thread_float_negate_address_offset = 536; -static constexpr dart::word Thread_float_not_address_offset = 528; -static constexpr dart::word Thread_float_zerow_address_offset = 552; -static constexpr dart::word Thread_global_object_pool_offset = 1248; -static constexpr dart::word Thread_ic_lookup_through_code_stub_offset = 304; -static constexpr dart::word Thread_interpret_call_entry_point_offset = 488; -static constexpr dart::word Thread_invoke_dart_code_from_bytecode_stub_offset = - 248; -static constexpr dart::word Thread_invoke_dart_code_stub_offset = 240; -static constexpr dart::word Thread_isolate_offset = 96; -static constexpr dart::word Thread_lazy_deopt_from_return_stub_offset = 328; -static constexpr dart::word Thread_lazy_deopt_from_throw_stub_offset = 336; -static constexpr dart::word Thread_lazy_specialize_type_test_stub_offset = 352; -static constexpr dart::word Thread_marking_stack_block_offset = 144; -static constexpr dart::word Thread_megamorphic_call_checked_entry_offset = 432; -static constexpr dart::word Thread_monomorphic_miss_entry_offset = 440; -static constexpr dart::word Thread_monomorphic_miss_stub_offset = 296; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 472; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_bool_false_offset = 200; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 192; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_entry_point_offset = 392; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_stub_offset = 256; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1296; +static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = + 456; +static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = + 320; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 520; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 512; +static constexpr dart::compiler::target::word Thread_end_offset = 120; +static constexpr dart::compiler::target::word + Thread_enter_safepoint_stub_offset = 360; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 1264; +static constexpr dart::compiler::target::word + Thread_exit_safepoint_stub_offset = 368; +static constexpr dart::compiler::target::word + Thread_fix_allocation_stub_code_offset = 232; +static constexpr dart::compiler::target::word + Thread_fix_callers_target_code_offset = 224; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 544; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 536; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 528; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 552; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 1248; +static constexpr dart::compiler::target::word + Thread_ic_lookup_through_code_stub_offset = 304; +static constexpr dart::compiler::target::word + Thread_interpret_call_entry_point_offset = 488; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_from_bytecode_stub_offset = 248; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_stub_offset = 240; +static constexpr dart::compiler::target::word Thread_isolate_offset = 96; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_return_stub_offset = 328; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_throw_stub_offset = 336; +static constexpr dart::compiler::target::word + Thread_lazy_specialize_type_test_stub_offset = 352; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 144; +static constexpr dart::compiler::target::word + Thread_megamorphic_call_checked_entry_offset = 432; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_entry_offset = 440; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_stub_offset = 296; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 472; +static constexpr dart::compiler::target::word Thread_null_error_shared_with_fpu_regs_entry_point_offset = 408; -static constexpr dart::word Thread_null_error_shared_with_fpu_regs_stub_offset = - 272; -static constexpr dart::word +static constexpr dart::compiler::target::word + Thread_null_error_shared_with_fpu_regs_stub_offset = 272; +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_entry_point_offset = 400; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_stub_offset = 264; -static constexpr dart::word Thread_object_null_offset = 184; -static constexpr dart::word Thread_predefined_symbols_address_offset = 496; -static constexpr dart::word Thread_resume_pc_offset = 1256; -static constexpr dart::word Thread_safepoint_state_offset = 1272; -static constexpr dart::word Thread_slow_type_test_stub_offset = 344; -static constexpr dart::word Thread_stack_limit_offset = 72; -static constexpr dart::word Thread_stack_overflow_flags_offset = 80; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_object_null_offset = 184; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 496; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1256; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 1272; +static constexpr dart::compiler::target::word + Thread_slow_type_test_stub_offset = 344; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 72; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 80; +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 424; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 288; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 416; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 280; -static constexpr dart::word Thread_store_buffer_block_offset = 136; -static constexpr dart::word Thread_top_exit_frame_info_offset = 128; -static constexpr dart::word Thread_top_offset = 112; -static constexpr dart::word Thread_top_resource_offset = 48; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 176; -static constexpr dart::word Thread_vm_tag_offset = 160; -static constexpr dart::word Thread_write_barrier_code_offset = 208; -static constexpr dart::word Thread_write_barrier_entry_point_offset = 376; -static constexpr dart::word Thread_write_barrier_mask_offset = 88; -static constexpr dart::word Thread_verify_callback_entry_offset = 464; -static constexpr dart::word Thread_callback_code_offset = 1280; -static constexpr dart::word TimelineStream_enabled_offset = 16; -static constexpr dart::word TwoByteString_data_offset = 16; -static constexpr dart::word Type_arguments_offset = 32; -static constexpr dart::word Type_hash_offset = 40; -static constexpr dart::word Type_signature_offset = 48; -static constexpr dart::word Type_type_class_id_offset = 24; -static constexpr dart::word Type_type_state_offset = 60; -static constexpr dart::word TypeArguments_instantiations_offset = 8; -static constexpr dart::word TypeRef_type_offset = 24; -static constexpr dart::word TypedDataBase_data_field_offset = 8; -static constexpr dart::word TypedDataBase_length_offset = 16; -static constexpr dart::word TypedDataView_data_offset = 24; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 32; -static constexpr dart::word TypedData_data_offset = 24; -static constexpr dart::word UserTag_tag_offset = 16; -static constexpr dart::word Array_elements_start_offset = 24; -static constexpr dart::word Array_element_size = 8; -static constexpr dart::word TypeArguments_elements_start_offset = 32; -static constexpr dart::word TypeArguments_element_size = 8; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 288; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 32; -static dart::word Code_entry_point_offset[] = {8, 24, 16, 32}; -static dart::word Code_function_entry_point_offset[] = {8, 16}; -static dart::word Thread_write_barrier_wrappers_thread_offset[] = { - 1144, 1152, 1160, 1168, -1, -1, 1176, 1184, - 1192, 1200, 1208, -1, 1216, 1224, -1, -1}; -static constexpr dart::word Array_header_size = 24; -static constexpr dart::word Context_header_size = 24; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 24; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 32; -static constexpr dart::word String_InstanceSize = 16; -static constexpr dart::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 136; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 128; +static constexpr dart::compiler::target::word Thread_top_offset = 112; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 48; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 176; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 160; +static constexpr dart::compiler::target::word Thread_write_barrier_code_offset = + 208; +static constexpr dart::compiler::target::word + Thread_write_barrier_entry_point_offset = 376; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 88; +static constexpr dart::compiler::target::word + Thread_verify_callback_entry_offset = 464; +static constexpr dart::compiler::target::word Thread_callback_code_offset = + 1280; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = + 16; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; +static constexpr dart::compiler::target::word Type_arguments_offset = 32; +static constexpr dart::compiler::target::word Type_hash_offset = 40; +static constexpr dart::compiler::target::word Type_signature_offset = 48; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 24; +static constexpr dart::compiler::target::word Type_type_state_offset = 60; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 8; +static constexpr dart::compiler::target::word TypeRef_type_offset = 24; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 8; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 24; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 32; +static constexpr dart::compiler::target::word TypedData_data_offset = 24; +static constexpr dart::compiler::target::word UserTag_tag_offset = 16; +static constexpr dart::compiler::target::word Array_elements_start_offset = 24; +static constexpr dart::compiler::target::word Array_element_size = 8; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 32; +static constexpr dart::compiler::target::word TypeArguments_element_size = 8; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 288; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 32; +static dart::compiler::target::word Code_entry_point_offset[] = {8, 24, 16, 32}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {8, + 16}; +static dart::compiler::target::word + Thread_write_barrier_wrappers_thread_offset[] = { + 1144, 1152, 1160, 1168, -1, -1, 1176, 1184, + 1192, 1200, 1208, -1, 1216, 1224, -1, -1}; +static constexpr dart::compiler::target::word Array_header_size = 24; +static constexpr dart::compiler::target::word Context_header_size = 24; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 24; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 32; +static constexpr dart::compiler::target::word String_InstanceSize = 16; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Object_InstanceSize = 8; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24; +static constexpr dart::compiler::target::word Closure_InstanceSize = 56; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 32; +static constexpr dart::compiler::target::word Instance_InstanceSize = 8; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; #endif // defined(TARGET_ARCH_X64) #if defined(TARGET_ARCH_IA32) -static constexpr dart::word ObjectPool_elements_start_offset = 8; -static constexpr dart::word ObjectPool_element_size = 4; -static constexpr dart::word Array_kMaxElements = 268435455; -static constexpr dart::word Array_kMaxNewSpaceElements = 65533; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 3; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 0; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 0; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 9; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 536870911; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 8; +static constexpr dart::compiler::target::word ObjectPool_element_size = 4; +static constexpr dart::compiler::target::word Array_kMaxElements = 268435455; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 65533; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 3; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 0; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 0; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = 536870911; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 4; -static constexpr dart::word ArgumentsDescriptor_count_offset = 16; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 24; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 8; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 4; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 20; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 12; -static constexpr dart::word Array_data_offset = 12; -static constexpr dart::word Array_length_offset = 8; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 4; -static constexpr dart::word Class_declaration_type_offset = 56; -static constexpr dart::word Class_num_type_arguments_offset = 102; -static constexpr dart::word Class_super_type_offset = 44; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 92; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 48; -static constexpr dart::word - ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; -static constexpr dart::word ClassHeapStats_state_offset = 160; -static constexpr dart::word ClassTable_table_offset = 8; -static constexpr dart::word Closure_context_offset = 20; -static constexpr dart::word Closure_delayed_type_arguments_offset = 12; -static constexpr dart::word Closure_function_offset = 16; -static constexpr dart::word Closure_function_type_arguments_offset = 8; -static constexpr dart::word Closure_hash_offset = 24; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 4; -static constexpr dart::word Code_object_pool_offset = 20; -static constexpr dart::word Code_saved_instructions_offset = 24; -static constexpr dart::word Code_owner_offset = 28; -static constexpr dart::word Context_num_variables_offset = 4; -static constexpr dart::word Context_parent_offset = 8; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 12; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 12; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 48; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 4; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 16; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 24; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 4; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 20; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 12; +static constexpr dart::compiler::target::word Array_data_offset = 12; +static constexpr dart::compiler::target::word Array_length_offset = 8; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Class_declaration_type_offset = 56; -static constexpr dart::word Field_guarded_list_length_offset = 28; -static constexpr dart::word Field_is_nullable_offset = 50; -static constexpr dart::word Field_static_value_offset = 16; -static constexpr dart::word Field_kind_bits_offset = 58; -static constexpr dart::word Function_code_offset = 44; -static constexpr dart::word Function_entry_point_offset = 4; -static constexpr dart::word Function_unchecked_entry_point_offset = 8; -static constexpr dart::word Function_usage_counter_offset = 76; -static constexpr dart::word GrowableObjectArray_data_offset = 12; -static constexpr dart::word GrowableObjectArray_length_offset = 8; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 4; -static constexpr dart::word HeapPage_card_table_offset = 20; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 12; -static constexpr dart::word ICData_entries_offset = 4; -static constexpr dart::word ICData_owner_offset = 20; -static constexpr dart::word ICData_state_bits_offset = 28; -static constexpr dart::word ICData_receivers_static_type_offset = 16; -static constexpr dart::word Isolate_class_table_offset = 24; -static constexpr dart::word Isolate_current_tag_offset = 8; -static constexpr dart::word Isolate_default_tag_offset = 12; -static constexpr dart::word Isolate_ic_miss_code_offset = 16; -static constexpr dart::word Isolate_object_store_offset = 20; -static constexpr dart::word Isolate_single_step_offset = 44; -static constexpr dart::word Isolate_user_tag_offset = 4; -static constexpr dart::word LinkedHashMap_data_offset = 16; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 12; -static constexpr dart::word LinkedHashMap_index_offset = 8; -static constexpr dart::word LinkedHashMap_used_data_offset = 20; -static constexpr dart::word MarkingStackBlock_pointers_offset = 8; -static constexpr dart::word MarkingStackBlock_top_offset = 4; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 16; -static constexpr dart::word MegamorphicCache_buckets_offset = 4; -static constexpr dart::word MegamorphicCache_mask_offset = 8; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 4; -static constexpr dart::word NativeArguments_argv_offset = 8; -static constexpr dart::word NativeArguments_retval_offset = 12; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 64; -static constexpr dart::word ObjectStore_int_type_offset = 32; -static constexpr dart::word ObjectStore_string_type_offset = 80; -static constexpr dart::word OneByteString_data_offset = 12; -static constexpr dart::word Pointer_c_memory_address_offset = 8; -static constexpr dart::word SingleTargetCache_entry_point_offset = 8; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 12; -static constexpr dart::word SingleTargetCache_target_offset = 4; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 14; -static constexpr dart::word StoreBufferBlock_pointers_offset = 8; -static constexpr dart::word StoreBufferBlock_top_offset = 4; -static constexpr dart::word String_hash_offset = 8; -static constexpr dart::word String_length_offset = 4; -static constexpr dart::word SubtypeTestCache_cache_offset = 4; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 284; -static constexpr dart::word Thread_active_exception_offset = 576; -static constexpr dart::word Thread_active_stacktrace_offset = 580; -static constexpr dart::word Thread_array_write_barrier_code_offset = 112; -static constexpr dart::word Thread_array_write_barrier_entry_point_offset = 196; -static constexpr dart::word Thread_async_stack_trace_offset = 84; -static constexpr dart::word +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 102; +static constexpr dart::compiler::target::word Class_super_type_offset = 44; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 92; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 48; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 160; +static constexpr dart::compiler::target::word ClassTable_table_offset = 8; +static constexpr dart::compiler::target::word Closure_context_offset = 20; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 12; +static constexpr dart::compiler::target::word Closure_function_offset = 16; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Closure_hash_offset = 24; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Code_object_pool_offset = 20; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 24; +static constexpr dart::compiler::target::word Code_owner_offset = 28; +static constexpr dart::compiler::target::word Context_num_variables_offset = 4; +static constexpr dart::compiler::target::word Context_parent_offset = 8; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 48; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 56; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 28; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 50; +static constexpr dart::compiler::target::word Field_static_value_offset = 16; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 58; +static constexpr dart::compiler::target::word Function_code_offset = 44; +static constexpr dart::compiler::target::word Function_entry_point_offset = 4; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 8; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 76; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 12; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 8; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 4; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 12; +static constexpr dart::compiler::target::word ICData_entries_offset = 4; +static constexpr dart::compiler::target::word ICData_owner_offset = 20; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 28; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 16; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 24; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 8; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 12; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 16; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 20; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 44; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 4; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 12; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 20; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 8; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 4; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 16; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 4; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 8; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 4; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 12; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 64; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 32; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 80; +static constexpr dart::compiler::target::word OneByteString_data_offset = 12; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 8; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 12; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 4; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 14; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 8; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 4; +static constexpr dart::compiler::target::word String_hash_offset = 8; +static constexpr dart::compiler::target::word String_length_offset = 4; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 284; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 576; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 580; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_code_offset = 112; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_entry_point_offset = 196; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 84; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 244; -static constexpr dart::word Thread_bool_false_offset = 104; -static constexpr dart::word Thread_bool_true_offset = 100; -static constexpr dart::word Thread_call_to_runtime_entry_point_offset = 200; -static constexpr dart::word Thread_call_to_runtime_stub_offset = 132; -static constexpr dart::word Thread_dart_stream_offset = 608; -static constexpr dart::word Thread_deoptimize_entry_offset = 232; -static constexpr dart::word Thread_deoptimize_stub_offset = 164; -static constexpr dart::word Thread_double_abs_address_offset = 264; -static constexpr dart::word Thread_double_negate_address_offset = 260; -static constexpr dart::word Thread_end_offset = 60; -static constexpr dart::word Thread_enter_safepoint_stub_offset = 184; -static constexpr dart::word Thread_execution_state_offset = 592; -static constexpr dart::word Thread_exit_safepoint_stub_offset = 188; -static constexpr dart::word Thread_fix_allocation_stub_code_offset = 120; -static constexpr dart::word Thread_fix_callers_target_code_offset = 116; -static constexpr dart::word Thread_float_absolute_address_offset = 276; -static constexpr dart::word Thread_float_negate_address_offset = 272; -static constexpr dart::word Thread_float_not_address_offset = 268; -static constexpr dart::word Thread_float_zerow_address_offset = 280; -static constexpr dart::word Thread_global_object_pool_offset = 584; -static constexpr dart::word Thread_ic_lookup_through_code_stub_offset = 156; -static constexpr dart::word Thread_interpret_call_entry_point_offset = 248; -static constexpr dart::word Thread_invoke_dart_code_from_bytecode_stub_offset = - 128; -static constexpr dart::word Thread_invoke_dart_code_stub_offset = 124; -static constexpr dart::word Thread_isolate_offset = 48; -static constexpr dart::word Thread_lazy_deopt_from_return_stub_offset = 168; -static constexpr dart::word Thread_lazy_deopt_from_throw_stub_offset = 172; -static constexpr dart::word Thread_lazy_specialize_type_test_stub_offset = 180; -static constexpr dart::word Thread_marking_stack_block_offset = 72; -static constexpr dart::word Thread_megamorphic_call_checked_entry_offset = 220; -static constexpr dart::word Thread_monomorphic_miss_entry_offset = 224; -static constexpr dart::word Thread_monomorphic_miss_stub_offset = 152; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 240; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_bool_false_offset = 104; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 100; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_entry_point_offset = 200; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_stub_offset = 132; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 608; +static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = + 232; +static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = + 164; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 264; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 260; +static constexpr dart::compiler::target::word Thread_end_offset = 60; +static constexpr dart::compiler::target::word + Thread_enter_safepoint_stub_offset = 184; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 592; +static constexpr dart::compiler::target::word + Thread_exit_safepoint_stub_offset = 188; +static constexpr dart::compiler::target::word + Thread_fix_allocation_stub_code_offset = 120; +static constexpr dart::compiler::target::word + Thread_fix_callers_target_code_offset = 116; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 276; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 272; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 268; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 280; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 584; +static constexpr dart::compiler::target::word + Thread_ic_lookup_through_code_stub_offset = 156; +static constexpr dart::compiler::target::word + Thread_interpret_call_entry_point_offset = 248; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_from_bytecode_stub_offset = 128; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_stub_offset = 124; +static constexpr dart::compiler::target::word Thread_isolate_offset = 48; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_return_stub_offset = 168; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_throw_stub_offset = 172; +static constexpr dart::compiler::target::word + Thread_lazy_specialize_type_test_stub_offset = 180; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 72; +static constexpr dart::compiler::target::word + Thread_megamorphic_call_checked_entry_offset = 220; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_entry_offset = 224; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_stub_offset = 152; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 240; +static constexpr dart::compiler::target::word Thread_null_error_shared_with_fpu_regs_entry_point_offset = 208; -static constexpr dart::word Thread_null_error_shared_with_fpu_regs_stub_offset = - 140; -static constexpr dart::word +static constexpr dart::compiler::target::word + Thread_null_error_shared_with_fpu_regs_stub_offset = 140; +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_entry_point_offset = 204; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_stub_offset = 136; -static constexpr dart::word Thread_object_null_offset = 96; -static constexpr dart::word Thread_predefined_symbols_address_offset = 252; -static constexpr dart::word Thread_resume_pc_offset = 588; -static constexpr dart::word Thread_safepoint_state_offset = 596; -static constexpr dart::word Thread_slow_type_test_stub_offset = 176; -static constexpr dart::word Thread_stack_limit_offset = 36; -static constexpr dart::word Thread_stack_overflow_flags_offset = 40; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_object_null_offset = 96; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 252; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 588; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 596; +static constexpr dart::compiler::target::word + Thread_slow_type_test_stub_offset = 176; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 36; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 40; +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 216; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 148; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 212; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 144; -static constexpr dart::word Thread_store_buffer_block_offset = 68; -static constexpr dart::word Thread_top_exit_frame_info_offset = 64; -static constexpr dart::word Thread_top_offset = 56; -static constexpr dart::word Thread_top_resource_offset = 24; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 88; -static constexpr dart::word Thread_vm_tag_offset = 80; -static constexpr dart::word Thread_write_barrier_code_offset = 108; -static constexpr dart::word Thread_write_barrier_entry_point_offset = 192; -static constexpr dart::word Thread_write_barrier_mask_offset = 44; -static constexpr dart::word Thread_verify_callback_entry_offset = 236; -static constexpr dart::word Thread_callback_code_offset = 600; -static constexpr dart::word TimelineStream_enabled_offset = 8; -static constexpr dart::word TwoByteString_data_offset = 12; -static constexpr dart::word Type_arguments_offset = 16; -static constexpr dart::word Type_hash_offset = 20; -static constexpr dart::word Type_signature_offset = 24; -static constexpr dart::word Type_type_class_id_offset = 12; -static constexpr dart::word Type_type_state_offset = 32; -static constexpr dart::word TypeArguments_instantiations_offset = 4; -static constexpr dart::word TypeRef_type_offset = 12; -static constexpr dart::word TypedDataBase_data_field_offset = 4; -static constexpr dart::word TypedDataBase_length_offset = 8; -static constexpr dart::word TypedDataView_data_offset = 12; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 16; -static constexpr dart::word TypedData_data_offset = 12; -static constexpr dart::word UserTag_tag_offset = 8; -static constexpr dart::word Array_elements_start_offset = 12; -static constexpr dart::word Array_element_size = 4; -static constexpr dart::word TypeArguments_elements_start_offset = 16; -static constexpr dart::word TypeArguments_element_size = 4; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 168; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 16; -static dart::word Code_entry_point_offset[] = {4, 12, 8, 16}; -static dart::word Code_function_entry_point_offset[] = {4, 8}; -static constexpr dart::word Array_header_size = 12; -static constexpr dart::word Context_header_size = 12; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 16; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 16; -static constexpr dart::word String_InstanceSize = 12; -static constexpr dart::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 68; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 64; +static constexpr dart::compiler::target::word Thread_top_offset = 56; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 24; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 88; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 80; +static constexpr dart::compiler::target::word Thread_write_barrier_code_offset = + 108; +static constexpr dart::compiler::target::word + Thread_write_barrier_entry_point_offset = 192; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 44; +static constexpr dart::compiler::target::word + Thread_verify_callback_entry_offset = 236; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 600; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; +static constexpr dart::compiler::target::word Type_arguments_offset = 16; +static constexpr dart::compiler::target::word Type_hash_offset = 20; +static constexpr dart::compiler::target::word Type_signature_offset = 24; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 12; +static constexpr dart::compiler::target::word Type_type_state_offset = 32; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 4; +static constexpr dart::compiler::target::word TypeRef_type_offset = 12; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 4; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 12; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 16; +static constexpr dart::compiler::target::word TypedData_data_offset = 12; +static constexpr dart::compiler::target::word UserTag_tag_offset = 8; +static constexpr dart::compiler::target::word Array_elements_start_offset = 12; +static constexpr dart::compiler::target::word Array_element_size = 4; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 16; +static constexpr dart::compiler::target::word TypeArguments_element_size = 4; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 168; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 16; +static dart::compiler::target::word Code_entry_point_offset[] = {4, 12, 8, 16}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {4, 8}; +static constexpr dart::compiler::target::word Array_header_size = 12; +static constexpr dart::compiler::target::word Context_header_size = 12; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 16; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 16; +static constexpr dart::compiler::target::word String_InstanceSize = 12; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Object_InstanceSize = 4; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12; +static constexpr dart::compiler::target::word Closure_InstanceSize = 28; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 16; +static constexpr dart::compiler::target::word Instance_InstanceSize = 4; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; #endif // defined(TARGET_ARCH_IA32) #if defined(TARGET_ARCH_ARM64) -static constexpr dart::word ObjectPool_elements_start_offset = 16; -static constexpr dart::word ObjectPool_element_size = 8; -static constexpr dart::word Array_kMaxElements = 576460752303423487; -static constexpr dart::word Array_kMaxNewSpaceElements = 32765; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 4; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 28; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 8; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 10; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 2305843009213693951; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 16; +static constexpr dart::compiler::target::word ObjectPool_element_size = 8; +static constexpr dart::compiler::target::word Array_kMaxElements = + 576460752303423487; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 32765; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 4; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 28; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 8; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = + 2305843009213693951; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 8; -static constexpr dart::word ArgumentsDescriptor_count_offset = 32; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 48; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 16; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 8; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 40; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 24; -static constexpr dart::word Array_data_offset = 24; -static constexpr dart::word Array_length_offset = 16; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 8; -static constexpr dart::word Class_declaration_type_offset = 112; -static constexpr dart::word Class_num_type_arguments_offset = 186; -static constexpr dart::word Class_super_type_offset = 88; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 176; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 96; -static constexpr dart::word +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 32; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 48; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 16; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 8; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 40; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 24; +static constexpr dart::compiler::target::word Array_data_offset = 24; +static constexpr dart::compiler::target::word Array_length_offset = 16; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Class_declaration_type_offset = + 112; +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 186; +static constexpr dart::compiler::target::word Class_super_type_offset = 88; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 176; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 96; +static constexpr dart::compiler::target::word ClassHeapStats_allocated_size_since_gc_new_space_offset = 104; -static constexpr dart::word ClassHeapStats_state_offset = 272; -static constexpr dart::word ClassTable_table_offset = 16; -static constexpr dart::word Closure_context_offset = 40; -static constexpr dart::word Closure_delayed_type_arguments_offset = 24; -static constexpr dart::word Closure_function_offset = 32; -static constexpr dart::word Closure_function_type_arguments_offset = 16; -static constexpr dart::word Closure_hash_offset = 48; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 8; -static constexpr dart::word Code_object_pool_offset = 40; -static constexpr dart::word Code_saved_instructions_offset = 48; -static constexpr dart::word Code_owner_offset = 56; -static constexpr dart::word Context_num_variables_offset = 8; -static constexpr dart::word Context_parent_offset = 16; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 16; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 16; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 88; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = - 96; -static constexpr dart::word Field_guarded_list_length_offset = 56; -static constexpr dart::word Field_is_nullable_offset = 90; -static constexpr dart::word Field_static_value_offset = 32; -static constexpr dart::word Field_kind_bits_offset = 98; -static constexpr dart::word Function_code_offset = 88; -static constexpr dart::word Function_entry_point_offset = 8; -static constexpr dart::word Function_unchecked_entry_point_offset = 16; -static constexpr dart::word Function_usage_counter_offset = 132; -static constexpr dart::word GrowableObjectArray_data_offset = 24; -static constexpr dart::word GrowableObjectArray_length_offset = 16; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 8; -static constexpr dart::word HeapPage_card_table_offset = 40; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 24; -static constexpr dart::word ICData_entries_offset = 8; -static constexpr dart::word ICData_owner_offset = 40; -static constexpr dart::word ICData_state_bits_offset = 52; -static constexpr dart::word ICData_receivers_static_type_offset = 32; -static constexpr dart::word Isolate_class_table_offset = 48; -static constexpr dart::word Isolate_current_tag_offset = 16; -static constexpr dart::word Isolate_default_tag_offset = 24; -static constexpr dart::word Isolate_ic_miss_code_offset = 32; -static constexpr dart::word Isolate_object_store_offset = 40; -static constexpr dart::word Isolate_single_step_offset = 88; -static constexpr dart::word Isolate_user_tag_offset = 8; -static constexpr dart::word LinkedHashMap_data_offset = 32; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::word LinkedHashMap_index_offset = 16; -static constexpr dart::word LinkedHashMap_used_data_offset = 40; -static constexpr dart::word MarkingStackBlock_pointers_offset = 16; -static constexpr dart::word MarkingStackBlock_top_offset = 8; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 32; -static constexpr dart::word MegamorphicCache_buckets_offset = 8; -static constexpr dart::word MegamorphicCache_mask_offset = 16; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 8; -static constexpr dart::word NativeArguments_argv_offset = 16; -static constexpr dart::word NativeArguments_retval_offset = 24; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 128; -static constexpr dart::word ObjectStore_int_type_offset = 64; -static constexpr dart::word ObjectStore_string_type_offset = 160; -static constexpr dart::word OneByteString_data_offset = 16; -static constexpr dart::word Pointer_c_memory_address_offset = 16; -static constexpr dart::word SingleTargetCache_entry_point_offset = 16; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 24; -static constexpr dart::word SingleTargetCache_target_offset = 8; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 26; -static constexpr dart::word StoreBufferBlock_pointers_offset = 16; -static constexpr dart::word StoreBufferBlock_top_offset = 8; -static constexpr dart::word String_hash_offset = 4; -static constexpr dart::word String_length_offset = 8; -static constexpr dart::word SubtypeTestCache_cache_offset = 8; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 560; -static constexpr dart::word Thread_active_exception_offset = 1320; -static constexpr dart::word Thread_active_stacktrace_offset = 1328; -static constexpr dart::word Thread_array_write_barrier_code_offset = 216; -static constexpr dart::word Thread_array_write_barrier_entry_point_offset = 384; -static constexpr dart::word Thread_async_stack_trace_offset = 168; -static constexpr dart::word +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 272; +static constexpr dart::compiler::target::word ClassTable_table_offset = 16; +static constexpr dart::compiler::target::word Closure_context_offset = 40; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 24; +static constexpr dart::compiler::target::word Closure_function_offset = 32; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 16; +static constexpr dart::compiler::target::word Closure_hash_offset = 48; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Code_object_pool_offset = 40; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 48; +static constexpr dart::compiler::target::word Code_owner_offset = 56; +static constexpr dart::compiler::target::word Context_num_variables_offset = 8; +static constexpr dart::compiler::target::word Context_parent_offset = 16; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 88; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 96; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 56; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 90; +static constexpr dart::compiler::target::word Field_static_value_offset = 32; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 98; +static constexpr dart::compiler::target::word Function_code_offset = 88; +static constexpr dart::compiler::target::word Function_entry_point_offset = 8; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 16; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 132; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 24; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 16; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 8; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 24; +static constexpr dart::compiler::target::word ICData_entries_offset = 8; +static constexpr dart::compiler::target::word ICData_owner_offset = 40; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 52; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 32; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 48; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 16; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 24; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 40; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 88; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 24; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 40; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 16; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 8; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 32; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 8; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 16; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 8; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 16; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 24; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 128; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 64; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 160; +static constexpr dart::compiler::target::word OneByteString_data_offset = 16; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 16; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 16; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 24; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 26; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 16; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 8; +static constexpr dart::compiler::target::word String_hash_offset = 4; +static constexpr dart::compiler::target::word String_length_offset = 8; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 560; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 1320; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1328; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_code_offset = 216; +static constexpr dart::compiler::target::word + Thread_array_write_barrier_entry_point_offset = 384; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 168; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 480; -static constexpr dart::word Thread_bool_false_offset = 200; -static constexpr dart::word Thread_bool_true_offset = 192; -static constexpr dart::word Thread_call_to_runtime_entry_point_offset = 392; -static constexpr dart::word Thread_call_to_runtime_stub_offset = 256; -static constexpr dart::word Thread_dart_stream_offset = 1384; -static constexpr dart::word Thread_deoptimize_entry_offset = 456; -static constexpr dart::word Thread_deoptimize_stub_offset = 320; -static constexpr dart::word Thread_double_abs_address_offset = 520; -static constexpr dart::word Thread_double_negate_address_offset = 512; -static constexpr dart::word Thread_end_offset = 120; -static constexpr dart::word Thread_enter_safepoint_stub_offset = 360; -static constexpr dart::word Thread_execution_state_offset = 1352; -static constexpr dart::word Thread_exit_safepoint_stub_offset = 368; -static constexpr dart::word Thread_fix_allocation_stub_code_offset = 232; -static constexpr dart::word Thread_fix_callers_target_code_offset = 224; -static constexpr dart::word Thread_float_absolute_address_offset = 544; -static constexpr dart::word Thread_float_negate_address_offset = 536; -static constexpr dart::word Thread_float_not_address_offset = 528; -static constexpr dart::word Thread_float_zerow_address_offset = 552; -static constexpr dart::word Thread_global_object_pool_offset = 1336; -static constexpr dart::word Thread_ic_lookup_through_code_stub_offset = 304; -static constexpr dart::word Thread_interpret_call_entry_point_offset = 488; -static constexpr dart::word Thread_invoke_dart_code_from_bytecode_stub_offset = - 248; -static constexpr dart::word Thread_invoke_dart_code_stub_offset = 240; -static constexpr dart::word Thread_isolate_offset = 96; -static constexpr dart::word Thread_lazy_deopt_from_return_stub_offset = 328; -static constexpr dart::word Thread_lazy_deopt_from_throw_stub_offset = 336; -static constexpr dart::word Thread_lazy_specialize_type_test_stub_offset = 352; -static constexpr dart::word Thread_marking_stack_block_offset = 144; -static constexpr dart::word Thread_megamorphic_call_checked_entry_offset = 432; -static constexpr dart::word Thread_monomorphic_miss_entry_offset = 440; -static constexpr dart::word Thread_monomorphic_miss_stub_offset = 296; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 472; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_bool_false_offset = 200; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 192; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_entry_point_offset = 392; +static constexpr dart::compiler::target::word + Thread_call_to_runtime_stub_offset = 256; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1384; +static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = + 456; +static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = + 320; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 520; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 512; +static constexpr dart::compiler::target::word Thread_end_offset = 120; +static constexpr dart::compiler::target::word + Thread_enter_safepoint_stub_offset = 360; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 1352; +static constexpr dart::compiler::target::word + Thread_exit_safepoint_stub_offset = 368; +static constexpr dart::compiler::target::word + Thread_fix_allocation_stub_code_offset = 232; +static constexpr dart::compiler::target::word + Thread_fix_callers_target_code_offset = 224; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 544; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 536; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 528; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 552; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 1336; +static constexpr dart::compiler::target::word + Thread_ic_lookup_through_code_stub_offset = 304; +static constexpr dart::compiler::target::word + Thread_interpret_call_entry_point_offset = 488; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_from_bytecode_stub_offset = 248; +static constexpr dart::compiler::target::word + Thread_invoke_dart_code_stub_offset = 240; +static constexpr dart::compiler::target::word Thread_isolate_offset = 96; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_return_stub_offset = 328; +static constexpr dart::compiler::target::word + Thread_lazy_deopt_from_throw_stub_offset = 336; +static constexpr dart::compiler::target::word + Thread_lazy_specialize_type_test_stub_offset = 352; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 144; +static constexpr dart::compiler::target::word + Thread_megamorphic_call_checked_entry_offset = 432; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_entry_offset = 440; +static constexpr dart::compiler::target::word + Thread_monomorphic_miss_stub_offset = 296; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 472; +static constexpr dart::compiler::target::word Thread_null_error_shared_with_fpu_regs_entry_point_offset = 408; -static constexpr dart::word Thread_null_error_shared_with_fpu_regs_stub_offset = - 272; -static constexpr dart::word +static constexpr dart::compiler::target::word + Thread_null_error_shared_with_fpu_regs_stub_offset = 272; +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_entry_point_offset = 400; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_null_error_shared_without_fpu_regs_stub_offset = 264; -static constexpr dart::word Thread_object_null_offset = 184; -static constexpr dart::word Thread_predefined_symbols_address_offset = 496; -static constexpr dart::word Thread_resume_pc_offset = 1344; -static constexpr dart::word Thread_safepoint_state_offset = 1360; -static constexpr dart::word Thread_slow_type_test_stub_offset = 344; -static constexpr dart::word Thread_stack_limit_offset = 72; -static constexpr dart::word Thread_stack_overflow_flags_offset = 80; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_object_null_offset = 184; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 496; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1344; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 1360; +static constexpr dart::compiler::target::word + Thread_slow_type_test_stub_offset = 344; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 72; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 80; +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 424; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 288; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 416; -static constexpr dart::word +static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 280; -static constexpr dart::word Thread_store_buffer_block_offset = 136; -static constexpr dart::word Thread_top_exit_frame_info_offset = 128; -static constexpr dart::word Thread_top_offset = 112; -static constexpr dart::word Thread_top_resource_offset = 48; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 176; -static constexpr dart::word Thread_vm_tag_offset = 160; -static constexpr dart::word Thread_write_barrier_code_offset = 208; -static constexpr dart::word Thread_write_barrier_entry_point_offset = 376; -static constexpr dart::word Thread_write_barrier_mask_offset = 88; -static constexpr dart::word Thread_verify_callback_entry_offset = 464; -static constexpr dart::word Thread_callback_code_offset = 1368; -static constexpr dart::word TimelineStream_enabled_offset = 16; -static constexpr dart::word TwoByteString_data_offset = 16; -static constexpr dart::word Type_arguments_offset = 32; -static constexpr dart::word Type_hash_offset = 40; -static constexpr dart::word Type_signature_offset = 48; -static constexpr dart::word Type_type_class_id_offset = 24; -static constexpr dart::word Type_type_state_offset = 60; -static constexpr dart::word TypeArguments_instantiations_offset = 8; -static constexpr dart::word TypeRef_type_offset = 24; -static constexpr dart::word TypedDataBase_data_field_offset = 8; -static constexpr dart::word TypedDataBase_length_offset = 16; -static constexpr dart::word TypedDataView_data_offset = 24; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 32; -static constexpr dart::word TypedData_data_offset = 24; -static constexpr dart::word UserTag_tag_offset = 16; -static constexpr dart::word Array_elements_start_offset = 24; -static constexpr dart::word Array_element_size = 8; -static constexpr dart::word TypeArguments_elements_start_offset = 32; -static constexpr dart::word TypeArguments_element_size = 8; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 288; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 32; -static dart::word Code_entry_point_offset[] = {8, 24, 16, 32}; -static dart::word Code_function_entry_point_offset[] = {8, 16}; -static dart::word Thread_write_barrier_wrappers_thread_offset[] = { - 1144, 1152, 1160, 1168, 1176, 1184, 1192, 1200, 1208, 1216, 1224, - 1232, 1240, 1248, 1256, -1, -1, -1, -1, 1264, 1272, 1280, - 1288, 1296, 1304, 1312, -1, -1, -1, -1, -1, -1}; -static constexpr dart::word Array_header_size = 24; -static constexpr dart::word Context_header_size = 24; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 24; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 32; -static constexpr dart::word String_InstanceSize = 16; -static constexpr dart::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 136; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 128; +static constexpr dart::compiler::target::word Thread_top_offset = 112; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 48; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 176; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 160; +static constexpr dart::compiler::target::word Thread_write_barrier_code_offset = + 208; +static constexpr dart::compiler::target::word + Thread_write_barrier_entry_point_offset = 376; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 88; +static constexpr dart::compiler::target::word + Thread_verify_callback_entry_offset = 464; +static constexpr dart::compiler::target::word Thread_callback_code_offset = + 1368; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = + 16; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; +static constexpr dart::compiler::target::word Type_arguments_offset = 32; +static constexpr dart::compiler::target::word Type_hash_offset = 40; +static constexpr dart::compiler::target::word Type_signature_offset = 48; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 24; +static constexpr dart::compiler::target::word Type_type_state_offset = 60; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 8; +static constexpr dart::compiler::target::word TypeRef_type_offset = 24; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 8; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 24; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 32; +static constexpr dart::compiler::target::word TypedData_data_offset = 24; +static constexpr dart::compiler::target::word UserTag_tag_offset = 16; +static constexpr dart::compiler::target::word Array_elements_start_offset = 24; +static constexpr dart::compiler::target::word Array_element_size = 8; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 32; +static constexpr dart::compiler::target::word TypeArguments_element_size = 8; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 288; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 32; +static dart::compiler::target::word Code_entry_point_offset[] = {8, 24, 16, 32}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {8, + 16}; +static dart::compiler::target::word + Thread_write_barrier_wrappers_thread_offset[] = { + 1144, 1152, 1160, 1168, 1176, 1184, 1192, 1200, 1208, 1216, 1224, + 1232, 1240, 1248, 1256, -1, -1, -1, -1, 1264, 1272, 1280, + 1288, 1296, 1304, 1312, -1, -1, -1, -1, -1, -1}; +static constexpr dart::compiler::target::word Array_header_size = 24; +static constexpr dart::compiler::target::word Context_header_size = 24; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 24; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 32; +static constexpr dart::compiler::target::word String_InstanceSize = 16; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Object_InstanceSize = 8; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24; +static constexpr dart::compiler::target::word Closure_InstanceSize = 56; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 32; +static constexpr dart::compiler::target::word Instance_InstanceSize = 8; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; #endif // defined(TARGET_ARCH_ARM64) #if defined(TARGET_ARCH_DBC) && defined(TARGET_ARCH_IS_64_BIT) -static constexpr dart::word ObjectPool_elements_start_offset = 16; -static constexpr dart::word ObjectPool_element_size = 8; -static constexpr dart::word Array_kMaxElements = 576460752303423487; -static constexpr dart::word Array_kMaxNewSpaceElements = 32765; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 4; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 0; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 0; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 10; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 2305843009213693951; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 16; +static constexpr dart::compiler::target::word ObjectPool_element_size = 8; +static constexpr dart::compiler::target::word Array_kMaxElements = + 576460752303423487; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 32765; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 4; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 0; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 0; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = + 2305843009213693951; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 8; -static constexpr dart::word ArgumentsDescriptor_count_offset = 32; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 48; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 16; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 8; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 40; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 24; -static constexpr dart::word Array_data_offset = 24; -static constexpr dart::word Array_length_offset = 16; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 8; -static constexpr dart::word Class_declaration_type_offset = 112; -static constexpr dart::word Class_num_type_arguments_offset = 186; -static constexpr dart::word Class_super_type_offset = 88; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 176; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 96; -static constexpr dart::word +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 32; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 48; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 16; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 8; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 40; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 24; +static constexpr dart::compiler::target::word Array_data_offset = 24; +static constexpr dart::compiler::target::word Array_length_offset = 16; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Class_declaration_type_offset = + 112; +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 186; +static constexpr dart::compiler::target::word Class_super_type_offset = 88; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 176; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 96; +static constexpr dart::compiler::target::word ClassHeapStats_allocated_size_since_gc_new_space_offset = 104; -static constexpr dart::word ClassHeapStats_state_offset = 272; -static constexpr dart::word ClassTable_table_offset = 16; -static constexpr dart::word Closure_context_offset = 40; -static constexpr dart::word Closure_delayed_type_arguments_offset = 24; -static constexpr dart::word Closure_function_offset = 32; -static constexpr dart::word Closure_function_type_arguments_offset = 16; -static constexpr dart::word Closure_hash_offset = 48; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 8; -static constexpr dart::word Code_object_pool_offset = 40; -static constexpr dart::word Code_saved_instructions_offset = 48; -static constexpr dart::word Code_owner_offset = 56; -static constexpr dart::word Context_num_variables_offset = 8; -static constexpr dart::word Context_parent_offset = 16; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 16; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 16; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 88; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = - 96; -static constexpr dart::word Field_guarded_list_length_offset = 56; -static constexpr dart::word Field_is_nullable_offset = 90; -static constexpr dart::word Field_static_value_offset = 32; -static constexpr dart::word Field_kind_bits_offset = 98; -static constexpr dart::word Function_code_offset = 88; -static constexpr dart::word Function_entry_point_offset = 8; -static constexpr dart::word Function_unchecked_entry_point_offset = 16; -static constexpr dart::word Function_usage_counter_offset = 132; -static constexpr dart::word GrowableObjectArray_data_offset = 24; -static constexpr dart::word GrowableObjectArray_length_offset = 16; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 8; -static constexpr dart::word HeapPage_card_table_offset = 40; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 24; -static constexpr dart::word ICData_entries_offset = 8; -static constexpr dart::word ICData_owner_offset = 40; -static constexpr dart::word ICData_state_bits_offset = 52; -static constexpr dart::word ICData_receivers_static_type_offset = 32; -static constexpr dart::word Isolate_class_table_offset = 48; -static constexpr dart::word Isolate_current_tag_offset = 16; -static constexpr dart::word Isolate_default_tag_offset = 24; -static constexpr dart::word Isolate_ic_miss_code_offset = 32; -static constexpr dart::word Isolate_object_store_offset = 40; -static constexpr dart::word Isolate_single_step_offset = 88; -static constexpr dart::word Isolate_user_tag_offset = 8; -static constexpr dart::word LinkedHashMap_data_offset = 32; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::word LinkedHashMap_index_offset = 16; -static constexpr dart::word LinkedHashMap_used_data_offset = 40; -static constexpr dart::word MarkingStackBlock_pointers_offset = 16; -static constexpr dart::word MarkingStackBlock_top_offset = 8; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 32; -static constexpr dart::word MegamorphicCache_buckets_offset = 8; -static constexpr dart::word MegamorphicCache_mask_offset = 16; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 8; -static constexpr dart::word NativeArguments_argv_offset = 16; -static constexpr dart::word NativeArguments_retval_offset = 24; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 128; -static constexpr dart::word ObjectStore_int_type_offset = 64; -static constexpr dart::word ObjectStore_string_type_offset = 160; -static constexpr dart::word OneByteString_data_offset = 16; -static constexpr dart::word Pointer_c_memory_address_offset = 16; -static constexpr dart::word SingleTargetCache_entry_point_offset = 16; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 24; -static constexpr dart::word SingleTargetCache_target_offset = 8; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 26; -static constexpr dart::word StoreBufferBlock_pointers_offset = 16; -static constexpr dart::word StoreBufferBlock_top_offset = 8; -static constexpr dart::word String_hash_offset = 4; -static constexpr dart::word String_length_offset = 8; -static constexpr dart::word SubtypeTestCache_cache_offset = 8; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 296; -static constexpr dart::word Thread_active_exception_offset = 880; -static constexpr dart::word Thread_active_stacktrace_offset = 888; -static constexpr dart::word Thread_async_stack_trace_offset = 168; -static constexpr dart::word +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 272; +static constexpr dart::compiler::target::word ClassTable_table_offset = 16; +static constexpr dart::compiler::target::word Closure_context_offset = 40; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 24; +static constexpr dart::compiler::target::word Closure_function_offset = 32; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 16; +static constexpr dart::compiler::target::word Closure_hash_offset = 48; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Code_object_pool_offset = 40; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 48; +static constexpr dart::compiler::target::word Code_owner_offset = 56; +static constexpr dart::compiler::target::word Context_num_variables_offset = 8; +static constexpr dart::compiler::target::word Context_parent_offset = 16; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 16; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 88; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 96; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 56; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 90; +static constexpr dart::compiler::target::word Field_static_value_offset = 32; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 98; +static constexpr dart::compiler::target::word Function_code_offset = 88; +static constexpr dart::compiler::target::word Function_entry_point_offset = 8; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 16; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 132; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 24; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 16; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 8; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 24; +static constexpr dart::compiler::target::word ICData_entries_offset = 8; +static constexpr dart::compiler::target::word ICData_owner_offset = 40; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 52; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 32; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 48; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 16; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 24; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 40; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 88; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 24; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 40; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 16; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 8; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 32; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 8; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 16; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 8; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 16; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 24; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 128; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 64; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 160; +static constexpr dart::compiler::target::word OneByteString_data_offset = 16; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 16; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 16; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 24; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 26; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 16; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 8; +static constexpr dart::compiler::target::word String_hash_offset = 4; +static constexpr dart::compiler::target::word String_length_offset = 8; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 296; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 880; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 888; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 168; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 216; -static constexpr dart::word Thread_bool_false_offset = 200; -static constexpr dart::word Thread_bool_true_offset = 192; -static constexpr dart::word Thread_dart_stream_offset = 944; -static constexpr dart::word Thread_double_abs_address_offset = 256; -static constexpr dart::word Thread_double_negate_address_offset = 248; -static constexpr dart::word Thread_end_offset = 120; -static constexpr dart::word Thread_execution_state_offset = 912; -static constexpr dart::word Thread_float_absolute_address_offset = 280; -static constexpr dart::word Thread_float_negate_address_offset = 272; -static constexpr dart::word Thread_float_not_address_offset = 264; -static constexpr dart::word Thread_float_zerow_address_offset = 288; -static constexpr dart::word Thread_global_object_pool_offset = 896; -static constexpr dart::word Thread_isolate_offset = 96; -static constexpr dart::word Thread_marking_stack_block_offset = 144; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 208; -static constexpr dart::word Thread_object_null_offset = 184; -static constexpr dart::word Thread_predefined_symbols_address_offset = 232; -static constexpr dart::word Thread_resume_pc_offset = 904; -static constexpr dart::word Thread_safepoint_state_offset = 920; -static constexpr dart::word Thread_stack_limit_offset = 72; -static constexpr dart::word Thread_stack_overflow_flags_offset = 80; -static constexpr dart::word Thread_store_buffer_block_offset = 136; -static constexpr dart::word Thread_top_exit_frame_info_offset = 128; -static constexpr dart::word Thread_top_offset = 112; -static constexpr dart::word Thread_top_resource_offset = 48; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 176; -static constexpr dart::word Thread_vm_tag_offset = 160; -static constexpr dart::word Thread_write_barrier_mask_offset = 88; -static constexpr dart::word Thread_callback_code_offset = 928; -static constexpr dart::word TimelineStream_enabled_offset = 16; -static constexpr dart::word TwoByteString_data_offset = 16; -static constexpr dart::word Type_arguments_offset = 32; -static constexpr dart::word Type_hash_offset = 40; -static constexpr dart::word Type_signature_offset = 48; -static constexpr dart::word Type_type_class_id_offset = 24; -static constexpr dart::word Type_type_state_offset = 60; -static constexpr dart::word TypeArguments_instantiations_offset = 8; -static constexpr dart::word TypeRef_type_offset = 24; -static constexpr dart::word TypedDataBase_data_field_offset = 8; -static constexpr dart::word TypedDataBase_length_offset = 16; -static constexpr dart::word TypedDataView_data_offset = 24; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 32; -static constexpr dart::word TypedData_data_offset = 24; -static constexpr dart::word UserTag_tag_offset = 16; -static constexpr dart::word Array_elements_start_offset = 24; -static constexpr dart::word Array_element_size = 8; -static constexpr dart::word TypeArguments_elements_start_offset = 32; -static constexpr dart::word TypeArguments_element_size = 8; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 288; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 32; -static dart::word Code_entry_point_offset[] = {8, 24, 16, 32}; -static dart::word Code_function_entry_point_offset[] = {8, 16}; -static constexpr dart::word Array_header_size = 24; -static constexpr dart::word Context_header_size = 24; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 24; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 32; -static constexpr dart::word String_InstanceSize = 16; -static constexpr dart::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Thread_bool_false_offset = 200; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 192; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 944; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 256; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 248; +static constexpr dart::compiler::target::word Thread_end_offset = 120; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 912; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 280; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 272; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 264; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 288; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 896; +static constexpr dart::compiler::target::word Thread_isolate_offset = 96; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 144; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 208; +static constexpr dart::compiler::target::word Thread_object_null_offset = 184; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 232; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 904; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 920; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 72; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 80; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 136; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 128; +static constexpr dart::compiler::target::word Thread_top_offset = 112; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 48; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 176; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 160; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 88; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 928; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = + 16; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; +static constexpr dart::compiler::target::word Type_arguments_offset = 32; +static constexpr dart::compiler::target::word Type_hash_offset = 40; +static constexpr dart::compiler::target::word Type_signature_offset = 48; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 24; +static constexpr dart::compiler::target::word Type_type_state_offset = 60; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 8; +static constexpr dart::compiler::target::word TypeRef_type_offset = 24; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 8; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 24; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 32; +static constexpr dart::compiler::target::word TypedData_data_offset = 24; +static constexpr dart::compiler::target::word UserTag_tag_offset = 16; +static constexpr dart::compiler::target::word Array_elements_start_offset = 24; +static constexpr dart::compiler::target::word Array_element_size = 8; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 32; +static constexpr dart::compiler::target::word TypeArguments_element_size = 8; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 288; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 32; +static dart::compiler::target::word Code_entry_point_offset[] = {8, 24, 16, 32}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {8, + 16}; +static constexpr dart::compiler::target::word Array_header_size = 24; +static constexpr dart::compiler::target::word Context_header_size = 24; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 24; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 32; +static constexpr dart::compiler::target::word String_InstanceSize = 16; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 24; +static constexpr dart::compiler::target::word Object_InstanceSize = 8; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24; +static constexpr dart::compiler::target::word Closure_InstanceSize = 56; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 32; +static constexpr dart::compiler::target::word Instance_InstanceSize = 8; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; #endif // defined(TARGET_ARCH_DBC) && defined(TARGET_ARCH_IS_64_BIT) #if defined(TARGET_ARCH_DBC) && defined(TARGET_ARCH_IS_32_BIT) -static constexpr dart::word ObjectPool_elements_start_offset = 8; -static constexpr dart::word ObjectPool_element_size = 4; -static constexpr dart::word Array_kMaxElements = 268435455; -static constexpr dart::word Array_kMaxNewSpaceElements = 65533; -static constexpr dart::word ClassTable_kSizeOfClassPairLog2 = 3; -static constexpr dart::word Instructions_kMonomorphicEntryOffset = 0; -static constexpr dart::word Instructions_kPolymorphicEntryOffset = 0; -static constexpr dart::word HeapPage_kBytesPerCardLog2 = 9; -static constexpr dart::word NativeEntry_kNumCallWrapperArguments = 2; -static constexpr dart::word String_kMaxElements = 536870911; -static constexpr dart::word SubtypeTestCache_kFunctionTypeArguments = 4; -static constexpr dart::word SubtypeTestCache_kInstanceClassIdOrFunction = 1; -static constexpr dart::word +static constexpr dart::compiler::target::word ObjectPool_elements_start_offset = + 8; +static constexpr dart::compiler::target::word ObjectPool_element_size = 4; +static constexpr dart::compiler::target::word Array_kMaxElements = 268435455; +static constexpr dart::compiler::target::word Array_kMaxNewSpaceElements = + 65533; +static constexpr dart::compiler::target::word ClassTable_kSizeOfClassPairLog2 = + 3; +static constexpr dart::compiler::target::word + Instructions_kMonomorphicEntryOffset = 0; +static constexpr dart::compiler::target::word + Instructions_kPolymorphicEntryOffset = 0; +static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9; +static constexpr dart::compiler::target::word + NativeEntry_kNumCallWrapperArguments = 2; +static constexpr dart::compiler::target::word String_kMaxElements = 536870911; +static constexpr dart::compiler::target::word + SubtypeTestCache_kFunctionTypeArguments = 4; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceClassIdOrFunction = 1; +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceDelayedFunctionTypeArguments = 6; -static constexpr dart::word +static constexpr dart::compiler::target::word SubtypeTestCache_kInstanceParentFunctionTypeArguments = 5; -static constexpr dart::word SubtypeTestCache_kInstanceTypeArguments = 2; -static constexpr dart::word SubtypeTestCache_kInstantiatorTypeArguments = 3; -static constexpr dart::word SubtypeTestCache_kTestEntryLength = 7; -static constexpr dart::word SubtypeTestCache_kTestResult = 0; -static constexpr dart::word AbstractType_type_test_stub_entry_point_offset = 4; -static constexpr dart::word ArgumentsDescriptor_count_offset = 16; -static constexpr dart::word ArgumentsDescriptor_first_named_entry_offset = 24; -static constexpr dart::word ArgumentsDescriptor_named_entry_size = 8; -static constexpr dart::word ArgumentsDescriptor_name_offset = 0; -static constexpr dart::word ArgumentsDescriptor_position_offset = 4; -static constexpr dart::word ArgumentsDescriptor_positional_count_offset = 20; -static constexpr dart::word ArgumentsDescriptor_type_args_len_offset = 12; -static constexpr dart::word Array_data_offset = 12; -static constexpr dart::word Array_length_offset = 8; -static constexpr dart::word Array_tags_offset = 0; -static constexpr dart::word Array_type_arguments_offset = 4; -static constexpr dart::word Class_declaration_type_offset = 56; -static constexpr dart::word Class_num_type_arguments_offset = 102; -static constexpr dart::word Class_super_type_offset = 44; -static constexpr dart::word Class_type_arguments_field_offset_in_words_offset = - 92; -static constexpr dart::word ClassHeapStats_TraceAllocationMask = 1; -static constexpr dart::word ClassHeapStats_allocated_since_gc_new_space_offset = - 48; -static constexpr dart::word - ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; -static constexpr dart::word ClassHeapStats_state_offset = 160; -static constexpr dart::word ClassTable_table_offset = 8; -static constexpr dart::word Closure_context_offset = 20; -static constexpr dart::word Closure_delayed_type_arguments_offset = 12; -static constexpr dart::word Closure_function_offset = 16; -static constexpr dart::word Closure_function_type_arguments_offset = 8; -static constexpr dart::word Closure_hash_offset = 24; -static constexpr dart::word Closure_instantiator_type_arguments_offset = 4; -static constexpr dart::word Code_object_pool_offset = 20; -static constexpr dart::word Code_saved_instructions_offset = 24; -static constexpr dart::word Code_owner_offset = 28; -static constexpr dart::word Context_num_variables_offset = 4; -static constexpr dart::word Context_parent_offset = 8; -static constexpr dart::word Double_value_offset = 8; -static constexpr dart::word ExternalOneByteString_external_data_offset = 12; -static constexpr dart::word ExternalTwoByteString_external_data_offset = 12; -static constexpr dart::word Float32x4_value_offset = 8; -static constexpr dart::word Float64x2_value_offset = 8; -static constexpr dart::word Field_guarded_cid_offset = 48; -static constexpr dart::word Field_guarded_list_length_in_object_offset_offset = +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstanceTypeArguments = 2; +static constexpr dart::compiler::target::word + SubtypeTestCache_kInstantiatorTypeArguments = 3; +static constexpr dart::compiler::target::word + SubtypeTestCache_kTestEntryLength = 7; +static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0; +static constexpr dart::compiler::target::word + AbstractType_type_test_stub_entry_point_offset = 4; +static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset = + 16; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_first_named_entry_offset = 24; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_named_entry_size = 8; +static constexpr dart::compiler::target::word ArgumentsDescriptor_name_offset = + 0; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_position_offset = 4; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_positional_count_offset = 20; +static constexpr dart::compiler::target::word + ArgumentsDescriptor_type_args_len_offset = 12; +static constexpr dart::compiler::target::word Array_data_offset = 12; +static constexpr dart::compiler::target::word Array_length_offset = 8; +static constexpr dart::compiler::target::word Array_tags_offset = 0; +static constexpr dart::compiler::target::word Array_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Class_declaration_type_offset = 56; -static constexpr dart::word Field_guarded_list_length_offset = 28; -static constexpr dart::word Field_is_nullable_offset = 50; -static constexpr dart::word Field_static_value_offset = 16; -static constexpr dart::word Field_kind_bits_offset = 58; -static constexpr dart::word Function_code_offset = 44; -static constexpr dart::word Function_entry_point_offset = 4; -static constexpr dart::word Function_unchecked_entry_point_offset = 8; -static constexpr dart::word Function_usage_counter_offset = 76; -static constexpr dart::word GrowableObjectArray_data_offset = 12; -static constexpr dart::word GrowableObjectArray_length_offset = 8; -static constexpr dart::word GrowableObjectArray_type_arguments_offset = 4; -static constexpr dart::word HeapPage_card_table_offset = 20; -static constexpr dart::word ICData_NumArgsTestedMask = 3; -static constexpr dart::word ICData_NumArgsTestedShift = 0; -static constexpr dart::word ICData_arguments_descriptor_offset = 12; -static constexpr dart::word ICData_entries_offset = 4; -static constexpr dart::word ICData_owner_offset = 20; -static constexpr dart::word ICData_state_bits_offset = 28; -static constexpr dart::word ICData_receivers_static_type_offset = 16; -static constexpr dart::word Isolate_class_table_offset = 24; -static constexpr dart::word Isolate_current_tag_offset = 8; -static constexpr dart::word Isolate_default_tag_offset = 12; -static constexpr dart::word Isolate_ic_miss_code_offset = 16; -static constexpr dart::word Isolate_object_store_offset = 20; -static constexpr dart::word Isolate_single_step_offset = 44; -static constexpr dart::word Isolate_user_tag_offset = 4; -static constexpr dart::word LinkedHashMap_data_offset = 16; -static constexpr dart::word LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::word LinkedHashMap_hash_mask_offset = 12; -static constexpr dart::word LinkedHashMap_index_offset = 8; -static constexpr dart::word LinkedHashMap_used_data_offset = 20; -static constexpr dart::word MarkingStackBlock_pointers_offset = 8; -static constexpr dart::word MarkingStackBlock_top_offset = 4; -static constexpr dart::word MegamorphicCache_arguments_descriptor_offset = 16; -static constexpr dart::word MegamorphicCache_buckets_offset = 4; -static constexpr dart::word MegamorphicCache_mask_offset = 8; -static constexpr dart::word Mint_value_offset = 8; -static constexpr dart::word NativeArguments_argc_tag_offset = 4; -static constexpr dart::word NativeArguments_argv_offset = 8; -static constexpr dart::word NativeArguments_retval_offset = 12; -static constexpr dart::word NativeArguments_thread_offset = 0; -static constexpr dart::word ObjectStore_double_type_offset = 64; -static constexpr dart::word ObjectStore_int_type_offset = 32; -static constexpr dart::word ObjectStore_string_type_offset = 80; -static constexpr dart::word OneByteString_data_offset = 12; -static constexpr dart::word Pointer_c_memory_address_offset = 8; -static constexpr dart::word SingleTargetCache_entry_point_offset = 8; -static constexpr dart::word SingleTargetCache_lower_limit_offset = 12; -static constexpr dart::word SingleTargetCache_target_offset = 4; -static constexpr dart::word SingleTargetCache_upper_limit_offset = 14; -static constexpr dart::word StoreBufferBlock_pointers_offset = 8; -static constexpr dart::word StoreBufferBlock_top_offset = 4; -static constexpr dart::word String_hash_offset = 8; -static constexpr dart::word String_length_offset = 4; -static constexpr dart::word SubtypeTestCache_cache_offset = 4; -static constexpr dart::word Thread_AllocateArray_entry_point_offset = 152; -static constexpr dart::word Thread_active_exception_offset = 444; -static constexpr dart::word Thread_active_stacktrace_offset = 448; -static constexpr dart::word Thread_async_stack_trace_offset = 84; -static constexpr dart::word +static constexpr dart::compiler::target::word Class_num_type_arguments_offset = + 102; +static constexpr dart::compiler::target::word Class_super_type_offset = 44; +static constexpr dart::compiler::target::word + Class_type_arguments_field_offset_in_words_offset = 92; +static constexpr dart::compiler::target::word + ClassHeapStats_TraceAllocationMask = 1; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_since_gc_new_space_offset = 48; +static constexpr dart::compiler::target::word + ClassHeapStats_allocated_size_since_gc_new_space_offset = 52; +static constexpr dart::compiler::target::word ClassHeapStats_state_offset = 160; +static constexpr dart::compiler::target::word ClassTable_table_offset = 8; +static constexpr dart::compiler::target::word Closure_context_offset = 20; +static constexpr dart::compiler::target::word + Closure_delayed_type_arguments_offset = 12; +static constexpr dart::compiler::target::word Closure_function_offset = 16; +static constexpr dart::compiler::target::word + Closure_function_type_arguments_offset = 8; +static constexpr dart::compiler::target::word Closure_hash_offset = 24; +static constexpr dart::compiler::target::word + Closure_instantiator_type_arguments_offset = 4; +static constexpr dart::compiler::target::word Code_object_pool_offset = 20; +static constexpr dart::compiler::target::word Code_saved_instructions_offset = + 24; +static constexpr dart::compiler::target::word Code_owner_offset = 28; +static constexpr dart::compiler::target::word Context_num_variables_offset = 4; +static constexpr dart::compiler::target::word Context_parent_offset = 8; +static constexpr dart::compiler::target::word Double_value_offset = 8; +static constexpr dart::compiler::target::word + ExternalOneByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word + ExternalTwoByteString_external_data_offset = 12; +static constexpr dart::compiler::target::word Float32x4_value_offset = 8; +static constexpr dart::compiler::target::word Float64x2_value_offset = 8; +static constexpr dart::compiler::target::word Field_guarded_cid_offset = 48; +static constexpr dart::compiler::target::word + Field_guarded_list_length_in_object_offset_offset = 56; +static constexpr dart::compiler::target::word Field_guarded_list_length_offset = + 28; +static constexpr dart::compiler::target::word Field_is_nullable_offset = 50; +static constexpr dart::compiler::target::word Field_static_value_offset = 16; +static constexpr dart::compiler::target::word Field_kind_bits_offset = 58; +static constexpr dart::compiler::target::word Function_code_offset = 44; +static constexpr dart::compiler::target::word Function_entry_point_offset = 4; +static constexpr dart::compiler::target::word + Function_unchecked_entry_point_offset = 8; +static constexpr dart::compiler::target::word Function_usage_counter_offset = + 76; +static constexpr dart::compiler::target::word GrowableObjectArray_data_offset = + 12; +static constexpr dart::compiler::target::word + GrowableObjectArray_length_offset = 8; +static constexpr dart::compiler::target::word + GrowableObjectArray_type_arguments_offset = 4; +static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20; +static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3; +static constexpr dart::compiler::target::word ICData_NumArgsTestedShift = 0; +static constexpr dart::compiler::target::word + ICData_arguments_descriptor_offset = 12; +static constexpr dart::compiler::target::word ICData_entries_offset = 4; +static constexpr dart::compiler::target::word ICData_owner_offset = 20; +static constexpr dart::compiler::target::word ICData_state_bits_offset = 28; +static constexpr dart::compiler::target::word + ICData_receivers_static_type_offset = 16; +static constexpr dart::compiler::target::word Isolate_class_table_offset = 24; +static constexpr dart::compiler::target::word Isolate_current_tag_offset = 8; +static constexpr dart::compiler::target::word Isolate_default_tag_offset = 12; +static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 16; +static constexpr dart::compiler::target::word Isolate_object_store_offset = 20; +static constexpr dart::compiler::target::word Isolate_single_step_offset = 44; +static constexpr dart::compiler::target::word Isolate_user_tag_offset = 4; +static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word + LinkedHashMap_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + 12; +static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + 20; +static constexpr dart::compiler::target::word + MarkingStackBlock_pointers_offset = 8; +static constexpr dart::compiler::target::word MarkingStackBlock_top_offset = 4; +static constexpr dart::compiler::target::word + MegamorphicCache_arguments_descriptor_offset = 16; +static constexpr dart::compiler::target::word MegamorphicCache_buckets_offset = + 4; +static constexpr dart::compiler::target::word MegamorphicCache_mask_offset = 8; +static constexpr dart::compiler::target::word Mint_value_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_argc_tag_offset = + 4; +static constexpr dart::compiler::target::word NativeArguments_argv_offset = 8; +static constexpr dart::compiler::target::word NativeArguments_retval_offset = + 12; +static constexpr dart::compiler::target::word NativeArguments_thread_offset = 0; +static constexpr dart::compiler::target::word ObjectStore_double_type_offset = + 64; +static constexpr dart::compiler::target::word ObjectStore_int_type_offset = 32; +static constexpr dart::compiler::target::word ObjectStore_string_type_offset = + 80; +static constexpr dart::compiler::target::word OneByteString_data_offset = 12; +static constexpr dart::compiler::target::word Pointer_c_memory_address_offset = + 8; +static constexpr dart::compiler::target::word + SingleTargetCache_entry_point_offset = 8; +static constexpr dart::compiler::target::word + SingleTargetCache_lower_limit_offset = 12; +static constexpr dart::compiler::target::word SingleTargetCache_target_offset = + 4; +static constexpr dart::compiler::target::word + SingleTargetCache_upper_limit_offset = 14; +static constexpr dart::compiler::target::word StoreBufferBlock_pointers_offset = + 8; +static constexpr dart::compiler::target::word StoreBufferBlock_top_offset = 4; +static constexpr dart::compiler::target::word String_hash_offset = 8; +static constexpr dart::compiler::target::word String_length_offset = 4; +static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; +static constexpr dart::compiler::target::word + Thread_AllocateArray_entry_point_offset = 152; +static constexpr dart::compiler::target::word Thread_active_exception_offset = + 444; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 448; +static constexpr dart::compiler::target::word Thread_async_stack_trace_offset = + 84; +static constexpr dart::compiler::target::word Thread_auto_scope_native_wrapper_entry_point_offset = 112; -static constexpr dart::word Thread_bool_false_offset = 104; -static constexpr dart::word Thread_bool_true_offset = 100; -static constexpr dart::word Thread_dart_stream_offset = 476; -static constexpr dart::word Thread_double_abs_address_offset = 132; -static constexpr dart::word Thread_double_negate_address_offset = 128; -static constexpr dart::word Thread_end_offset = 60; -static constexpr dart::word Thread_execution_state_offset = 460; -static constexpr dart::word Thread_float_absolute_address_offset = 144; -static constexpr dart::word Thread_float_negate_address_offset = 140; -static constexpr dart::word Thread_float_not_address_offset = 136; -static constexpr dart::word Thread_float_zerow_address_offset = 148; -static constexpr dart::word Thread_global_object_pool_offset = 452; -static constexpr dart::word Thread_isolate_offset = 48; -static constexpr dart::word Thread_marking_stack_block_offset = 72; -static constexpr dart::word Thread_no_scope_native_wrapper_entry_point_offset = - 108; -static constexpr dart::word Thread_object_null_offset = 96; -static constexpr dart::word Thread_predefined_symbols_address_offset = 120; -static constexpr dart::word Thread_resume_pc_offset = 456; -static constexpr dart::word Thread_safepoint_state_offset = 464; -static constexpr dart::word Thread_stack_limit_offset = 36; -static constexpr dart::word Thread_stack_overflow_flags_offset = 40; -static constexpr dart::word Thread_store_buffer_block_offset = 68; -static constexpr dart::word Thread_top_exit_frame_info_offset = 64; -static constexpr dart::word Thread_top_offset = 56; -static constexpr dart::word Thread_top_resource_offset = 24; -static constexpr dart::word Thread_unboxed_int64_runtime_arg_offset = 88; -static constexpr dart::word Thread_vm_tag_offset = 80; -static constexpr dart::word Thread_write_barrier_mask_offset = 44; -static constexpr dart::word Thread_callback_code_offset = 468; -static constexpr dart::word TimelineStream_enabled_offset = 8; -static constexpr dart::word TwoByteString_data_offset = 12; -static constexpr dart::word Type_arguments_offset = 16; -static constexpr dart::word Type_hash_offset = 20; -static constexpr dart::word Type_signature_offset = 24; -static constexpr dart::word Type_type_class_id_offset = 12; -static constexpr dart::word Type_type_state_offset = 32; -static constexpr dart::word TypeArguments_instantiations_offset = 4; -static constexpr dart::word TypeRef_type_offset = 12; -static constexpr dart::word TypedDataBase_data_field_offset = 4; -static constexpr dart::word TypedDataBase_length_offset = 8; -static constexpr dart::word TypedDataView_data_offset = 12; -static constexpr dart::word TypedDataView_offset_in_bytes_offset = 16; -static constexpr dart::word TypedData_data_offset = 12; -static constexpr dart::word UserTag_tag_offset = 8; -static constexpr dart::word Array_elements_start_offset = 12; -static constexpr dart::word Array_element_size = 4; -static constexpr dart::word TypeArguments_elements_start_offset = 16; -static constexpr dart::word TypeArguments_element_size = 4; -static constexpr dart::word ClassTable_elements_start_offset = 0; -static constexpr dart::word ClassTable_element_size = 168; -static constexpr dart::word ClassTable_class_heap_stats_table_offset = 16; -static dart::word Code_entry_point_offset[] = {4, 12, 8, 16}; -static dart::word Code_function_entry_point_offset[] = {4, 8}; -static constexpr dart::word Array_header_size = 12; -static constexpr dart::word Context_header_size = 12; -static constexpr dart::word Double_InstanceSize = 16; -static constexpr dart::word Float32x4_InstanceSize = 24; -static constexpr dart::word Float64x2_InstanceSize = 24; -static constexpr dart::word Instructions_UnalignedHeaderSize = 16; -static constexpr dart::word Int32x4_InstanceSize = 24; -static constexpr dart::word Mint_InstanceSize = 16; -static constexpr dart::word NativeArguments_StructSize = 16; -static constexpr dart::word String_InstanceSize = 12; -static constexpr dart::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Thread_bool_false_offset = 104; +static constexpr dart::compiler::target::word Thread_bool_true_offset = 100; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 476; +static constexpr dart::compiler::target::word Thread_double_abs_address_offset = + 132; +static constexpr dart::compiler::target::word + Thread_double_negate_address_offset = 128; +static constexpr dart::compiler::target::word Thread_end_offset = 60; +static constexpr dart::compiler::target::word Thread_execution_state_offset = + 460; +static constexpr dart::compiler::target::word + Thread_float_absolute_address_offset = 144; +static constexpr dart::compiler::target::word + Thread_float_negate_address_offset = 140; +static constexpr dart::compiler::target::word Thread_float_not_address_offset = + 136; +static constexpr dart::compiler::target::word + Thread_float_zerow_address_offset = 148; +static constexpr dart::compiler::target::word Thread_global_object_pool_offset = + 452; +static constexpr dart::compiler::target::word Thread_isolate_offset = 48; +static constexpr dart::compiler::target::word + Thread_marking_stack_block_offset = 72; +static constexpr dart::compiler::target::word + Thread_no_scope_native_wrapper_entry_point_offset = 108; +static constexpr dart::compiler::target::word Thread_object_null_offset = 96; +static constexpr dart::compiler::target::word + Thread_predefined_symbols_address_offset = 120; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 456; +static constexpr dart::compiler::target::word Thread_safepoint_state_offset = + 464; +static constexpr dart::compiler::target::word Thread_stack_limit_offset = 36; +static constexpr dart::compiler::target::word + Thread_stack_overflow_flags_offset = 40; +static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = + 68; +static constexpr dart::compiler::target::word + Thread_top_exit_frame_info_offset = 64; +static constexpr dart::compiler::target::word Thread_top_offset = 56; +static constexpr dart::compiler::target::word Thread_top_resource_offset = 24; +static constexpr dart::compiler::target::word + Thread_unboxed_int64_runtime_arg_offset = 88; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 80; +static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = + 44; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 468; +static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; +static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; +static constexpr dart::compiler::target::word Type_arguments_offset = 16; +static constexpr dart::compiler::target::word Type_hash_offset = 20; +static constexpr dart::compiler::target::word Type_signature_offset = 24; +static constexpr dart::compiler::target::word Type_type_class_id_offset = 12; +static constexpr dart::compiler::target::word Type_type_state_offset = 32; +static constexpr dart::compiler::target::word + TypeArguments_instantiations_offset = 4; +static constexpr dart::compiler::target::word TypeRef_type_offset = 12; +static constexpr dart::compiler::target::word TypedDataBase_data_field_offset = + 4; +static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8; +static constexpr dart::compiler::target::word TypedDataView_data_offset = 12; +static constexpr dart::compiler::target::word + TypedDataView_offset_in_bytes_offset = 16; +static constexpr dart::compiler::target::word TypedData_data_offset = 12; +static constexpr dart::compiler::target::word UserTag_tag_offset = 8; +static constexpr dart::compiler::target::word Array_elements_start_offset = 12; +static constexpr dart::compiler::target::word Array_element_size = 4; +static constexpr dart::compiler::target::word + TypeArguments_elements_start_offset = 16; +static constexpr dart::compiler::target::word TypeArguments_element_size = 4; +static constexpr dart::compiler::target::word ClassTable_elements_start_offset = + 0; +static constexpr dart::compiler::target::word ClassTable_element_size = 168; +static constexpr dart::compiler::target::word + ClassTable_class_heap_stats_table_offset = 16; +static dart::compiler::target::word Code_entry_point_offset[] = {4, 12, 8, 16}; +static dart::compiler::target::word Code_function_entry_point_offset[] = {4, 8}; +static constexpr dart::compiler::target::word Array_header_size = 12; +static constexpr dart::compiler::target::word Context_header_size = 12; +static constexpr dart::compiler::target::word Double_InstanceSize = 16; +static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24; +static constexpr dart::compiler::target::word Instructions_UnalignedHeaderSize = + 16; +static constexpr dart::compiler::target::word Int32x4_InstanceSize = 24; +static constexpr dart::compiler::target::word Mint_InstanceSize = 16; +static constexpr dart::compiler::target::word NativeArguments_StructSize = 16; +static constexpr dart::compiler::target::word String_InstanceSize = 12; +static constexpr dart::compiler::target::word TypedData_InstanceSize = 12; +static constexpr dart::compiler::target::word Object_InstanceSize = 4; +static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12; +static constexpr dart::compiler::target::word Closure_InstanceSize = 28; +static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize = + 16; +static constexpr dart::compiler::target::word Instance_InstanceSize = 4; +static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; #endif // defined(TARGET_ARCH_DBC) && defined(TARGET_ARCH_IS_32_BIT) #endif // RUNTIME_VM_COMPILER_RUNTIME_OFFSETS_EXTRACTED_H_ diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h index 6882e1cb275..007773a5b4c 100644 --- a/runtime/vm/compiler/runtime_offsets_list.h +++ b/runtime/vm/compiler/runtime_offsets_list.h @@ -262,6 +262,12 @@ SIZEOF(Mint, InstanceSize, RawMint) \ SIZEOF(NativeArguments, StructSize, NativeArguments) \ SIZEOF(String, InstanceSize, RawString) \ - SIZEOF(TypedData, InstanceSize, RawTypedData) + SIZEOF(TypedData, InstanceSize, RawTypedData) \ + SIZEOF(Object, InstanceSize, RawObject) \ + SIZEOF(TypedDataBase, InstanceSize, RawTypedDataBase) \ + SIZEOF(Closure, InstanceSize, RawClosure) \ + SIZEOF(GrowableObjectArray, InstanceSize, RawGrowableObjectArray) \ + SIZEOF(Instance, InstanceSize, RawInstance) \ + SIZEOF(LinkedHashMap, InstanceSize, RawLinkedHashMap) #endif // RUNTIME_VM_COMPILER_RUNTIME_OFFSETS_LIST_H_ diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc index 7f4f9e2ce69..bdf0ec4743d 100644 --- a/runtime/vm/compiler/stub_code_compiler_arm.cc +++ b/runtime/vm/compiler/stub_code_compiler_arm.cc @@ -1098,7 +1098,7 @@ void StubCodeCompiler::GenerateInvokeDartCodeStub(Assembler* assembler) { __ StoreToOffset(kWord, R9, THR, target::Thread::vm_tag_offset()); // Load arguments descriptor array into R4, which is passed to Dart code. - __ ldr(R4, Address(R1, VMHandles::kOffsetOfRawPtrInHandle)); + __ ldr(R4, Address(R1, target::VMHandles::kOffsetOfRawPtrInHandle)); // Load number of arguments into R9 and adjust count for type arguments. __ ldr(R3, @@ -1110,7 +1110,7 @@ void StubCodeCompiler::GenerateInvokeDartCodeStub(Assembler* assembler) { __ SmiUntag(R9); // Compute address of 'arguments array' data area into R2. - __ ldr(R2, Address(R2, VMHandles::kOffsetOfRawPtrInHandle)); + __ ldr(R2, Address(R2, target::VMHandles::kOffsetOfRawPtrInHandle)); __ AddImmediate(R2, target::Array::data_offset() - kHeapObjectTag); // Set up arguments for the Dart call. @@ -1134,7 +1134,7 @@ void StubCodeCompiler::GenerateInvokeDartCodeStub(Assembler* assembler) { } else { __ LoadImmediate(PP, 0); // GC safe value into PP. } - __ ldr(CODE_REG, Address(R0, VMHandles::kOffsetOfRawPtrInHandle)); + __ ldr(CODE_REG, Address(R0, target::VMHandles::kOffsetOfRawPtrInHandle)); __ ldr(R0, FieldAddress(CODE_REG, target::Code::entry_point_offset())); __ blx(R0); // R4 is the arguments descriptor array. @@ -1668,7 +1668,7 @@ void StubCodeCompiler::GenerateAllocationStubForClass(Assembler* assembler, // when the object initialization should be done as a loop or as // straight line code. const int kInlineInstanceSize = 12; - const intptr_t instance_size = target::Class::InstanceSize(cls); + const intptr_t instance_size = target::Class::GetInstanceSize(cls); ASSERT(instance_size > 0); ASSERT(instance_size % target::ObjectAlignment::kObjectAlignment == 0); if (is_cls_parameterized) { diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc index c4318358199..31e928620bd 100644 --- a/runtime/vm/compiler/stub_code_compiler_arm64.cc +++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc @@ -1732,7 +1732,7 @@ void StubCodeCompiler::GenerateAllocationStubForClass(Assembler* assembler, // when the object initialization should be done as a loop or as // straight line code. const int kInlineInstanceSize = 12; - const intptr_t instance_size = target::Class::InstanceSize(cls); + const intptr_t instance_size = target::Class::GetInstanceSize(cls); ASSERT(instance_size > 0); if (is_cls_parameterized) { __ ldr(kTypeArgumentsReg, Address(SP)); diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc index f7fdf98987c..8e5985577b3 100644 --- a/runtime/vm/compiler/stub_code_compiler_ia32.cc +++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc @@ -1384,7 +1384,7 @@ void StubCodeCompiler::GenerateAllocationStubForClass(Assembler* assembler, // when the object initialization should be done as a loop or as // straight line code. const int kInlineInstanceSize = 12; // In words. - const intptr_t instance_size = target::Class::InstanceSize(cls); + const intptr_t instance_size = target::Class::GetInstanceSize(cls); ASSERT(instance_size > 0); if (is_cls_parameterized) { __ movl(EDX, Address(ESP, kObjectTypeArgumentsOffset)); diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc index 92836b2a087..77e894fe775 100644 --- a/runtime/vm/compiler/stub_code_compiler_x64.cc +++ b/runtime/vm/compiler/stub_code_compiler_x64.cc @@ -1682,7 +1682,7 @@ void StubCodeCompiler::GenerateAllocationStubForClass(Assembler* assembler, // when the object initialization should be done as a loop or as // straight line code. const int kInlineInstanceSize = 12; // In words. - const intptr_t instance_size = target::Class::InstanceSize(cls); + const intptr_t instance_size = target::Class::GetInstanceSize(cls); ASSERT(instance_size > 0); __ LoadObject(R9, NullObject()); if (is_cls_parameterized) { diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc index 79361bab0fd..f40c90b146f 100644 --- a/runtime/vm/exceptions.cc +++ b/runtime/vm/exceptions.cc @@ -371,15 +371,15 @@ class ExceptionHandlerFinder : public StackResource { }; CatchEntryMove CatchEntryMove::ReadFrom(ReadStream* stream) { - using Reader = ReadStream::Raw; - const intptr_t src = Reader::Read(stream); - const intptr_t dest_and_kind = Reader::Read(stream); + using Reader = ReadStream::Raw; + const int32_t src = Reader::Read(stream); + const int32_t dest_and_kind = Reader::Read(stream); return CatchEntryMove(src, dest_and_kind); } #if !defined(DART_PRECOMPILED_RUNTIME) void CatchEntryMove::WriteTo(WriteStream* stream) { - using Writer = WriteStream::Raw; + using Writer = WriteStream::Raw; Writer::Write(stream, src_); Writer::Write(stream, dest_and_kind_); } diff --git a/runtime/vm/exceptions.h b/runtime/vm/exceptions.h index 46b4d68b8ac..50d1a8f4bcf 100644 --- a/runtime/vm/exceptions.h +++ b/runtime/vm/exceptions.h @@ -203,21 +203,21 @@ class CatchEntryMove { #endif private: - CatchEntryMove(intptr_t src, intptr_t dest_and_kind) + CatchEntryMove(int32_t src, int32_t dest_and_kind) : src_(src), dest_and_kind_(dest_and_kind) {} // Note: BitField helper does not work with signed values of size that does // not match the destination size - thus we don't use BitField for declaring // DestinationField and instead encode and decode it manually. - using SourceKindField = BitField; + using SourceKindField = BitField; - static constexpr intptr_t kHalfSourceBits = kBitsPerWord / 2; - using LoSourceSlot = BitField; + static constexpr intptr_t kHalfSourceBits = 16; + using LoSourceSlot = BitField; using HiSourceSlot = - BitField; + BitField; - intptr_t src_; - intptr_t dest_and_kind_; + int32_t src_; + int32_t dest_and_kind_; }; // A sequence of moves that needs to be executed to create a state expected diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc index 460b1482fe2..fe462791e6b 100644 --- a/runtime/vm/image_snapshot.cc +++ b/runtime/vm/image_snapshot.cc @@ -107,7 +107,7 @@ void ImageWriter::PrepareForSerialization( RawInstructions* instructions = Code::InstructionsOf(code); const intptr_t offset = next_text_offset_; instructions_.Add(InstructionsData(instructions, code, offset)); - next_text_offset_ += instructions->HeapSize(); + next_text_offset_ += SizeInSnapshot(instructions); ASSERT(heap_->GetObjectId(instructions) == 0); heap_->SetObjectId(instructions, offset); break; @@ -142,7 +142,7 @@ void ImageWriter::SetupShared(ObjectOffsetMap* map, const void* shared_image) { pair.object = raw_obj; pair.offset = offset; map->Insert(pair); - obj_addr += raw_obj->HeapSize(); + obj_addr += SizeInSnapshot(raw_obj); } ASSERT(obj_addr == end_addr); } @@ -175,13 +175,17 @@ int32_t ImageWriter::GetTextOffsetFor(RawInstructions* instructions, offset = next_text_offset_; heap_->SetObjectId(instructions, offset); - next_text_offset_ += instructions->HeapSize(); + next_text_offset_ += SizeInSnapshot(instructions); instructions_.Add(InstructionsData(instructions, code, offset)); ASSERT(offset != 0); return offset; } +intptr_t ImageWriter::SizeInSnapshot(RawObject* raw_object) { + return raw_object->HeapSize(); +} + bool ImageWriter::GetSharedDataOffsetFor(RawObject* raw_object, uint32_t* offset) { ObjectOffsetPair* pair = shared_objects_.Lookup(raw_object); @@ -193,9 +197,9 @@ bool ImageWriter::GetSharedDataOffsetFor(RawObject* raw_object, } uint32_t ImageWriter::GetDataOffsetFor(RawObject* raw_object) { - intptr_t heap_size = raw_object->HeapSize(); + intptr_t snap_size = SizeInSnapshot(raw_object); intptr_t offset = next_data_offset_; - next_data_offset_ += heap_size; + next_data_offset_ += snap_size; objects_.Add(ObjectData(raw_object)); return offset; } @@ -238,7 +242,7 @@ void ImageWriter::DumpInstructionsSizes() { js.PrintPropertyStr("c", name); } js.PrintProperty("n", data.code_->QualifiedName()); - js.PrintProperty("s", data.insns_->raw()->HeapSize()); + js.PrintProperty("s", SizeInSnapshot(data.insns_->raw())); js.CloseObject(); } js.CloseArray(); @@ -473,7 +477,7 @@ void AssemblyImageWriter::WriteText(WriteStream* clustered_stream, bool vm) { "Instructions", /*name=*/nullptr); profile_writer_->AttributeBytesTo({offset_space_, offset}, - insns.raw()->HeapSize()); + SizeInSnapshot(insns.raw())); } ASSERT(insns.raw()->HeapSize() % sizeof(uint64_t) == 0); @@ -775,7 +779,8 @@ void BlobImageWriter::WriteText(WriteStream* clustered_stream, bool vm) { beginning += sizeof(uword); text_offset += WriteByteSequence(beginning, end); - ASSERT((text_offset - instr_start) == insns.raw()->HeapSize()); + ASSERT((text_offset - instr_start) == + ImageWriter::SizeInSnapshot(insns.raw())); } #ifdef DART_PRECOMPILER diff --git a/runtime/vm/image_snapshot.h b/runtime/vm/image_snapshot.h index 720d855f89f..f59d946c0e5 100644 --- a/runtime/vm/image_snapshot.h +++ b/runtime/vm/image_snapshot.h @@ -181,6 +181,8 @@ class ImageWriter : public ValueObject { void TraceInstructions(const Instructions& instructions); + static intptr_t SizeInSnapshot(RawObject* object); + protected: void WriteROData(WriteStream* stream); virtual void WriteText(WriteStream* clustered_stream, bool vm) = 0; diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc index 028c1bc31cf..e68d40c36cc 100644 --- a/runtime/vm/isolate.cc +++ b/runtime/vm/isolate.cc @@ -1351,7 +1351,8 @@ bool Isolate::VerifyTerminateCapability(const Object& capability) const { bool Isolate::AddResumeCapability(const Capability& capability) { // Ensure a limit for the number of resume capabilities remembered. - static const intptr_t kMaxResumeCapabilities = kSmiMax / (6 * kWordSize); + static const intptr_t kMaxResumeCapabilities = + compiler::target::kSmiMax / (6 * kWordSize); const GrowableObjectArray& caps = GrowableObjectArray::Handle( current_zone(), object_store()->resume_capabilities()); @@ -1402,7 +1403,8 @@ bool Isolate::RemoveResumeCapability(const Capability& capability) { void Isolate::AddExitListener(const SendPort& listener, const Instance& response) { // Ensure a limit for the number of listeners remembered. - static const intptr_t kMaxListeners = kSmiMax / (12 * kWordSize); + static const intptr_t kMaxListeners = + compiler::target::kSmiMax / (12 * kWordSize); const GrowableObjectArray& listeners = GrowableObjectArray::Handle( current_zone(), object_store()->exit_listeners()); @@ -1469,7 +1471,8 @@ void Isolate::NotifyExitListeners() { void Isolate::AddErrorListener(const SendPort& listener) { // Ensure a limit for the number of listeners remembered. - static const intptr_t kMaxListeners = kSmiMax / (6 * kWordSize); + static const intptr_t kMaxListeners = + compiler::target::kSmiMax / (6 * kWordSize); const GrowableObjectArray& listeners = GrowableObjectArray::Handle( current_zone(), object_store()->error_listeners()); diff --git a/runtime/vm/object.h b/runtime/vm/object.h index 3332ce15dc0..f0343a3c2c9 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -5634,7 +5634,7 @@ class Context : public Object { } static bool IsValidLength(intptr_t len) { - return 0 <= len && len <= kMaxElements; + return 0 <= len && len <= compiler::target::Array::kMaxElements; } static intptr_t InstanceSize() { diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h index 0eef3d886d0..a554d7d337a 100644 --- a/runtime/vm/raw_object.h +++ b/runtime/vm/raw_object.h @@ -13,6 +13,7 @@ #include "platform/atomic.h" #include "vm/class_id.h" #include "vm/compiler/method_recognizer.h" +#include "vm/compiler/runtime_api.h" #include "vm/exceptions.h" #include "vm/globals.h" #include "vm/object_graph.h" @@ -150,8 +151,10 @@ class RawObject { // Encodes the object size in the tag in units of object alignment. class SizeTag { public: - static const intptr_t kMaxSizeTag = ((1 << RawObject::kSizeTagSize) - 1) - << kObjectAlignmentLog2; + static constexpr intptr_t kMaxSizeTagInUnitsOfAlignment = + ((1 << RawObject::kSizeTagSize) - 1); + static constexpr intptr_t kMaxSizeTag = + kMaxSizeTagInUnitsOfAlignment * kObjectAlignment; static uword encode(intptr_t size) { return SizeBits::encode(SizeToTagValue(size)); @@ -171,11 +174,15 @@ class RawObject { : public BitField {}; static intptr_t SizeToTagValue(intptr_t size) { - ASSERT(Utils::IsAligned(size, kObjectAlignment)); - return (size > kMaxSizeTag) ? 0 : (size >> kObjectAlignmentLog2); + ASSERT(Utils::IsAligned( + size, compiler::target::ObjectAlignment::kObjectAlignment)); + return (size > kMaxSizeTag) + ? 0 + : (size >> + compiler::target::ObjectAlignment::kObjectAlignmentLog2); } static intptr_t TagValueToSize(intptr_t value) { - return value << kObjectAlignmentLog2; + return value << compiler::target::ObjectAlignment::kObjectAlignmentLog2; } }; @@ -1464,19 +1471,19 @@ class RawPcDescriptors : public RawObject { public: // Most of the time try_index will be small and merged field will fit into // one byte. - static intptr_t Encode(intptr_t kind, intptr_t try_index) { + static int32_t Encode(intptr_t kind, intptr_t try_index) { intptr_t kind_shift = Utils::ShiftForPowerOfTwo(kind); ASSERT(Utils::IsUint(kKindShiftSize, kind_shift)); ASSERT(Utils::IsInt(kTryIndexSize, try_index)); return (try_index << kTryIndexPos) | (kind_shift << kKindShiftPos); } - static intptr_t DecodeKind(intptr_t merged_kind_try) { + static intptr_t DecodeKind(int32_t merged_kind_try) { const intptr_t kKindShiftMask = (1 << kKindShiftSize) - 1; return 1 << (merged_kind_try & kKindShiftMask); } - static intptr_t DecodeTryIndex(intptr_t merged_kind_try) { + static intptr_t DecodeTryIndex(int32_t merged_kind_try) { // Arithmetic shift. return merged_kind_try >> kTryIndexPos; } @@ -1488,7 +1495,7 @@ class RawPcDescriptors : public RawObject { COMPILE_ASSERT(kLastKind <= 1 << ((1 << kKindShiftSize) - 1)); static const intptr_t kTryIndexPos = kKindShiftSize; - static const intptr_t kTryIndexSize = kBitsPerWord - kKindShiftSize; + static const intptr_t kTryIndexSize = 32 - kKindShiftSize; }; private: diff --git a/runtime/vm/runtime_entry_arm.cc b/runtime/vm/runtime_entry_arm.cc index 7f84226b38c..9c7585e2bc4 100644 --- a/runtime/vm/runtime_entry_arm.cc +++ b/runtime/vm/runtime_entry_arm.cc @@ -47,17 +47,21 @@ void RuntimeEntry::CallInternal(const RuntimeEntry* runtime_entry, intptr_t argument_count) { if (runtime_entry->is_leaf()) { ASSERT(argument_count == runtime_entry->argument_count()); - __ LoadFromOffset(kWord, TMP, THR, Thread::OffsetFromThread(runtime_entry)); - __ str(TMP, Address(THR, Thread::vm_tag_offset())); + __ LoadFromOffset( + kWord, TMP, THR, + compiler::target::Thread::OffsetFromThread(runtime_entry)); + __ str(TMP, Address(THR, compiler::target::Thread::vm_tag_offset())); __ blx(TMP); __ LoadImmediate(TMP, VMTag::kDartCompiledTagId); - __ str(TMP, Address(THR, Thread::vm_tag_offset())); + __ str(TMP, Address(THR, compiler::target::Thread::vm_tag_offset())); ASSERT((kAbiPreservedCpuRegs & (1 << THR)) != 0); ASSERT((kAbiPreservedCpuRegs & (1 << PP)) != 0); } else { // Argument count is not checked here, but in the runtime entry for a more // informative error message. - __ LoadFromOffset(kWord, R9, THR, Thread::OffsetFromThread(runtime_entry)); + __ LoadFromOffset( + kWord, R9, THR, + compiler::target::Thread::OffsetFromThread(runtime_entry)); __ LoadImmediate(R4, argument_count); __ BranchLinkToRuntime(); } diff --git a/runtime/vm/type_testing_stubs.cc b/runtime/vm/type_testing_stubs.cc index 1b78344a708..90dc7548a7a 100644 --- a/runtime/vm/type_testing_stubs.cc +++ b/runtime/vm/type_testing_stubs.cc @@ -322,9 +322,10 @@ void TypeTestingStubGenerator:: // fall through to continue // b) Then we'll load the values for the type parameters. - __ LoadField( - instance_type_args_reg, - FieldAddress(instance_reg, type_class.type_arguments_field_offset())); + __ LoadField(instance_type_args_reg, + FieldAddress(instance_reg, + compiler::target::Class::TypeArgumentsFieldOffset( + type_class))); // The kernel frontend should fill in any non-assigned type parameters on // construction with dynamic/Object, so we should never get the null type @@ -391,24 +392,27 @@ void TypeTestingStubGenerator::BuildOptimizedTypeArgumentValueCheck( // TODO(kustermann): Even though it should be safe to use TMP here, we // should avoid using TMP outside the assembler. Try to find a free // register to use here! + __ LoadField(TMP, + FieldAddress(instance_type_args_reg, + compiler::target::TypeArguments::type_at_offset( + type_param_value_offset_i))); __ LoadField( - TMP, - FieldAddress(instance_type_args_reg, - TypeArguments::type_at_offset(type_param_value_offset_i))); - __ LoadField(class_id_reg, FieldAddress(TMP, Type::type_class_id_offset())); + class_id_reg, + FieldAddress(TMP, compiler::target::Type::type_class_id_offset())); if (type_arg.IsTypeParameter()) { const TypeParameter& type_param = TypeParameter::Cast(type_arg); const Register kTypeArgumentsReg = type_param.IsClassTypeParameter() ? instantiator_type_args_reg : function_type_args_reg; - __ LoadField( - own_type_arg_reg, - FieldAddress(kTypeArgumentsReg, - TypeArguments::type_at_offset(type_param.index()))); + __ LoadField(own_type_arg_reg, + FieldAddress(kTypeArgumentsReg, + compiler::target::TypeArguments::type_at_offset( + type_param.index()))); __ CompareWithFieldValue( class_id_reg, - FieldAddress(own_type_arg_reg, Type::type_class_id_offset())); + FieldAddress(own_type_arg_reg, + compiler::target::Type::type_class_id_offset())); __ BranchIf(NOT_EQUAL, check_failed); } else { const Class& type_class = Class::Handle(type_arg.type_class()); @@ -483,7 +487,7 @@ void RegisterTypeArgumentsUse(const Function& function, const Class& instance_klass = Class::Handle(Isolate::Current()->class_table()->At(cid)); if (load_field->slot().IsTypeArguments() && instance_klass.IsGeneric() && - instance_klass.type_arguments_field_offset() == + compiler::target::Class::TypeArgumentsFieldOffset(instance_klass) == load_field->slot().offset_in_bytes()) { // This is a subset of Case c) above, namely forwarding the type // argument vector. diff --git a/runtime/vm/type_testing_stubs_arm.cc b/runtime/vm/type_testing_stubs_arm.cc index 30f1de07a4f..28d8c7cb0e5 100644 --- a/runtime/vm/type_testing_stubs_arm.cc +++ b/runtime/vm/type_testing_stubs_arm.cc @@ -23,8 +23,10 @@ void TypeTestingStubGenerator::BuildOptimizedTypeTestStub( BuildOptimizedTypeTestStubFastCases(assembler, hi, type, type_class, kInstanceReg, kClassIdReg); - __ ldr(CODE_REG, Address(THR, Thread::slow_type_test_stub_offset())); - __ Branch(FieldAddress(CODE_REG, Code::entry_point_offset())); + __ ldr(CODE_REG, + Address(THR, compiler::target::Thread::slow_type_test_stub_offset())); + __ Branch( + FieldAddress(CODE_REG, compiler::target::Code::entry_point_offset())); } void TypeTestingStubGenerator::