| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef V8_ARM64_CODE_STUBS_ARM64_H_ | 5 #ifndef V8_ARM64_CODE_STUBS_ARM64_H_ |
| 6 #define V8_ARM64_CODE_STUBS_ARM64_H_ | 6 #define V8_ARM64_CODE_STUBS_ARM64_H_ |
| 7 | 7 |
| 8 namespace v8 { | 8 namespace v8 { |
| 9 namespace internal { | 9 namespace internal { |
| 10 | 10 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 | 90 |
| 91 RecordWriteStub(uint32_t key, Isolate* isolate) | 91 RecordWriteStub(uint32_t key, Isolate* isolate) |
| 92 : PlatformCodeStub(key, isolate), regs_(object(), address(), value()) {} | 92 : PlatformCodeStub(key, isolate), regs_(object(), address(), value()) {} |
| 93 | 93 |
| 94 enum Mode { | 94 enum Mode { |
| 95 STORE_BUFFER_ONLY, | 95 STORE_BUFFER_ONLY, |
| 96 INCREMENTAL, | 96 INCREMENTAL, |
| 97 INCREMENTAL_COMPACTION | 97 INCREMENTAL_COMPACTION |
| 98 }; | 98 }; |
| 99 | 99 |
| 100 bool SometimesSetsUpAFrame() OVERRIDE { return false; } | 100 bool SometimesSetsUpAFrame() override { return false; } |
| 101 | 101 |
| 102 static Mode GetMode(Code* stub) { | 102 static Mode GetMode(Code* stub) { |
| 103 // Find the mode depending on the first two instructions. | 103 // Find the mode depending on the first two instructions. |
| 104 Instruction* instr1 = | 104 Instruction* instr1 = |
| 105 reinterpret_cast<Instruction*>(stub->instruction_start()); | 105 reinterpret_cast<Instruction*>(stub->instruction_start()); |
| 106 Instruction* instr2 = instr1->following(); | 106 Instruction* instr2 = instr1->following(); |
| 107 | 107 |
| 108 if (instr1->IsUncondBranchImm()) { | 108 if (instr1->IsUncondBranchImm()) { |
| 109 DCHECK(instr2->IsPCRelAddressing() && (instr2->Rd() == xzr.code())); | 109 DCHECK(instr2->IsPCRelAddressing() && (instr2->Rd() == xzr.code())); |
| 110 return INCREMENTAL; | 110 return INCREMENTAL; |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 } | 268 } |
| 269 | 269 |
| 270 friend class RecordWriteStub; | 270 friend class RecordWriteStub; |
| 271 }; | 271 }; |
| 272 | 272 |
| 273 enum OnNoNeedToInformIncrementalMarker { | 273 enum OnNoNeedToInformIncrementalMarker { |
| 274 kReturnOnNoNeedToInformIncrementalMarker, | 274 kReturnOnNoNeedToInformIncrementalMarker, |
| 275 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker | 275 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker |
| 276 }; | 276 }; |
| 277 | 277 |
| 278 inline Major MajorKey() const FINAL { return RecordWrite; } | 278 inline Major MajorKey() const final { return RecordWrite; } |
| 279 | 279 |
| 280 void Generate(MacroAssembler* masm) OVERRIDE; | 280 void Generate(MacroAssembler* masm) override; |
| 281 void GenerateIncremental(MacroAssembler* masm, Mode mode); | 281 void GenerateIncremental(MacroAssembler* masm, Mode mode); |
| 282 void CheckNeedsToInformIncrementalMarker( | 282 void CheckNeedsToInformIncrementalMarker( |
| 283 MacroAssembler* masm, | 283 MacroAssembler* masm, |
| 284 OnNoNeedToInformIncrementalMarker on_no_need, | 284 OnNoNeedToInformIncrementalMarker on_no_need, |
| 285 Mode mode); | 285 Mode mode); |
| 286 void InformIncrementalMarker(MacroAssembler* masm); | 286 void InformIncrementalMarker(MacroAssembler* masm); |
| 287 | 287 |
| 288 void Activate(Code* code) OVERRIDE { | 288 void Activate(Code* code) override { |
| 289 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); | 289 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); |
| 290 } | 290 } |
| 291 | 291 |
| 292 Register object() const { | 292 Register object() const { |
| 293 return Register::from_code(ObjectBits::decode(minor_key_)); | 293 return Register::from_code(ObjectBits::decode(minor_key_)); |
| 294 } | 294 } |
| 295 | 295 |
| 296 Register value() const { | 296 Register value() const { |
| 297 return Register::from_code(ValueBits::decode(minor_key_)); | 297 return Register::from_code(ValueBits::decode(minor_key_)); |
| 298 } | 298 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 321 | 321 |
| 322 | 322 |
| 323 // Helper to call C++ functions from generated code. The caller must prepare | 323 // Helper to call C++ functions from generated code. The caller must prepare |
| 324 // the exit frame before doing the call with GenerateCall. | 324 // the exit frame before doing the call with GenerateCall. |
| 325 class DirectCEntryStub: public PlatformCodeStub { | 325 class DirectCEntryStub: public PlatformCodeStub { |
| 326 public: | 326 public: |
| 327 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} | 327 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
| 328 void GenerateCall(MacroAssembler* masm, Register target); | 328 void GenerateCall(MacroAssembler* masm, Register target); |
| 329 | 329 |
| 330 private: | 330 private: |
| 331 bool NeedsImmovableCode() OVERRIDE { return true; } | 331 bool NeedsImmovableCode() override { return true; } |
| 332 | 332 |
| 333 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); | 333 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); |
| 334 DEFINE_PLATFORM_CODE_STUB(DirectCEntry, PlatformCodeStub); | 334 DEFINE_PLATFORM_CODE_STUB(DirectCEntry, PlatformCodeStub); |
| 335 }; | 335 }; |
| 336 | 336 |
| 337 | 337 |
| 338 class NameDictionaryLookupStub: public PlatformCodeStub { | 338 class NameDictionaryLookupStub: public PlatformCodeStub { |
| 339 public: | 339 public: |
| 340 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; | 340 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; |
| 341 | 341 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 353 Register scratch0); | 353 Register scratch0); |
| 354 | 354 |
| 355 static void GeneratePositiveLookup(MacroAssembler* masm, | 355 static void GeneratePositiveLookup(MacroAssembler* masm, |
| 356 Label* miss, | 356 Label* miss, |
| 357 Label* done, | 357 Label* done, |
| 358 Register elements, | 358 Register elements, |
| 359 Register name, | 359 Register name, |
| 360 Register scratch1, | 360 Register scratch1, |
| 361 Register scratch2); | 361 Register scratch2); |
| 362 | 362 |
| 363 bool SometimesSetsUpAFrame() OVERRIDE { return false; } | 363 bool SometimesSetsUpAFrame() override { return false; } |
| 364 | 364 |
| 365 private: | 365 private: |
| 366 static const int kInlinedProbes = 4; | 366 static const int kInlinedProbes = 4; |
| 367 static const int kTotalProbes = 20; | 367 static const int kTotalProbes = 20; |
| 368 | 368 |
| 369 static const int kCapacityOffset = | 369 static const int kCapacityOffset = |
| 370 NameDictionary::kHeaderSize + | 370 NameDictionary::kHeaderSize + |
| 371 NameDictionary::kCapacityIndex * kPointerSize; | 371 NameDictionary::kCapacityIndex * kPointerSize; |
| 372 | 372 |
| 373 static const int kElementsStartOffset = | 373 static const int kElementsStartOffset = |
| 374 NameDictionary::kHeaderSize + | 374 NameDictionary::kHeaderSize + |
| 375 NameDictionary::kElementsStartIndex * kPointerSize; | 375 NameDictionary::kElementsStartIndex * kPointerSize; |
| 376 | 376 |
| 377 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } | 377 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } |
| 378 | 378 |
| 379 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; | 379 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; |
| 380 | 380 |
| 381 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); | 381 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); |
| 382 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); | 382 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); |
| 383 }; | 383 }; |
| 384 | 384 |
| 385 } } // namespace v8::internal | 385 } } // namespace v8::internal |
| 386 | 386 |
| 387 #endif // V8_ARM64_CODE_STUBS_ARM64_H_ | 387 #endif // V8_ARM64_CODE_STUBS_ARM64_H_ |
| OLD | NEW |