diff options
Diffstat (limited to 'deps/v8/src/mips/macro-assembler-mips.cc')
-rw-r--r-- | deps/v8/src/mips/macro-assembler-mips.cc | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/deps/v8/src/mips/macro-assembler-mips.cc b/deps/v8/src/mips/macro-assembler-mips.cc index 220d9fe0c7..81e9ec980e 100644 --- a/deps/v8/src/mips/macro-assembler-mips.cc +++ b/deps/v8/src/mips/macro-assembler-mips.cc @@ -3135,8 +3135,34 @@ void MacroAssembler::AllocateAsciiConsString(Register result, Register scratch1, Register scratch2, Label* gc_required) { - Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required, - TAG_OBJECT); + Label allocate_new_space, install_map; + AllocationFlags flags = TAG_OBJECT; + + ExternalReference high_promotion_mode = ExternalReference:: + new_space_high_promotion_mode_active_address(isolate()); + li(scratch1, Operand(high_promotion_mode)); + lw(scratch1, MemOperand(scratch1, 0)); + Branch(&allocate_new_space, eq, scratch1, Operand(zero_reg)); + + Allocate(ConsString::kSize, + result, + scratch1, + scratch2, + gc_required, + static_cast<AllocationFlags>(flags | PRETENURE_OLD_POINTER_SPACE)); + + jmp(&install_map); + + bind(&allocate_new_space); + Allocate(ConsString::kSize, + result, + scratch1, + scratch2, + gc_required, + flags); + + bind(&install_map); + InitializeNewString(result, length, Heap::kConsAsciiStringMapRootIndex, @@ -5135,6 +5161,18 @@ void MacroAssembler::CheckPageFlag( } +void MacroAssembler::CheckMapDeprecated(Handle<Map> map, + Register scratch, + Label* if_deprecated) { + if (map->CanBeDeprecated()) { + li(scratch, Operand(map)); + lw(scratch, FieldMemOperand(scratch, Map::kBitField3Offset)); + And(scratch, scratch, Operand(Smi::FromInt(Map::Deprecated::kMask))); + Branch(if_deprecated, ne, scratch, Operand(zero_reg)); + } +} + + void MacroAssembler::JumpIfBlack(Register object, Register scratch0, Register scratch1, |