X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fv8%2Fsrc%2Farm64%2Fmacro-assembler-arm64-inl.h;h=f8286797bdb44dfa4b556072f903553326cfcc5a;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=d660d360161f766b35a78cacc2c56690b6e87348;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/v8/src/arm64/macro-assembler-arm64-inl.h b/src/v8/src/arm64/macro-assembler-arm64-inl.h index d660d36..f828679 100644 --- a/src/v8/src/arm64/macro-assembler-arm64-inl.h +++ b/src/v8/src/arm64/macro-assembler-arm64-inl.h @@ -1,29 +1,6 @@ // Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ #define V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ @@ -319,13 +296,6 @@ LS_MACRO_LIST(DEFINE_FUNCTION) #undef DEFINE_FUNCTION -void MacroAssembler::Adr(const Register& rd, Label* label) { - ASSERT(allow_macro_instructions_); - ASSERT(!rd.IsZero()); - adr(rd, label); -} - - void MacroAssembler::Asr(const Register& rd, const Register& rn, unsigned shift) { @@ -833,6 +803,12 @@ void MacroAssembler::Frinta(const FPRegister& fd, const FPRegister& fn) { } +void MacroAssembler::Frintm(const FPRegister& fd, const FPRegister& fn) { + ASSERT(allow_macro_instructions_); + frintm(fd, fn); +} + + void MacroAssembler::Frintn(const FPRegister& fd, const FPRegister& fn) { ASSERT(allow_macro_instructions_); frintn(fd, fn); @@ -1409,6 +1385,30 @@ void MacroAssembler::JumpIfBothNotSmi(Register value1, } +void MacroAssembler::ObjectTag(Register tagged_obj, Register obj) { + STATIC_ASSERT(kHeapObjectTag == 1); + if (emit_debug_code()) { + Label ok; + Tbz(obj, 0, &ok); + Abort(kObjectTagged); + Bind(&ok); + } + Orr(tagged_obj, obj, kHeapObjectTag); +} + + +void MacroAssembler::ObjectUntag(Register untagged_obj, Register obj) { + STATIC_ASSERT(kHeapObjectTag == 1); + if (emit_debug_code()) { + Label ok; + Tbnz(obj, 0, &ok); + Abort(kObjectNotTagged); + Bind(&ok); + } + Bic(untagged_obj, obj, kHeapObjectTag); +} + + void MacroAssembler::IsObjectNameType(Register object, Register type, Label* fail) { @@ -1489,12 +1489,9 @@ void MacroAssembler::Claim(uint64_t count, uint64_t unit_size) { void MacroAssembler::Claim(const Register& count, uint64_t unit_size) { + if (unit_size == 0) return; ASSERT(IsPowerOf2(unit_size)); - if (unit_size == 0) { - return; - } - const int shift = CountTrailingZeros(unit_size, kXRegSizeInBits); const Operand size(count, LSL, shift); @@ -1511,7 +1508,7 @@ void MacroAssembler::Claim(const Register& count, uint64_t unit_size) { void MacroAssembler::ClaimBySMI(const Register& count_smi, uint64_t unit_size) { - ASSERT(IsPowerOf2(unit_size)); + ASSERT(unit_size == 0 || IsPowerOf2(unit_size)); const int shift = CountTrailingZeros(unit_size, kXRegSizeInBits) - kSmiShift; const Operand size(count_smi, (shift >= 0) ? (LSL) : (LSR), @@ -1550,12 +1547,9 @@ void MacroAssembler::Drop(uint64_t count, uint64_t unit_size) { void MacroAssembler::Drop(const Register& count, uint64_t unit_size) { + if (unit_size == 0) return; ASSERT(IsPowerOf2(unit_size)); - if (unit_size == 0) { - return; - } - const int shift = CountTrailingZeros(unit_size, kXRegSizeInBits); const Operand size(count, LSL, shift); @@ -1575,7 +1569,7 @@ void MacroAssembler::Drop(const Register& count, uint64_t unit_size) { void MacroAssembler::DropBySMI(const Register& count_smi, uint64_t unit_size) { - ASSERT(IsPowerOf2(unit_size)); + ASSERT(unit_size == 0 || IsPowerOf2(unit_size)); const int shift = CountTrailingZeros(unit_size, kXRegSizeInBits) - kSmiShift; const Operand size(count_smi, (shift >= 0) ? (LSL) : (LSR),