Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/mips/macro-assembler-mips.cc

Issue 2762973004: [macro-assembler] Remove a bunch of unused functions. (Closed)
Patch Set: More. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/mips/macro-assembler-mips.h ('k') | src/mips64/macro-assembler-mips64.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits.h> // For LONG_MIN, LONG_MAX. 5 #include <limits.h> // For LONG_MIN, LONG_MAX.
6 6
7 #if V8_TARGET_ARCH_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/division-by-constant.h" 10 #include "src/base/division-by-constant.h"
(...skipping 4362 matching lines...) Expand 10 before | Expand all | Expand 10 after
4373 SmiCheckType smi_check_type) { 4373 SmiCheckType smi_check_type) {
4374 if (smi_check_type == DO_SMI_CHECK) { 4374 if (smi_check_type == DO_SMI_CHECK) {
4375 JumpIfSmi(obj, fail); 4375 JumpIfSmi(obj, fail);
4376 } 4376 }
4377 Label success; 4377 Label success;
4378 CompareMapAndBranch(obj, scratch, map, &success, ne, fail); 4378 CompareMapAndBranch(obj, scratch, map, &success, ne, fail);
4379 bind(&success); 4379 bind(&success);
4380 } 4380 }
4381 4381
4382 4382
4383 void MacroAssembler::DispatchWeakMap(Register obj, Register scratch1,
4384 Register scratch2, Handle<WeakCell> cell,
4385 Handle<Code> success,
4386 SmiCheckType smi_check_type) {
4387 Label fail;
4388 if (smi_check_type == DO_SMI_CHECK) {
4389 JumpIfSmi(obj, &fail);
4390 }
4391 lw(scratch1, FieldMemOperand(obj, HeapObject::kMapOffset));
4392 GetWeakValue(scratch2, cell);
4393 Jump(success, RelocInfo::CODE_TARGET, eq, scratch1, Operand(scratch2));
4394 bind(&fail);
4395 }
4396
4397
4398 void MacroAssembler::CheckMap(Register obj, 4383 void MacroAssembler::CheckMap(Register obj,
4399 Register scratch, 4384 Register scratch,
4400 Heap::RootListIndex index, 4385 Heap::RootListIndex index,
4401 Label* fail, 4386 Label* fail,
4402 SmiCheckType smi_check_type) { 4387 SmiCheckType smi_check_type) {
4403 if (smi_check_type == DO_SMI_CHECK) { 4388 if (smi_check_type == DO_SMI_CHECK) {
4404 JumpIfSmi(obj, fail); 4389 JumpIfSmi(obj, fail);
4405 } 4390 }
4406 lw(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); 4391 lw(scratch, FieldMemOperand(obj, HeapObject::kMapOffset));
4407 LoadRoot(at, index); 4392 LoadRoot(at, index);
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
4773 Label* fail) { 4758 Label* fail) {
4774 DCHECK(kNotStringTag != 0); 4759 DCHECK(kNotStringTag != 0);
4775 4760
4776 lw(scratch, FieldMemOperand(object, HeapObject::kMapOffset)); 4761 lw(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
4777 lbu(scratch, FieldMemOperand(scratch, Map::kInstanceTypeOffset)); 4762 lbu(scratch, FieldMemOperand(scratch, Map::kInstanceTypeOffset));
4778 And(scratch, scratch, Operand(kIsNotStringMask)); 4763 And(scratch, scratch, Operand(kIsNotStringMask));
4779 Branch(fail, ne, scratch, Operand(zero_reg)); 4764 Branch(fail, ne, scratch, Operand(zero_reg));
4780 } 4765 }
4781 4766
4782 4767
4783 void MacroAssembler::IsObjectNameType(Register object,
4784 Register scratch,
4785 Label* fail) {
4786 lw(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
4787 lbu(scratch, FieldMemOperand(scratch, Map::kInstanceTypeOffset));
4788 Branch(fail, hi, scratch, Operand(LAST_NAME_TYPE));
4789 }
4790
4791
4792 // --------------------------------------------------------------------------- 4768 // ---------------------------------------------------------------------------
4793 // Support functions. 4769 // Support functions.
4794 4770
4795 void MacroAssembler::GetObjectType(Register object, 4771 void MacroAssembler::GetObjectType(Register object,
4796 Register map, 4772 Register map,
4797 Register type_reg) { 4773 Register type_reg) {
4798 lw(map, FieldMemOperand(object, HeapObject::kMapOffset)); 4774 lw(map, FieldMemOperand(object, HeapObject::kMapOffset));
4799 lbu(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset)); 4775 lbu(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset));
4800 } 4776 }
4801 4777
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
5220 // ----------------------------------------------------------------------------- 5196 // -----------------------------------------------------------------------------
5221 // Debugging. 5197 // Debugging.
5222 5198
5223 void MacroAssembler::Assert(Condition cc, BailoutReason reason, 5199 void MacroAssembler::Assert(Condition cc, BailoutReason reason,
5224 Register rs, Operand rt) { 5200 Register rs, Operand rt) {
5225 if (emit_debug_code()) 5201 if (emit_debug_code())
5226 Check(cc, reason, rs, rt); 5202 Check(cc, reason, rs, rt);
5227 } 5203 }
5228 5204
5229 5205
5230 void MacroAssembler::AssertFastElements(Register elements) {
5231 if (emit_debug_code()) {
5232 DCHECK(!elements.is(at));
5233 Label ok;
5234 push(elements);
5235 lw(elements, FieldMemOperand(elements, HeapObject::kMapOffset));
5236 LoadRoot(at, Heap::kFixedArrayMapRootIndex);
5237 Branch(&ok, eq, elements, Operand(at));
5238 LoadRoot(at, Heap::kFixedDoubleArrayMapRootIndex);
5239 Branch(&ok, eq, elements, Operand(at));
5240 LoadRoot(at, Heap::kFixedCOWArrayMapRootIndex);
5241 Branch(&ok, eq, elements, Operand(at));
5242 Abort(kJSObjectWithFastElementsMapHasSlowElements);
5243 bind(&ok);
5244 pop(elements);
5245 }
5246 }
5247
5248 5206
5249 void MacroAssembler::Check(Condition cc, BailoutReason reason, 5207 void MacroAssembler::Check(Condition cc, BailoutReason reason,
5250 Register rs, Operand rt) { 5208 Register rs, Operand rt) {
5251 Label L; 5209 Label L;
5252 Branch(&L, cc, rs, rt); 5210 Branch(&L, cc, rs, rt);
5253 Abort(reason); 5211 Abort(reason);
5254 // Will not return here. 5212 // Will not return here.
5255 bind(&L); 5213 bind(&L);
5256 } 5214 }
5257 5215
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
5665 void MacroAssembler::JumpIfEitherSmi(Register reg1, 5623 void MacroAssembler::JumpIfEitherSmi(Register reg1,
5666 Register reg2, 5624 Register reg2,
5667 Label* on_either_smi) { 5625 Label* on_either_smi) {
5668 STATIC_ASSERT(kSmiTag == 0); 5626 STATIC_ASSERT(kSmiTag == 0);
5669 DCHECK_EQ(1, kSmiTagMask); 5627 DCHECK_EQ(1, kSmiTagMask);
5670 // Both Smi tags must be 1 (not Smi). 5628 // Both Smi tags must be 1 (not Smi).
5671 and_(at, reg1, reg2); 5629 and_(at, reg1, reg2);
5672 JumpIfSmi(at, on_either_smi); 5630 JumpIfSmi(at, on_either_smi);
5673 } 5631 }
5674 5632
5675 void MacroAssembler::AssertNotNumber(Register object) {
5676 if (emit_debug_code()) {
5677 STATIC_ASSERT(kSmiTag == 0);
5678 andi(at, object, kSmiTagMask);
5679 Check(ne, kOperandIsANumber, at, Operand(zero_reg));
5680 GetObjectType(object, t8, t8);
5681 Check(ne, kOperandIsNotANumber, t8, Operand(HEAP_NUMBER_TYPE));
5682 }
5683 }
5684
5685 void MacroAssembler::AssertNotSmi(Register object) { 5633 void MacroAssembler::AssertNotSmi(Register object) {
5686 if (emit_debug_code()) { 5634 if (emit_debug_code()) {
5687 STATIC_ASSERT(kSmiTag == 0); 5635 STATIC_ASSERT(kSmiTag == 0);
5688 andi(at, object, kSmiTagMask); 5636 andi(at, object, kSmiTagMask);
5689 Check(ne, kOperandIsASmi, at, Operand(zero_reg)); 5637 Check(ne, kOperandIsASmi, at, Operand(zero_reg));
5690 } 5638 }
5691 } 5639 }
5692 5640
5693 5641
5694 void MacroAssembler::AssertSmi(Register object) { 5642 void MacroAssembler::AssertSmi(Register object) {
5695 if (emit_debug_code()) { 5643 if (emit_debug_code()) {
5696 STATIC_ASSERT(kSmiTag == 0); 5644 STATIC_ASSERT(kSmiTag == 0);
5697 andi(at, object, kSmiTagMask); 5645 andi(at, object, kSmiTagMask);
5698 Check(eq, kOperandIsASmi, at, Operand(zero_reg)); 5646 Check(eq, kOperandIsASmi, at, Operand(zero_reg));
5699 } 5647 }
5700 } 5648 }
5701 5649
5702 5650
5703 void MacroAssembler::AssertString(Register object) {
5704 if (emit_debug_code()) {
5705 STATIC_ASSERT(kSmiTag == 0);
5706 SmiTst(object, t8);
5707 Check(ne, kOperandIsASmiAndNotAString, t8, Operand(zero_reg));
5708 GetObjectType(object, t8, t8);
5709 Check(lo, kOperandIsNotAString, t8, Operand(FIRST_NONSTRING_TYPE));
5710 }
5711 }
5712
5713
5714 void MacroAssembler::AssertName(Register object) {
5715 if (emit_debug_code()) {
5716 STATIC_ASSERT(kSmiTag == 0);
5717 SmiTst(object, t8);
5718 Check(ne, kOperandIsASmiAndNotAName, t8, Operand(zero_reg));
5719 GetObjectType(object, t8, t8);
5720 Check(le, kOperandIsNotAName, t8, Operand(LAST_NAME_TYPE));
5721 }
5722 }
5723
5724
5725 void MacroAssembler::AssertFunction(Register object) { 5651 void MacroAssembler::AssertFunction(Register object) {
5726 if (emit_debug_code()) { 5652 if (emit_debug_code()) {
5727 STATIC_ASSERT(kSmiTag == 0); 5653 STATIC_ASSERT(kSmiTag == 0);
5728 SmiTst(object, t8); 5654 SmiTst(object, t8);
5729 Check(ne, kOperandIsASmiAndNotAFunction, t8, Operand(zero_reg)); 5655 Check(ne, kOperandIsASmiAndNotAFunction, t8, Operand(zero_reg));
5730 GetObjectType(object, t8, t8); 5656 GetObjectType(object, t8, t8);
5731 Check(eq, kOperandIsNotAFunction, t8, Operand(JS_FUNCTION_TYPE)); 5657 Check(eq, kOperandIsNotAFunction, t8, Operand(JS_FUNCTION_TYPE));
5732 } 5658 }
5733 } 5659 }
5734 5660
(...skipping 12 matching lines...) Expand all
5747 if (emit_debug_code()) { 5673 if (emit_debug_code()) {
5748 STATIC_ASSERT(kSmiTag == 0); 5674 STATIC_ASSERT(kSmiTag == 0);
5749 SmiTst(object, t8); 5675 SmiTst(object, t8);
5750 Check(ne, kOperandIsASmiAndNotAGeneratorObject, t8, Operand(zero_reg)); 5676 Check(ne, kOperandIsASmiAndNotAGeneratorObject, t8, Operand(zero_reg));
5751 GetObjectType(object, t8, t8); 5677 GetObjectType(object, t8, t8);
5752 Check(eq, kOperandIsNotAGeneratorObject, t8, 5678 Check(eq, kOperandIsNotAGeneratorObject, t8,
5753 Operand(JS_GENERATOR_OBJECT_TYPE)); 5679 Operand(JS_GENERATOR_OBJECT_TYPE));
5754 } 5680 }
5755 } 5681 }
5756 5682
5757 void MacroAssembler::AssertReceiver(Register object) {
5758 if (emit_debug_code()) {
5759 STATIC_ASSERT(kSmiTag == 0);
5760 SmiTst(object, t8);
5761 Check(ne, kOperandIsASmiAndNotAReceiver, t8, Operand(zero_reg));
5762 GetObjectType(object, t8, t8);
5763 Check(ge, kOperandIsNotAReceiver, t8, Operand(FIRST_JS_RECEIVER_TYPE));
5764 }
5765 }
5766
5767 5683
5768 void MacroAssembler::AssertUndefinedOrAllocationSite(Register object, 5684 void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
5769 Register scratch) { 5685 Register scratch) {
5770 if (emit_debug_code()) { 5686 if (emit_debug_code()) {
5771 Label done_checking; 5687 Label done_checking;
5772 AssertNotSmi(object); 5688 AssertNotSmi(object);
5773 LoadRoot(scratch, Heap::kUndefinedValueRootIndex); 5689 LoadRoot(scratch, Heap::kUndefinedValueRootIndex);
5774 Branch(&done_checking, eq, object, Operand(scratch)); 5690 Branch(&done_checking, eq, object, Operand(scratch));
5775 lw(t8, FieldMemOperand(object, HeapObject::kMapOffset)); 5691 lw(t8, FieldMemOperand(object, HeapObject::kMapOffset));
5776 LoadRoot(scratch, Heap::kAllocationSiteMapRootIndex); 5692 LoadRoot(scratch, Heap::kAllocationSiteMapRootIndex);
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after
6539 if (mag.shift > 0) sra(result, result, mag.shift); 6455 if (mag.shift > 0) sra(result, result, mag.shift);
6540 srl(at, dividend, 31); 6456 srl(at, dividend, 31);
6541 Addu(result, result, Operand(at)); 6457 Addu(result, result, Operand(at));
6542 } 6458 }
6543 6459
6544 6460
6545 } // namespace internal 6461 } // namespace internal
6546 } // namespace v8 6462 } // namespace v8
6547 6463
6548 #endif // V8_TARGET_ARCH_MIPS 6464 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/macro-assembler-mips.h ('k') | src/mips64/macro-assembler-mips64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698