| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 VM_CONSTANTS_DBC_H_ | 5 #ifndef VM_CONSTANTS_DBC_H_ |
| 6 #define VM_CONSTANTS_DBC_H_ | 6 #define VM_CONSTANTS_DBC_H_ |
| 7 | 7 |
| 8 #include "platform/globals.h" | 8 #include "platform/globals.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 // | 389 // |
| 390 // - LoadIndexedExternal{Int8, Uint8} rA, rB, rC | 390 // - LoadIndexedExternal{Int8, Uint8} rA, rB, rC |
| 391 // | 391 // |
| 392 // Loads from the external typed data array FP[rB] at index FP[rC] into | 392 // Loads from the external typed data array FP[rB] at index FP[rC] into |
| 393 // FP[rA]. No typechecking is done. | 393 // FP[rA]. No typechecking is done. |
| 394 // | 394 // |
| 395 // - StoreField rA, B, rC | 395 // - StoreField rA, B, rC |
| 396 // | 396 // |
| 397 // Store value FP[rC] into object FP[rA] at offset (in words) B. | 397 // Store value FP[rC] into object FP[rA] at offset (in words) B. |
| 398 // | 398 // |
| 399 // - StoreFieldExt rA, rD |
| 400 // |
| 401 // Store value FP[rD] into object FP[rA] at offset (in words) |
| 402 // stored in the following Nop instruction. Used to access fields with |
| 403 // large offsets. |
| 404 // |
| 399 // - StoreFieldTOS D | 405 // - StoreFieldTOS D |
| 400 // | 406 // |
| 401 // Store value SP[0] into object SP[-1] at offset (in words) D. | 407 // Store value SP[0] into object SP[-1] at offset (in words) D. |
| 402 // | 408 // |
| 403 // - LoadField rA, rB, C | 409 // - LoadField rA, rB, C |
| 404 // | 410 // |
| 405 // Load value at offset (in words) C from object FP[rB] into FP[rA]. | 411 // Load value at offset (in words) C from object FP[rB] into FP[rA]. |
| 406 // | 412 // |
| 413 // - LoadFieldExt rA, rD |
| 414 // |
| 415 // Load value from object FP[rD] at offset (in words) stored in the |
| 416 // following Nop instruction into FP[rA]. Used to access fields with |
| 417 // large offsets. |
| 418 // |
| 407 // - LoadUntagged rA, rB, C | 419 // - LoadUntagged rA, rB, C |
| 408 // | 420 // |
| 409 // Like LoadField, but assumes that FP[rB] is untagged. | 421 // Like LoadField, but assumes that FP[rB] is untagged. |
| 410 // | 422 // |
| 411 // - LoadFieldTOS D | 423 // - LoadFieldTOS D |
| 412 // | 424 // |
| 413 // Push value at offset (in words) D from object SP[0]. | 425 // Push value at offset (in words) D from object SP[0]. |
| 414 // | 426 // |
| 415 // - BooleanNegateTOS | 427 // - BooleanNegateTOS |
| 416 // | 428 // |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 V(LoadIndexedUint32, A_B_C, reg, reg, reg) \ | 763 V(LoadIndexedUint32, A_B_C, reg, reg, reg) \ |
| 752 V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \ | 764 V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \ |
| 753 V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \ | 765 V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \ |
| 754 V(LoadIndexedFloat32, A_B_C, reg, reg, reg) \ | 766 V(LoadIndexedFloat32, A_B_C, reg, reg, reg) \ |
| 755 V(LoadIndexed4Float32, A_B_C, reg, reg, reg) \ | 767 V(LoadIndexed4Float32, A_B_C, reg, reg, reg) \ |
| 756 V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \ | 768 V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \ |
| 757 V(LoadIndexed8Float64, A_B_C, reg, reg, reg) \ | 769 V(LoadIndexed8Float64, A_B_C, reg, reg, reg) \ |
| 758 V(LoadIndexedOneByteString, A_B_C, reg, reg, reg) \ | 770 V(LoadIndexedOneByteString, A_B_C, reg, reg, reg) \ |
| 759 V(LoadIndexedTwoByteString, A_B_C, reg, reg, reg) \ | 771 V(LoadIndexedTwoByteString, A_B_C, reg, reg, reg) \ |
| 760 V(StoreField, A_B_C, reg, num, reg) \ | 772 V(StoreField, A_B_C, reg, num, reg) \ |
| 773 V(StoreFieldExt, A_D, reg, reg, ___) \ |
| 761 V(StoreFieldTOS, D, num, ___, ___) \ | 774 V(StoreFieldTOS, D, num, ___, ___) \ |
| 762 V(LoadField, A_B_C, reg, reg, num) \ | 775 V(LoadField, A_B_C, reg, reg, num) \ |
| 776 V(LoadFieldExt, A_D, reg, reg, ___) \ |
| 763 V(LoadUntagged, A_B_C, reg, reg, num) \ | 777 V(LoadUntagged, A_B_C, reg, reg, num) \ |
| 764 V(LoadFieldTOS, D, num, ___, ___) \ | 778 V(LoadFieldTOS, D, num, ___, ___) \ |
| 765 V(BooleanNegateTOS, 0, ___, ___, ___) \ | 779 V(BooleanNegateTOS, 0, ___, ___, ___) \ |
| 766 V(BooleanNegate, A_D, reg, reg, ___) \ | 780 V(BooleanNegate, A_D, reg, reg, ___) \ |
| 767 V(Throw, A, num, ___, ___) \ | 781 V(Throw, A, num, ___, ___) \ |
| 768 V(Entry, A_B_C, num, num, num) \ | 782 V(Entry, A_B_C, num, num, num) \ |
| 769 V(EntryOptional, A_B_C, num, num, num) \ | 783 V(EntryOptional, A_B_C, num, num, num) \ |
| 770 V(EntryOptimized, A_D, num, num, ___) \ | 784 V(EntryOptimized, A_D, num, num, ___) \ |
| 771 V(Frame, D, num, ___, ___) \ | 785 V(Frame, D, num, ___, ___) \ |
| 772 V(SetFrame, A, num, ___, num) \ | 786 V(SetFrame, A, num, ___, num) \ |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 | 941 |
| 928 // After a comparison, the condition NEXT_IS_TRUE means the following | 942 // After a comparison, the condition NEXT_IS_TRUE means the following |
| 929 // instruction is executed if the comparision is true and skipped over overwise. | 943 // instruction is executed if the comparision is true and skipped over overwise. |
| 930 // Conidition NEXT_IS_FALSE means the following instruction is executed if the | 944 // Conidition NEXT_IS_FALSE means the following instruction is executed if the |
| 931 // comparison is false and skipped over otherwise. | 945 // comparison is false and skipped over otherwise. |
| 932 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; | 946 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; |
| 933 | 947 |
| 934 } // namespace dart | 948 } // namespace dart |
| 935 | 949 |
| 936 #endif // VM_CONSTANTS_DBC_H_ | 950 #endif // VM_CONSTANTS_DBC_H_ |
| OLD | NEW |