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 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 class StoreRegistersStateStub: public PlatformCodeStub { | 56 class StoreRegistersStateStub: public PlatformCodeStub { |
57 public: | 57 public: |
58 explicit StoreRegistersStateStub(Isolate* isolate) | 58 explicit StoreRegistersStateStub(Isolate* isolate) |
59 : PlatformCodeStub(isolate) {} | 59 : PlatformCodeStub(isolate) {} |
60 | 60 |
61 static Register to_be_pushed_lr() { return ip0; } | 61 static Register to_be_pushed_lr() { return ip0; } |
62 | 62 |
63 static void GenerateAheadOfTime(Isolate* isolate); | 63 static void GenerateAheadOfTime(Isolate* isolate); |
64 | 64 |
65 private: | 65 private: |
66 Major MajorKey() const { return StoreRegistersState; } | 66 virtual inline Major MajorKey() const FINAL OVERRIDE; |
67 | 67 |
68 void Generate(MacroAssembler* masm); | 68 void Generate(MacroAssembler* masm); |
69 | 69 |
70 DISALLOW_COPY_AND_ASSIGN(StoreRegistersStateStub); | 70 DISALLOW_COPY_AND_ASSIGN(StoreRegistersStateStub); |
71 }; | 71 }; |
72 | 72 |
73 | 73 |
74 class RestoreRegistersStateStub: public PlatformCodeStub { | 74 class RestoreRegistersStateStub: public PlatformCodeStub { |
75 public: | 75 public: |
76 explicit RestoreRegistersStateStub(Isolate* isolate) | 76 explicit RestoreRegistersStateStub(Isolate* isolate) |
77 : PlatformCodeStub(isolate) {} | 77 : PlatformCodeStub(isolate) {} |
78 | 78 |
79 static void GenerateAheadOfTime(Isolate* isolate); | 79 static void GenerateAheadOfTime(Isolate* isolate); |
| 80 |
80 private: | 81 private: |
81 Major MajorKey() const { return RestoreRegistersState; } | 82 virtual inline Major MajorKey() const FINAL OVERRIDE; |
82 | 83 |
83 void Generate(MacroAssembler* masm); | 84 void Generate(MacroAssembler* masm); |
84 | 85 |
85 DISALLOW_COPY_AND_ASSIGN(RestoreRegistersStateStub); | 86 DISALLOW_COPY_AND_ASSIGN(RestoreRegistersStateStub); |
86 }; | 87 }; |
87 | 88 |
88 | 89 |
89 class RecordWriteStub: public PlatformCodeStub { | 90 class RecordWriteStub: public PlatformCodeStub { |
90 public: | 91 public: |
91 // Stub to record the write of 'value' at 'address' in 'object'. | 92 // Stub to record the write of 'value' at 'address' in 'object'. |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 } | 287 } |
287 | 288 |
288 friend class RecordWriteStub; | 289 friend class RecordWriteStub; |
289 }; | 290 }; |
290 | 291 |
291 enum OnNoNeedToInformIncrementalMarker { | 292 enum OnNoNeedToInformIncrementalMarker { |
292 kReturnOnNoNeedToInformIncrementalMarker, | 293 kReturnOnNoNeedToInformIncrementalMarker, |
293 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker | 294 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker |
294 }; | 295 }; |
295 | 296 |
296 Major MajorKey() const { return RecordWrite; } | 297 virtual inline Major MajorKey() const FINAL OVERRIDE; |
297 | 298 |
298 void Generate(MacroAssembler* masm); | 299 void Generate(MacroAssembler* masm); |
299 void GenerateIncremental(MacroAssembler* masm, Mode mode); | 300 void GenerateIncremental(MacroAssembler* masm, Mode mode); |
300 void CheckNeedsToInformIncrementalMarker( | 301 void CheckNeedsToInformIncrementalMarker( |
301 MacroAssembler* masm, | 302 MacroAssembler* masm, |
302 OnNoNeedToInformIncrementalMarker on_no_need, | 303 OnNoNeedToInformIncrementalMarker on_no_need, |
303 Mode mode); | 304 Mode mode); |
304 void InformIncrementalMarker(MacroAssembler* masm); | 305 void InformIncrementalMarker(MacroAssembler* masm); |
305 | 306 |
306 void Activate(Code* code) { | 307 void Activate(Code* code) { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 | 341 |
341 // Helper to call C++ functions from generated code. The caller must prepare | 342 // Helper to call C++ functions from generated code. The caller must prepare |
342 // the exit frame before doing the call with GenerateCall. | 343 // the exit frame before doing the call with GenerateCall. |
343 class DirectCEntryStub: public PlatformCodeStub { | 344 class DirectCEntryStub: public PlatformCodeStub { |
344 public: | 345 public: |
345 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} | 346 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
346 void Generate(MacroAssembler* masm); | 347 void Generate(MacroAssembler* masm); |
347 void GenerateCall(MacroAssembler* masm, Register target); | 348 void GenerateCall(MacroAssembler* masm, Register target); |
348 | 349 |
349 private: | 350 private: |
350 Major MajorKey() const { return DirectCEntry; } | 351 virtual inline Major MajorKey() const FINAL OVERRIDE; |
351 | 352 |
352 bool NeedsImmovableCode() { return true; } | 353 bool NeedsImmovableCode() { return true; } |
353 | 354 |
354 DISALLOW_COPY_AND_ASSIGN(DirectCEntryStub); | 355 DISALLOW_COPY_AND_ASSIGN(DirectCEntryStub); |
355 }; | 356 }; |
356 | 357 |
357 | 358 |
358 class NameDictionaryLookupStub: public PlatformCodeStub { | 359 class NameDictionaryLookupStub: public PlatformCodeStub { |
359 public: | 360 public: |
360 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; | 361 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; |
(...skipping 28 matching lines...) Expand all Loading... |
389 static const int kTotalProbes = 20; | 390 static const int kTotalProbes = 20; |
390 | 391 |
391 static const int kCapacityOffset = | 392 static const int kCapacityOffset = |
392 NameDictionary::kHeaderSize + | 393 NameDictionary::kHeaderSize + |
393 NameDictionary::kCapacityIndex * kPointerSize; | 394 NameDictionary::kCapacityIndex * kPointerSize; |
394 | 395 |
395 static const int kElementsStartOffset = | 396 static const int kElementsStartOffset = |
396 NameDictionary::kHeaderSize + | 397 NameDictionary::kHeaderSize + |
397 NameDictionary::kElementsStartIndex * kPointerSize; | 398 NameDictionary::kElementsStartIndex * kPointerSize; |
398 | 399 |
399 Major MajorKey() const { return NameDictionaryLookup; } | 400 virtual inline Major MajorKey() const FINAL OVERRIDE; |
400 | 401 |
401 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } | 402 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } |
402 | 403 |
403 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; | 404 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; |
404 | 405 |
405 DISALLOW_COPY_AND_ASSIGN(NameDictionaryLookupStub); | 406 DISALLOW_COPY_AND_ASSIGN(NameDictionaryLookupStub); |
406 }; | 407 }; |
407 | 408 |
408 } } // namespace v8::internal | 409 } } // namespace v8::internal |
409 | 410 |
410 #endif // V8_ARM64_CODE_STUBS_ARM64_H_ | 411 #endif // V8_ARM64_CODE_STUBS_ARM64_H_ |
OLD | NEW |