Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 5558c55122a7cf781c60cea1b9fabd7c085d7f99..1e73a55871606f4ce7b2708b856ef6e2e9a3f9d8 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -6498,6 +6498,11 @@ void StringAddStub::Generate(MacroAssembler* masm) { |
__ tst(r4, Operand(kAsciiDataHintMask)); |
__ tst(r5, Operand(kAsciiDataHintMask), ne); |
__ b(ne, &ascii_data); |
+ __ eor(r4, r4, Operand(r5)); |
+ STATIC_ASSERT(kOneByteStringTag != 0 && kAsciiDataHintTag != 0); |
+ __ and_(r4, r4, Operand(kOneByteStringTag | kAsciiDataHintTag)); |
+ __ cmp(r4, Operand(kOneByteStringTag | kAsciiDataHintTag)); |
+ __ b(eq, &ascii_data); |
// Allocate a two byte cons string. |
__ AllocateTwoByteConsString(r7, r6, r4, r5, &call_runtime); |