diff options
author | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-03-19 09:25:14 +0100 |
---|---|---|
committer | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-03-19 09:56:31 +0100 |
commit | 6313e1fe4c27755adde87e62db1c2f9fac534ae4 (patch) | |
tree | c57bb29f65e02fbfcc07895a8cc2903fff9300ba /src/3rdparty/v8/src/mips/assembler-mips.cc | |
parent | b5a49a260d03249c386f1b63c249089383dd81fa (diff) | |
parent | cac65e7a222b848a735a974b0aeb43209b0cfa18 (diff) | |
download | qtjsbackend-6313e1fe4c27755adde87e62db1c2f9fac534ae4.tar.gz |
Merge branch 'dev' into stable
This starts Qt 5.1 release cycle
Change-Id: I892bbc73c276842894a720f761ce31ad1b015672
Diffstat (limited to 'src/3rdparty/v8/src/mips/assembler-mips.cc')
-rw-r--r-- | src/3rdparty/v8/src/mips/assembler-mips.cc | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/3rdparty/v8/src/mips/assembler-mips.cc b/src/3rdparty/v8/src/mips/assembler-mips.cc index f347fdc..4ce924d 100644 --- a/src/3rdparty/v8/src/mips/assembler-mips.cc +++ b/src/3rdparty/v8/src/mips/assembler-mips.cc @@ -273,8 +273,8 @@ static const int kMinimalBufferSize = 4 * KB; Assembler::Assembler(Isolate* arg_isolate, void* buffer, int buffer_size) : AssemblerBase(arg_isolate), - positions_recorder_(this), - emit_debug_code_(FLAG_debug_code) { + recorded_ast_id_(TypeFeedbackId::None()), + positions_recorder_(this) { if (buffer == NULL) { // Do our own buffer management. if (buffer_size <= kMinimalBufferSize) { @@ -579,17 +579,20 @@ bool Assembler::IsNop(Instr instr, unsigned int type) { // See Assembler::nop(type). ASSERT(type < 32); uint32_t opcode = GetOpcodeField(instr); + uint32_t function = GetFunctionField(instr); uint32_t rt = GetRt(instr); - uint32_t rs = GetRs(instr); + uint32_t rd = GetRd(instr); uint32_t sa = GetSa(instr); - // nop(type) == sll(zero_reg, zero_reg, type); - // Technically all these values will be 0 but - // this makes more sense to the reader. + // Traditional mips nop == sll(zero_reg, zero_reg, 0) + // When marking non-zero type, use sll(zero_reg, at, type) + // to avoid use of mips ssnop and ehb special encodings + // of the sll instruction. - bool ret = (opcode == SLL && - rt == static_cast<uint32_t>(ToNumber(zero_reg)) && - rs == static_cast<uint32_t>(ToNumber(zero_reg)) && + Register nop_rt_reg = (type == 0) ? zero_reg : at; + bool ret = (opcode == SPECIAL && function == SLL && + rd == static_cast<uint32_t>(ToNumber(zero_reg)) && + rt == static_cast<uint32_t>(ToNumber(nop_rt_reg)) && sa == type); return ret; @@ -2046,7 +2049,10 @@ void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { } ASSERT(buffer_space() >= kMaxRelocSize); // Too late to grow buffer here. if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { - RelocInfo reloc_info_with_ast_id(pc_, rmode, RecordedAstId(), NULL); + RelocInfo reloc_info_with_ast_id(pc_, + rmode, + RecordedAstId().ToInt(), + NULL); ClearRecordedAstId(); reloc_info_writer.Write(&reloc_info_with_ast_id); } else { |