OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef RUNTIME_VM_ASSEMBLER_ARM64_H_ | 5 #ifndef RUNTIME_VM_ASSEMBLER_ARM64_H_ |
6 #define RUNTIME_VM_ASSEMBLER_ARM64_H_ | 6 #define RUNTIME_VM_ASSEMBLER_ARM64_H_ |
7 | 7 |
8 #ifndef RUNTIME_VM_ASSEMBLER_H_ | 8 #ifndef RUNTIME_VM_ASSEMBLER_H_ |
9 #error Do not include assembler_arm64.h directly; use assembler.h instead. | 9 #error Do not include assembler_arm64.h directly; use assembler.h instead. |
10 #endif | 10 #endif |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 void Drop(intptr_t stack_elements) { | 460 void Drop(intptr_t stack_elements) { |
461 add(SP, SP, Operand(stack_elements * kWordSize)); | 461 add(SP, SP, Operand(stack_elements * kWordSize)); |
462 } | 462 } |
463 | 463 |
464 void Bind(Label* label); | 464 void Bind(Label* label); |
465 void Jump(Label* label) { b(label); } | 465 void Jump(Label* label) { b(label); } |
466 | 466 |
467 // Misc. functionality | 467 // Misc. functionality |
468 intptr_t CodeSize() const { return buffer_.Size(); } | 468 intptr_t CodeSize() const { return buffer_.Size(); } |
469 intptr_t prologue_offset() const { return prologue_offset_; } | 469 intptr_t prologue_offset() const { return prologue_offset_; } |
| 470 bool has_single_entry_point() const { return has_single_entry_point_; } |
470 | 471 |
471 // Count the fixups that produce a pointer offset, without processing | 472 // Count the fixups that produce a pointer offset, without processing |
472 // the fixups. On ARM64 there are no pointers in code. | 473 // the fixups. On ARM64 there are no pointers in code. |
473 intptr_t CountPointerOffsets() const { return 0; } | 474 intptr_t CountPointerOffsets() const { return 0; } |
474 | 475 |
475 const ZoneGrowableArray<intptr_t>& GetPointerOffsets() const { | 476 const ZoneGrowableArray<intptr_t>& GetPointerOffsets() const { |
476 ASSERT(buffer_.pointer_offsets().length() == 0); // No pointers in code. | 477 ASSERT(buffer_.pointer_offsets().length() == 0); // No pointers in code. |
477 return buffer_.pointer_offsets(); | 478 return buffer_.pointer_offsets(); |
478 } | 479 } |
479 | 480 |
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1356 | 1357 |
1357 void EnterCallRuntimeFrame(intptr_t frame_size); | 1358 void EnterCallRuntimeFrame(intptr_t frame_size); |
1358 void LeaveCallRuntimeFrame(); | 1359 void LeaveCallRuntimeFrame(); |
1359 void CallRuntime(const RuntimeEntry& entry, intptr_t argument_count); | 1360 void CallRuntime(const RuntimeEntry& entry, intptr_t argument_count); |
1360 | 1361 |
1361 // Set up a stub frame so that the stack traversal code can easily identify | 1362 // Set up a stub frame so that the stack traversal code can easily identify |
1362 // a stub frame. | 1363 // a stub frame. |
1363 void EnterStubFrame(); | 1364 void EnterStubFrame(); |
1364 void LeaveStubFrame(); | 1365 void LeaveStubFrame(); |
1365 | 1366 |
1366 void NoMonomorphicCheckedEntry(); | |
1367 void MonomorphicCheckedEntry(); | 1367 void MonomorphicCheckedEntry(); |
1368 | 1368 |
1369 void UpdateAllocationStats(intptr_t cid, | 1369 void UpdateAllocationStats(intptr_t cid, |
1370 Heap::Space space); | 1370 Heap::Space space); |
1371 | 1371 |
1372 void UpdateAllocationStatsWithSize(intptr_t cid, | 1372 void UpdateAllocationStatsWithSize(intptr_t cid, |
1373 Register size_reg, | 1373 Register size_reg, |
1374 Heap::Space space); | 1374 Heap::Space space); |
1375 | 1375 |
1376 // If allocation tracing for |cid| is enabled, will jump to |trace| label, | 1376 // If allocation tracing for |cid| is enabled, will jump to |trace| label, |
(...skipping 26 matching lines...) Expand all Loading... |
1403 intptr_t index) const; | 1403 intptr_t index) const; |
1404 Address ElementAddressForRegIndex(bool is_load, | 1404 Address ElementAddressForRegIndex(bool is_load, |
1405 bool is_external, | 1405 bool is_external, |
1406 intptr_t cid, | 1406 intptr_t cid, |
1407 intptr_t index_scale, | 1407 intptr_t index_scale, |
1408 Register array, | 1408 Register array, |
1409 Register index); | 1409 Register index); |
1410 | 1410 |
1411 private: | 1411 private: |
1412 AssemblerBuffer buffer_; // Contains position independent code. | 1412 AssemblerBuffer buffer_; // Contains position independent code. |
1413 | |
1414 ObjectPoolWrapper object_pool_wrapper_; | 1413 ObjectPoolWrapper object_pool_wrapper_; |
1415 | |
1416 int32_t prologue_offset_; | 1414 int32_t prologue_offset_; |
1417 | 1415 bool has_single_entry_point_; |
1418 bool use_far_branches_; | 1416 bool use_far_branches_; |
1419 | 1417 |
1420 class CodeComment : public ZoneAllocated { | 1418 class CodeComment : public ZoneAllocated { |
1421 public: | 1419 public: |
1422 CodeComment(intptr_t pc_offset, const String& comment) | 1420 CodeComment(intptr_t pc_offset, const String& comment) |
1423 : pc_offset_(pc_offset), comment_(comment) { } | 1421 : pc_offset_(pc_offset), comment_(comment) { } |
1424 | 1422 |
1425 intptr_t pc_offset() const { return pc_offset_; } | 1423 intptr_t pc_offset() const { return pc_offset_; } |
1426 const String& comment() const { return comment_; } | 1424 const String& comment() const { return comment_; } |
1427 | 1425 |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 Register value, | 1951 Register value, |
1954 Label* no_update); | 1952 Label* no_update); |
1955 | 1953 |
1956 DISALLOW_ALLOCATION(); | 1954 DISALLOW_ALLOCATION(); |
1957 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1955 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1958 }; | 1956 }; |
1959 | 1957 |
1960 } // namespace dart | 1958 } // namespace dart |
1961 | 1959 |
1962 #endif // RUNTIME_VM_ASSEMBLER_ARM64_H_ | 1960 #endif // RUNTIME_VM_ASSEMBLER_ARM64_H_ |
OLD | NEW |