6#if defined(TARGET_ARCH_ARM)
8#define SHOULD_NOT_INCLUDE_RUNTIME
31static void TestBothArgumentsSmis(Assembler* assembler, Label* not_smi) {
39void AsmIntrinsifier::Integer_shl(Assembler* assembler, Label* normal_ir_body) {
42 TestBothArgumentsSmis(assembler, normal_ir_body);
44 __ b(normal_ir_body,
HI);
55 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR, EQ));
57 __ CompareImmediate(
R1, 0);
58 __ b(normal_ir_body, LT);
65 __ LoadImmediate(
R8, 1);
67 __ sub(
R8,
R8, Operand(1));
68 __ rsb(
R3,
R0, Operand(32));
85static void Get64SmiOrMint(Assembler* assembler,
89 Label* not_smi_or_mint) {
96 __ mov(res_lo, Operand(reg));
97 __ mov(res_hi, Operand(res_lo,
ASR, 31));
101 __ CompareClassId(reg, kMintCid, res_lo);
102 __ b(not_smi_or_mint,
NE);
112 Label* normal_ir_body,
114 Label try_mint_smi, is_true, is_false, drop_two_fall_through, fall_through;
115 TestBothArgumentsSmis(assembler, &try_mint_smi);
119 __ b(&is_true, true_condition);
128 Condition hi_true_cond, hi_false_cond, lo_false_cond;
129 switch (true_condition) {
134 lo_false_cond = (true_condition ==
LT) ?
CS :
HI;
140 lo_false_cond = (true_condition ==
GT) ?
LS :
CC;
144 hi_true_cond = hi_false_cond = lo_false_cond =
VS;
149 Get64SmiOrMint(assembler,
R3,
R2,
R1, normal_ir_body);
151 Get64SmiOrMint(assembler,
R1,
R8,
R0, normal_ir_body);
158 __ b(&is_false, hi_false_cond);
159 __ b(&is_true, hi_true_cond);
161 __ b(&is_false, lo_false_cond);
168void AsmIntrinsifier::Integer_lessThan(Assembler* assembler,
169 Label* normal_ir_body) {
173void AsmIntrinsifier::Integer_greaterThan(Assembler* assembler,
174 Label* normal_ir_body) {
178void AsmIntrinsifier::Integer_lessEqualThan(Assembler* assembler,
179 Label* normal_ir_body) {
183void AsmIntrinsifier::Integer_greaterEqualThan(Assembler* assembler,
184 Label* normal_ir_body) {
190void AsmIntrinsifier::Integer_equalToInteger(Assembler* assembler,
191 Label* normal_ir_body) {
192 Label true_label, check_for_mint;
197 __ b(&true_label, EQ);
201 __ b(&check_for_mint,
NE);
211 Label receiver_not_smi;
215 __ b(&receiver_not_smi,
NE);
221 __ CompareClassId(
R0, kDoubleCid,
R2);
222 __ b(normal_ir_body, EQ);
227 __ Bind(&receiver_not_smi);
230 __ CompareClassId(
R1, kMintCid,
R2);
231 __ b(normal_ir_body,
NE);
235 READS_RETURN_ADDRESS_FROM_LR(
241void AsmIntrinsifier::Integer_equal(Assembler* assembler,
242 Label* normal_ir_body) {
243 Integer_equalToInteger(assembler, normal_ir_body);
246void AsmIntrinsifier::Smi_bitLength(Assembler* assembler,
247 Label* normal_ir_body) {
253 __ rsb(
R0,
R0, Operand(32));
258void AsmIntrinsifier::Bigint_lsh(Assembler* assembler, Label* normal_ir_body) {
268 __ Asr(
R4,
R3, Operand(5));
281 __ and_(
R1,
R3, Operand(31));
283 __ rsb(
R0,
R1, Operand(32));
284 __ mov(
R9, Operand(0));
298void AsmIntrinsifier::Bigint_rsh(Assembler* assembler, Label* normal_ir_body) {
308 __ Asr(
R4,
R3, Operand(5));
315 __ add(
R4,
R4, Operand(1));
319 __ and_(
R1,
R3, Operand(31));
321 __ rsb(
R0,
R1, Operand(32));
336 __ str(
R9, Address(
R6, 0));
341void AsmIntrinsifier::Bigint_absAdd(Assembler* assembler,
342 Label* normal_ir_body) {
368 __ adds(
R4,
R4, Operand(0));
381 __ b(&last_carry, EQ);
387 __ adcs(
R4,
R4, Operand(0));
390 __ b(&carry_loop,
NE);
393 __ mov(
R4, Operand(0));
394 __ adc(
R4,
R4, Operand(0));
395 __ str(
R4, Address(
R8, 0));
401void AsmIntrinsifier::Bigint_absSub(Assembler* assembler,
402 Label* normal_ir_body) {
428 __ subs(
R4,
R4, Operand(0));
447 __ sbcs(
R4,
R4, Operand(0));
450 __ b(&carry_loop,
NE);
457void AsmIntrinsifier::Bigint_mulAdd(Assembler* assembler,
458 Label* normal_ir_body) {
510 __ mov(
R1, Operand(0));
524 __ ldr(
R0, Address(
R9, 0));
535 __ subs(
R8,
R8, Operand(1));
536 __ b(&muladd_loop,
NE);
542 __ ldr(
R0, Address(
R9, 0));
547 Label propagate_carry_loop;
548 __ Bind(&propagate_carry_loop);
549 __ ldr(
R0, Address(
R9, 0));
550 __ adds(
R0,
R0, Operand(1));
552 __ b(&propagate_carry_loop,
CS);
559void AsmIntrinsifier::Bigint_sqrAdd(Assembler* assembler,
560 Label* normal_ir_body) {
606 __ ldr(
R0, Address(
R6, 0));
607 __ mov(
R8, Operand(0));
615 __ mov(
R9, Operand(0));
620 __ mov(
R0, Operand(2));
641 __ mov(
R2, Operand(0));
642 __ adc(
R2,
R2, Operand(0));
645 __ adc(
R2,
R2, Operand(0));
646 __ ldr(
R8, Address(
R6, 0));
648 __ adcs(
R8,
R1, Operand(0));
649 __ adc(
R9,
R2, Operand(0));
660 __ ldr(
R0, Address(
R6, 0));
664 __ adc(
R9,
R9, Operand(0));
675void AsmIntrinsifier::Bigint_estimateQuotientDigit(Assembler* assembler,
676 Label* normal_ir_body) {
680void AsmIntrinsifier::Montgomery_mulMod(Assembler* assembler,
681 Label* normal_ir_body) {
717static void TestLastArgumentIsDouble(Assembler* assembler,
719 Label* not_double_smi) {
723 __ CompareClassId(
R0, kDoubleCid,
R1);
724 __ b(not_double_smi,
NE);
732static void CompareDoubles(Assembler* assembler,
733 Label* normal_ir_body,
735 Label is_smi, double_op;
737 TestLastArgumentIsDouble(assembler, &is_smi, normal_ir_body);
749 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
VS));
750 __ LoadObject(
R0, CastHandle<Object>(
TrueObject()), true_condition);
761void AsmIntrinsifier::Double_greaterThan(Assembler* assembler,
762 Label* normal_ir_body) {
763 CompareDoubles(assembler, normal_ir_body,
HI);
766void AsmIntrinsifier::Double_greaterEqualThan(Assembler* assembler,
767 Label* normal_ir_body) {
768 CompareDoubles(assembler, normal_ir_body,
CS);
771void AsmIntrinsifier::Double_lessThan(Assembler* assembler,
772 Label* normal_ir_body) {
773 CompareDoubles(assembler, normal_ir_body,
CC);
776void AsmIntrinsifier::Double_equal(Assembler* assembler,
777 Label* normal_ir_body) {
778 CompareDoubles(assembler, normal_ir_body, EQ);
781void AsmIntrinsifier::Double_lessEqualThan(Assembler* assembler,
782 Label* normal_ir_body) {
783 CompareDoubles(assembler, normal_ir_body,
LS);
788static void DoubleArithmeticOperations(Assembler* assembler,
789 Label* normal_ir_body,
791 Label is_smi, double_op;
793 TestLastArgumentIsDouble(assembler, &is_smi, normal_ir_body);
828void AsmIntrinsifier::Double_add(Assembler* assembler, Label* normal_ir_body) {
829 DoubleArithmeticOperations(assembler, normal_ir_body, Token::kADD);
832void AsmIntrinsifier::Double_mul(Assembler* assembler, Label* normal_ir_body) {
833 DoubleArithmeticOperations(assembler, normal_ir_body, Token::kMUL);
836void AsmIntrinsifier::Double_sub(Assembler* assembler, Label* normal_ir_body) {
837 DoubleArithmeticOperations(assembler, normal_ir_body, Token::kSUB);
840void AsmIntrinsifier::Double_div(Assembler* assembler, Label* normal_ir_body) {
841 DoubleArithmeticOperations(assembler, normal_ir_body, Token::kDIV);
845void AsmIntrinsifier::Double_mulFromInteger(Assembler* assembler,
846 Label* normal_ir_body) {
851 __ b(normal_ir_body,
NE);
867void AsmIntrinsifier::DoubleFromInteger(Assembler* assembler,
868 Label* normal_ir_body) {
873 __ b(normal_ir_body,
NE);
886void AsmIntrinsifier::Double_getIsNaN(Assembler* assembler,
887 Label* normal_ir_body) {
897void AsmIntrinsifier::Double_getIsInfinite(Assembler* assembler,
898 Label* normal_ir_body) {
902 __ LoadFieldFromOffset(
R2,
R0,
906 __ cmp(
R1, Operand(0));
908 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
NE));
911 __ AndImmediate(
R2,
R2, 0x7FFFFFFF);
913 __ CompareImmediate(
R2, 0x7FF00000);
915 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
NE));
920void AsmIntrinsifier::Double_getIsNegative(Assembler* assembler,
921 Label* normal_ir_body) {
922 Label is_false, is_true, is_zero;
943 __ tst(
R1, Operand(1));
948void AsmIntrinsifier::ObjectEquals(Assembler* assembler,
949 Label* normal_ir_body) {
958static void JumpIfInteger(Assembler* assembler,
966static void JumpIfNotInteger(Assembler* assembler,
974static void JumpIfString(Assembler* assembler,
978 assembler->RangeCheck(
cid, tmp, kOneByteStringCid, kTwoByteStringCid,
982static void JumpIfNotString(Assembler* assembler,
986 assembler->RangeCheck(
cid, tmp, kOneByteStringCid, kTwoByteStringCid,
990static void JumpIfNotList(Assembler* assembler,
994 assembler->RangeCheck(
cid, tmp, kArrayCid, kGrowableObjectArrayCid,
998static void JumpIfType(Assembler* assembler,
1003 (kRecordTypeCid == kTypeCid + 2));
1004 assembler->RangeCheck(
cid, tmp, kTypeCid, kRecordTypeCid,
1008static void JumpIfNotType(Assembler* assembler,
1013 (kRecordTypeCid == kTypeCid + 2));
1014 assembler->RangeCheck(
cid, tmp, kTypeCid, kRecordTypeCid,
1019void AsmIntrinsifier::ObjectRuntimeType(Assembler* assembler,
1020 Label* normal_ir_body) {
1021 Label use_declaration_type, not_double, not_integer, not_string;
1023 __ LoadClassIdMayBeSmi(
R1,
R0);
1025 __ CompareImmediate(
R1, kClosureCid);
1026 __ b(normal_ir_body, EQ);
1028 __ CompareImmediate(
R1, kRecordCid);
1029 __ b(normal_ir_body, EQ);
1032 __ b(&use_declaration_type,
HI);
1034 __ LoadIsolateGroup(
R2);
1037 __ CompareImmediate(
R1, kDoubleCid);
1038 __ b(¬_double,
NE);
1043 JumpIfNotInteger(assembler,
R1,
R0, ¬_integer);
1048 JumpIfNotString(assembler,
R1,
R0, ¬_string);
1053 JumpIfNotType(assembler,
R1,
R0, &use_declaration_type);
1057 __ Bind(&use_declaration_type);
1058 __ LoadClassById(
R2,
R1);
1060 __ CompareImmediate(
R3, 0);
1061 __ b(normal_ir_body,
NE);
1065 __ b(normal_ir_body, EQ);
1075static void EquivalentClassIds(Assembler* assembler,
1076 Label* normal_ir_body,
1077 Label* equal_may_be_generic,
1078 Label* equal_not_generic,
1083 bool testing_instance_cids) {
1084 Label not_integer, not_integer_or_string, not_integer_or_string_or_list;
1087 __ CompareImmediate(cid1, kClosureCid);
1088 __ b(normal_ir_body, EQ);
1091 __ CompareImmediate(cid1, kRecordCid);
1092 __ b(normal_ir_body, EQ);
1097 __ cmp(cid1, Operand(cid2));
1098 __ b(equal_may_be_generic, EQ);
1104 __ b(not_equal,
HI);
1107 JumpIfNotInteger(assembler, cid1, scratch, ¬_integer);
1110 JumpIfInteger(assembler, cid2, scratch, equal_not_generic);
1116 JumpIfNotString(assembler, cid1, scratch,
1117 testing_instance_cids ? ¬_integer_or_string : not_equal);
1120 JumpIfString(assembler, cid2, scratch, equal_not_generic);
1124 if (testing_instance_cids) {
1125 __ Bind(¬_integer_or_string);
1127 JumpIfNotList(assembler, cid1, scratch, ¬_integer_or_string_or_list);
1130 JumpIfNotList(assembler, cid2, scratch, not_equal);
1133 __ b(equal_may_be_generic);
1135 __ Bind(¬_integer_or_string_or_list);
1139 JumpIfNotType(assembler, cid1, scratch, not_equal);
1142 JumpIfType(assembler, cid2, scratch, equal_not_generic);
1148void AsmIntrinsifier::ObjectHaveSameRuntimeType(Assembler* assembler,
1149 Label* normal_ir_body) {
1151 __ LoadClassIdMayBeSmi(
R1,
R1);
1152 __ LoadClassIdMayBeSmi(
R2,
R2);
1154 Label equal_may_be_generic,
equal, not_equal;
1155 EquivalentClassIds(assembler, normal_ir_body, &equal_may_be_generic, &
equal,
1159 __ Bind(&equal_may_be_generic);
1163 __ LoadClassById(
R0,
R1);
1179 __ b(normal_ir_body,
NE);
1193void AsmIntrinsifier::String_getHashCode(Assembler* assembler,
1194 Label* normal_ir_body) {
1197 __ cmp(
R0, Operand(0));
1198 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
NE));
1202void AsmIntrinsifier::Type_equality(Assembler* assembler,
1203 Label* normal_ir_body) {
1204 Label
equal, not_equal, equiv_cids_may_be_generic, equiv_cids;
1212 __ LoadClassIdMayBeSmi(
R0,
R1);
1213 __ CompareImmediate(
R0, kTypeCid);
1214 __ b(normal_ir_body,
NE);
1217 __ LoadTypeClassId(
R3,
R1);
1218 __ LoadTypeClassId(
R4,
R2);
1220 EquivalentClassIds(assembler, normal_ir_body, &equiv_cids_may_be_generic,
1221 &equiv_cids, ¬_equal,
R3,
R4,
R0,
1224 __ Bind(&equiv_cids_may_be_generic);
1229 __ b(normal_ir_body,
NE);
1234 __ LoadAbstractTypeNullability(
R1,
R1);
1235 __ LoadAbstractTypeNullability(
R2,
R2);
1237 __ b(¬_equal,
NE);
1251void AsmIntrinsifier::AbstractType_getHashCode(Assembler* assembler,
1252 Label* normal_ir_body) {
1255 __ cmp(
R0, Operand(0));
1256 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
NE));
1260void AsmIntrinsifier::AbstractType_equality(Assembler* assembler,
1261 Label* normal_ir_body) {
1264 __ b(normal_ir_body,
NE);
1272void GenerateSubstringMatchesSpecialization(Assembler* assembler,
1273 intptr_t receiver_cid,
1276 Label* return_false) {
1285 __ cmp(
R9, Operand(0));
1286 __ b(return_true, EQ);
1289 __ cmp(
R1, Operand(0));
1290 __ b(return_false, LT);
1295 __ b(return_false, GT);
1297 if (receiver_cid == kOneByteStringCid) {
1301 ASSERT(receiver_cid == kTwoByteStringCid);
1306 if (other_cid == kOneByteStringCid) {
1309 ASSERT(other_cid == kTwoByteStringCid);
1314 __ LoadImmediate(
R3, 0);
1320 if (receiver_cid == kOneByteStringCid) {
1321 __ ldrb(
R4, Address(
R0, 0));
1323 __ ldrh(
R4, Address(
R0, 0));
1325 if (other_cid == kOneByteStringCid) {
1331 __ b(return_false,
NE);
1334 __ AddImmediate(
R3, 1);
1335 __ AddImmediate(
R0, receiver_cid == kOneByteStringCid ? 1 : 2);
1336 __ AddImmediate(
R2, other_cid == kOneByteStringCid ? 1 : 2);
1346void AsmIntrinsifier::StringBaseSubstringMatches(Assembler* assembler,
1347 Label* normal_ir_body) {
1348 Label return_true, return_false, try_two_byte;
1355 __ b(normal_ir_body,
NE);
1357 __ CompareClassId(
R2, kOneByteStringCid,
R3);
1358 __ b(normal_ir_body,
NE);
1360 __ CompareClassId(
R0, kOneByteStringCid,
R3);
1361 __ b(&try_two_byte,
NE);
1363 GenerateSubstringMatchesSpecialization(assembler, kOneByteStringCid,
1364 kOneByteStringCid, &return_true,
1368 __ CompareClassId(
R0, kTwoByteStringCid,
R3);
1369 __ b(normal_ir_body,
NE);
1371 GenerateSubstringMatchesSpecialization(assembler, kTwoByteStringCid,
1372 kOneByteStringCid, &return_true,
1389void AsmIntrinsifier::Object_getHash(Assembler* assembler,
1390 Label* normal_ir_body) {
1394void AsmIntrinsifier::StringBaseCharAt(Assembler* assembler,
1395 Label* normal_ir_body) {
1396 Label try_two_byte_string;
1401 __ b(normal_ir_body,
NE);
1405 __ b(normal_ir_body,
CS);
1407 __ CompareClassId(
R0, kOneByteStringCid,
R3);
1408 __ b(&try_two_byte_string,
NE);
1413 __ b(normal_ir_body,
GE);
1420 __ Bind(&try_two_byte_string);
1421 __ CompareClassId(
R0, kTwoByteStringCid,
R3);
1422 __ b(normal_ir_body,
NE);
1427 __ b(normal_ir_body,
GE);
1437void AsmIntrinsifier::StringBaseIsEmpty(Assembler* assembler,
1438 Label* normal_ir_body) {
1447void AsmIntrinsifier::OneByteString_getHashCode(Assembler* assembler,
1448 Label* normal_ir_body) {
1451 __ cmp(
R0, Operand(0));
1452 READS_RETURN_ADDRESS_FROM_LR(
__ bx(
LR,
NE));
1455 __ mov(
R3, Operand(0));
1473 __ add(
R3,
R3, Operand(1));
1474 __ add(
R8,
R8, Operand(1));
1489static void TryAllocateString(Assembler* assembler,
1491 intptr_t max_elements,
1494 ASSERT(
cid == kOneByteStringCid ||
cid == kTwoByteStringCid);
1497 __ BranchIfNotSmi(length_reg, failure);
1504 __ mov(
R8, Operand(length_reg));
1505 if (
cid == kOneByteStringCid) {
1506 __ SmiUntag(length_reg);
1510 const intptr_t fixed_size_plus_alignment_padding =
1513 __ AddImmediate(length_reg, fixed_size_plus_alignment_padding);
1514 __ bic(length_reg, length_reg,
1520 __ adds(
R1,
R0, Operand(length_reg));
1530 __ CheckAllocationCanary(
R0);
1539 __ LoadImmediate(
TMP, 0);
1553 __ mov(
R3, Operand(0),
HI);
1559 __ LoadImmediate(
TMP, tags);
1565 __ StoreIntoObjectNoBarrier(
1568 __ LoadImmediate(
TMP, 0);
1569 __ StoreIntoObjectNoBarrier(
1579void AsmIntrinsifier::OneByteString_substringUnchecked(Assembler* assembler,
1580 Label* normal_ir_body) {
1586 __ ldr(
R2, Address(
SP, kEndIndexOffset));
1587 __ ldr(
TMP, Address(
SP, kStartIndexOffset));
1590 __ b(normal_ir_body,
NE);
1593 TryAllocateString(assembler, kOneByteStringCid,
1599 __ ldr(
R3, Address(
SP, kStringOffset));
1600 __ ldr(
R1, Address(
SP, kStartIndexOffset));
1608 __ ldr(
R2, Address(
SP, kEndIndexOffset));
1619 __ cmp(
R2, Operand(0));
1625 __ sub(
R2,
R2, Operand(1));
1626 __ cmp(
R2, Operand(0));
1628 __ add(
R1,
R1, Operand(1));
1636void AsmIntrinsifier::WriteIntoOneByteString(Assembler* assembler,
1637 Label* normal_ir_body) {
1649void AsmIntrinsifier::WriteIntoTwoByteString(Assembler* assembler,
1650 Label* normal_ir_body) {
1662void AsmIntrinsifier::AllocateOneByteString(Assembler* assembler,
1663 Label* normal_ir_body) {
1666 TryAllocateString(assembler, kOneByteStringCid,
1676void AsmIntrinsifier::AllocateTwoByteString(Assembler* assembler,
1677 Label* normal_ir_body) {
1680 TryAllocateString(assembler, kTwoByteStringCid,
1690void AsmIntrinsifier::OneByteString_equality(Assembler* assembler,
1691 Label* normal_ir_body) {
1695 StringEquality(assembler,
R0,
R1,
R2,
R3,
R0, normal_ir_body,
1699void AsmIntrinsifier::TwoByteString_equality(Assembler* assembler,
1700 Label* normal_ir_body) {
1704 StringEquality(assembler,
R0,
R1,
R2,
R3,
R0, normal_ir_body,
1708void AsmIntrinsifier::IntrinsifyRegExpExecuteMatch(Assembler* assembler,
1709 Label* normal_ir_body,
1711 if (FLAG_interpret_irregexp)
return;
1724 __ ldr(
R2, Address(
SP, kRegExpParamOffset));
1725 __ ldr(
R1, Address(
SP, kStringParamOffset));
1727 __ AddImmediate(
R1, -kOneByteStringCid);
1730 kOneByteStringCid, sticky)));
1741void AsmIntrinsifier::UserTag_defaultTag(Assembler* assembler,
1742 Label* normal_ir_body) {
1748void AsmIntrinsifier::Profiler_getCurrentTag(Assembler* assembler,
1749 Label* normal_ir_body) {
1755void AsmIntrinsifier::Timeline_isDartStreamEnabled(Assembler* assembler,
1756 Label* normal_ir_body) {
1757#if !defined(SUPPORT_TIMELINE)
1765 __ cmp(
R0, Operand(0));
1772void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
1773 Label* normal_ir_body) {
1774#if !defined(SUPPORT_TIMELINE)
1781 __ adds(
R1,
R1, Operand(1));
1782 __ adcs(
R2,
R2, Operand(0));
static void done(const char *config, const char *src, const char *srcOptions, const char *name)
static bool equal(const SkBitmap &a, const SkBitmap &b)
static bool ok(int result)
static word hash_offset()
static word type_arguments_offset()
static word declaration_type_offset()
static word host_type_arguments_field_offset_in_words_offset()
static const word kNoTypeArguments
static word num_type_arguments_offset()
static word value_offset()
static word code_offset()
static word entry_point_offset(CodeEntryKind kind=CodeEntryKind::kNormal)
static word type_arguments_offset()
static word object_store_offset()
static word current_tag_offset()
static word default_tag_offset()
static word value_offset()
static word double_type_offset()
static word type_type_offset()
static word int_type_offset()
static word string_type_offset()
static word tags_offset()
static word data_offset()
static const word kMaxNewSpaceElements
static word function_offset(classid_t cid, bool sticky)
static const word kHashBits
static word hash_offset()
static word InstanceSize()
static word length_offset()
static const word kNullCharCodeSymbolOffset
static const word kNumberOfOneCharCodeSymbols
static word dart_stream_offset()
static word predefined_symbols_address_offset()
static word next_task_id_offset()
static word enabled_offset()
static const word kMaxNewSpaceElements
static word data_offset()
static word arguments_offset()
static word payload_offset()
static const word kSizeTagMaxSizeTag
static const word kTagBitsSizeTagPos
uword MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size)
word ToRawSmi(const dart::Object &a)
static constexpr intptr_t kWordSize
constexpr intptr_t kSmiBits
const Bool & TrueObject()
const Bool & FalseObject()
const Object & NullObject()
const Class & DoubleClass()
const Class & MintClass()
static bool CompareIntegers(Token::Kind kind, const Integer &left, const Integer &right)
uint32_t CombineHashes(uint32_t hash, uint32_t other_hash)
constexpr intptr_t kWordSizeLog2
const Register FUNCTION_REG
const intptr_t kBytesPerBigIntDigit
NOT_IN_PRODUCT(LibraryPtr ReloadTestScript(const char *script))
COMPILE_ASSERT(kUnreachableReference==WeakTable::kNoValue)
static bool Bind(PassBindingsCacheMTL &pass, ShaderStage stage, size_t bind_index, const BufferView &view)
static constexpr intptr_t kObjectAlignmentLog2
static constexpr intptr_t kObjectAlignment