5#define SHOULD_NOT_INCLUDE_RUNTIME
12void AsmIntrinsifier::String_identityHash(Assembler* assembler,
13 Label* normal_ir_body) {
14 String_getHashCode(assembler, normal_ir_body);
17void AsmIntrinsifier::RegExp_ExecuteMatch(Assembler* assembler,
18 Label* normal_ir_body) {
19 AsmIntrinsifier::IntrinsifyRegExpExecuteMatch(assembler, normal_ir_body,
23void AsmIntrinsifier::RegExp_ExecuteMatchSticky(Assembler* assembler,
24 Label* normal_ir_body) {
25 AsmIntrinsifier::IntrinsifyRegExpExecuteMatch(assembler, normal_ir_body,
32void AsmIntrinsifier::StringEquality(Assembler* assembler,
38 Label* normal_ir_body,
39 intptr_t string_cid) {
40 Label is_true, is_false, loop;
42 __ CompareRegisters(obj1, obj2);
45 __ CompareClassId(obj2, string_cid, temp1);
48 __ LoadFieldFromOffset(temp1, obj1, target::String::length_offset());
49 __ CompareWithMemoryValue(
50 temp1, FieldAddress(obj2, target::String::length_offset()));
54 if (string_cid == kOneByteStringCid) {
55 __ ArithmeticShiftRightImmediate(temp1, 1);
58 __ AddImmediate(temp1, target::kWordSize - 1);
59 __ ArithmeticShiftRightImmediate(temp1, target::kWordSizeLog2);
60 __ CompareWords(obj1, obj2,
61 target::String::length_offset() + target::kWordSize, temp1,
72 __ Bind(normal_ir_body);
const Bool & TrueObject()
const Bool & FalseObject()