| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #if V8_TARGET_ARCH_MIPS | 5 #if V8_TARGET_ARCH_MIPS |
| 6 | 6 |
| 7 #include "src/ic/handler-compiler.h" | 7 #include "src/ic/handler-compiler.h" |
| 8 | 8 |
| 9 #include "src/api-arguments.h" | 9 #include "src/api-arguments.h" |
| 10 #include "src/field-type.h" | 10 #include "src/field-type.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // Restore context register. | 100 // Restore context register. |
| 101 __ Pop(cp, v0); | 101 __ Pop(cp, v0); |
| 102 } | 102 } |
| 103 __ Ret(); | 103 __ Ret(); |
| 104 } | 104 } |
| 105 | 105 |
| 106 | 106 |
| 107 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector, | 107 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector, |
| 108 Register slot) { | 108 Register slot) { |
| 109 MacroAssembler* masm = this->masm(); | 109 MacroAssembler* masm = this->masm(); |
| 110 __ Push(vector, slot); | 110 STATIC_ASSERT(LoadWithVectorDescriptor::kSlot < |
| 111 LoadWithVectorDescriptor::kVector); |
| 112 STATIC_ASSERT(StoreWithVectorDescriptor::kSlot < |
| 113 StoreWithVectorDescriptor::kVector); |
| 114 STATIC_ASSERT(StoreTransitionDescriptor::kSlot < |
| 115 StoreTransitionDescriptor::kVector); |
| 116 __ Push(slot, vector); |
| 111 } | 117 } |
| 112 | 118 |
| 113 | 119 |
| 114 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) { | 120 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) { |
| 115 MacroAssembler* masm = this->masm(); | 121 MacroAssembler* masm = this->masm(); |
| 116 __ Pop(vector, slot); | 122 __ Pop(slot, vector); |
| 117 } | 123 } |
| 118 | 124 |
| 119 | 125 |
| 120 void PropertyHandlerCompiler::DiscardVectorAndSlot() { | 126 void PropertyHandlerCompiler::DiscardVectorAndSlot() { |
| 121 MacroAssembler* masm = this->masm(); | 127 MacroAssembler* masm = this->masm(); |
| 122 // Remove vector and slot. | 128 // Remove vector and slot. |
| 123 __ Addu(sp, sp, Operand(2 * kPointerSize)); | 129 __ Addu(sp, sp, Operand(2 * kPointerSize)); |
| 124 } | 130 } |
| 125 | 131 |
| 132 void PropertyHandlerCompiler::PushReturnAddress(Register tmp) { UNREACHABLE(); } |
| 133 |
| 134 void PropertyHandlerCompiler::PopReturnAddress(Register tmp) { UNREACHABLE(); } |
| 126 | 135 |
| 127 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup( | 136 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup( |
| 128 MacroAssembler* masm, Label* miss_label, Register receiver, | 137 MacroAssembler* masm, Label* miss_label, Register receiver, |
| 129 Handle<Name> name, Register scratch0, Register scratch1) { | 138 Handle<Name> name, Register scratch0, Register scratch1) { |
| 130 DCHECK(name->IsUniqueName()); | 139 DCHECK(name->IsUniqueName()); |
| 131 DCHECK(!receiver.is(scratch0)); | 140 DCHECK(!receiver.is(scratch0)); |
| 132 Counters* counters = masm->isolate()->counters(); | 141 Counters* counters = masm->isolate()->counters(); |
| 133 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1); | 142 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1); |
| 134 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); | 143 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); |
| 135 | 144 |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 __ li(this->name(), Operand(name)); | 355 __ li(this->name(), Operand(name)); |
| 347 } | 356 } |
| 348 } | 357 } |
| 349 | 358 |
| 350 | 359 |
| 351 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { | 360 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { |
| 352 __ li(this->name(), Operand(name)); | 361 __ li(this->name(), Operand(name)); |
| 353 } | 362 } |
| 354 | 363 |
| 355 | 364 |
| 356 void NamedStoreHandlerCompiler::RearrangeVectorAndSlot( | |
| 357 Register current_map, Register destination_map) { | |
| 358 DCHECK(false); // Not implemented. | |
| 359 } | |
| 360 | |
| 361 | |
| 362 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition, | 365 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition, |
| 363 Register map_reg, | 366 Register map_reg, |
| 364 Register scratch, | 367 Register scratch, |
| 365 Label* miss) { | 368 Label* miss) { |
| 366 Handle<WeakCell> cell = Map::WeakCellForMap(transition); | 369 Handle<WeakCell> cell = Map::WeakCellForMap(transition); |
| 367 DCHECK(!map_reg.is(scratch)); | 370 DCHECK(!map_reg.is(scratch)); |
| 368 __ LoadWeakValue(map_reg, cell, miss); | 371 __ LoadWeakValue(map_reg, cell, miss); |
| 369 if (transition->CanBeDeprecated()) { | 372 if (transition->CanBeDeprecated()) { |
| 370 __ lw(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset)); | 373 __ lw(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset)); |
| 371 __ And(at, scratch, Operand(Map::Deprecated::kMask)); | 374 __ And(at, scratch, Operand(Map::Deprecated::kMask)); |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 // Return the generated code. | 685 // Return the generated code. |
| 683 return GetCode(kind(), name); | 686 return GetCode(kind(), name); |
| 684 } | 687 } |
| 685 | 688 |
| 686 | 689 |
| 687 #undef __ | 690 #undef __ |
| 688 } // namespace internal | 691 } // namespace internal |
| 689 } // namespace v8 | 692 } // namespace v8 |
| 690 | 693 |
| 691 #endif // V8_TARGET_ARCH_MIPS | 694 #endif // V8_TARGET_ARCH_MIPS |
| OLD | NEW |