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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 // - StoreIndexedTOS | 320 // - StoreIndexedTOS |
321 // | 321 // |
322 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done. | 322 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done. |
323 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi. | 323 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi. |
324 // | 324 // |
325 // - StoreIndexed rA, rB, rC | 325 // - StoreIndexed rA, rB, rC |
326 // | 326 // |
327 // Store FP[rC] into array FP[rA] at index FP[rB]. No typechecking is done. | 327 // Store FP[rC] into array FP[rA] at index FP[rB]. No typechecking is done. |
328 // FP[rA] is assumed to be a RawArray, FP[rB] to be a smi. | 328 // FP[rA] is assumed to be a RawArray, FP[rB] to be a smi. |
329 // | 329 // |
330 // - StoreIndexed{Float64, Uint8} rA, rB, rC | 330 // - StoreIndexed{N}{Float64, Uint8} rA, rB, rC |
| 331 // |
| 332 // Where N is '' or '8'. N may only be '8' for Float64. |
331 // | 333 // |
332 // Store the unboxed double or tagged Smi in FP[rC] into the typed data array | 334 // Store the unboxed double or tagged Smi in FP[rC] into the typed data array |
333 // at FP[rA] at index FP[rB]. | 335 // at FP[rA] at index FP[rB]. If N is not '', the index is assumed to be |
| 336 // already scaled by N. |
334 // | 337 // |
335 // - StoreIndexedExternalUint8 rA, rB, rC | 338 // - StoreIndexedExternalUint8 rA, rB, rC |
336 // | 339 // |
337 // Similar to StoreIndexedUint8 but FP[rA] is an external typed data aray. | 340 // Similar to StoreIndexedUint8 but FP[rA] is an external typed data aray. |
338 // | 341 // |
339 // - LoadIndexed rA, rB, rC | 342 // - LoadIndexed rA, rB, rC |
340 // | 343 // |
341 // Loads from array FP[rB] at index FP[rC] into FP[rA]. No typechecking is | 344 // Loads from array FP[rB] at index FP[rC] into FP[rA]. No typechecking is |
342 // done. FP[rB] is assumed to be a RawArray, and to contain a Smi at FP[rC]. | 345 // done. FP[rB] is assumed to be a RawArray, and to contain a Smi at FP[rC]. |
343 // | 346 // |
344 // - LoadIndexed{Float64, OneByteString, TwoByteString, Uint8, Int8} rA, rB, rC | 347 // - LoadIndexed{N}{Type} rA, rB, rC |
| 348 // |
| 349 // Where Type is Float64, OneByteString, TwoByteString, Uint8, or Int8, |
| 350 // and N is '' or '8'. N may only be '8' for Float64. |
345 // | 351 // |
346 // Loads from typed data array FP[rB] at index FP[rC] into an unboxed double, | 352 // Loads from typed data array FP[rB] at index FP[rC] into an unboxed double, |
347 // or tagged Smi in FP[rA] as indicated by the type in the name. | 353 // or tagged Smi in FP[rA] as indicated by the type in the name. If N is not |
| 354 // '', the index is assumed to be already scaled by N. |
348 // | 355 // |
349 // - LoadIndexedExternal{Int8, Uint8} rA, rB, rC | 356 // - LoadIndexedExternal{Int8, Uint8} rA, rB, rC |
350 // | 357 // |
351 // Loads from the external typed data array FP[rB] at index FP[rC] into | 358 // Loads from the external typed data array FP[rB] at index FP[rC] into |
352 // FP[rA]. No typechecking is done. | 359 // FP[rA]. No typechecking is done. |
353 // | 360 // |
354 // - StoreField rA, B, rC | 361 // - StoreField rA, B, rC |
355 // | 362 // |
356 // Store value FP[rC] into object FP[rA] at offset (in words) B. | 363 // Store value FP[rC] into object FP[rA] at offset (in words) B. |
357 // | 364 // |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 V(IfNeNull, A, reg, ___, ___) \ | 685 V(IfNeNull, A, reg, ___, ___) \ |
679 V(CreateArrayTOS, 0, ___, ___, ___) \ | 686 V(CreateArrayTOS, 0, ___, ___, ___) \ |
680 V(Allocate, D, lit, ___, ___) \ | 687 V(Allocate, D, lit, ___, ___) \ |
681 V(AllocateT, 0, ___, ___, ___) \ | 688 V(AllocateT, 0, ___, ___, ___) \ |
682 V(StoreIndexedTOS, 0, ___, ___, ___) \ | 689 V(StoreIndexedTOS, 0, ___, ___, ___) \ |
683 V(StoreIndexed, A_B_C, reg, reg, reg) \ | 690 V(StoreIndexed, A_B_C, reg, reg, reg) \ |
684 V(StoreIndexedUint8, A_B_C, reg, reg, reg) \ | 691 V(StoreIndexedUint8, A_B_C, reg, reg, reg) \ |
685 V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \ | 692 V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \ |
686 V(StoreIndexedUint32, A_B_C, reg, reg, reg) \ | 693 V(StoreIndexedUint32, A_B_C, reg, reg, reg) \ |
687 V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \ | 694 V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \ |
| 695 V(StoreIndexed8Float64, A_B_C, reg, reg, reg) \ |
688 V(LoadIndexed, A_B_C, reg, reg, reg) \ | 696 V(LoadIndexed, A_B_C, reg, reg, reg) \ |
689 V(LoadIndexedUint8, A_B_C, reg, reg, reg) \ | 697 V(LoadIndexedUint8, A_B_C, reg, reg, reg) \ |
690 V(LoadIndexedInt8, A_B_C, reg, reg, reg) \ | 698 V(LoadIndexedInt8, A_B_C, reg, reg, reg) \ |
691 V(LoadIndexedInt32, A_B_C, reg, reg, reg) \ | 699 V(LoadIndexedInt32, A_B_C, reg, reg, reg) \ |
692 V(LoadIndexedUint32, A_B_C, reg, reg, reg) \ | 700 V(LoadIndexedUint32, A_B_C, reg, reg, reg) \ |
693 V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \ | 701 V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \ |
694 V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \ | 702 V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \ |
695 V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \ | 703 V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \ |
| 704 V(LoadIndexed8Float64, A_B_C, reg, reg, reg) \ |
696 V(LoadIndexedOneByteString, A_B_C, reg, reg, reg) \ | 705 V(LoadIndexedOneByteString, A_B_C, reg, reg, reg) \ |
697 V(LoadIndexedTwoByteString, A_B_C, reg, reg, reg) \ | 706 V(LoadIndexedTwoByteString, A_B_C, reg, reg, reg) \ |
698 V(StoreField, A_B_C, reg, num, reg) \ | 707 V(StoreField, A_B_C, reg, num, reg) \ |
699 V(StoreFieldTOS, D, num, ___, ___) \ | 708 V(StoreFieldTOS, D, num, ___, ___) \ |
700 V(LoadField, A_B_C, reg, reg, num) \ | 709 V(LoadField, A_B_C, reg, reg, num) \ |
701 V(LoadUntagged, A_B_C, reg, reg, num) \ | 710 V(LoadUntagged, A_B_C, reg, reg, num) \ |
702 V(LoadFieldTOS, D, num, ___, ___) \ | 711 V(LoadFieldTOS, D, num, ___, ___) \ |
703 V(BooleanNegateTOS, 0, ___, ___, ___) \ | 712 V(BooleanNegateTOS, 0, ___, ___, ___) \ |
704 V(BooleanNegate, A_D, reg, reg, ___) \ | 713 V(BooleanNegate, A_D, reg, reg, ___) \ |
705 V(Throw, A, num, ___, ___) \ | 714 V(Throw, A, num, ___, ___) \ |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 | 873 |
865 // After a comparison, the condition NEXT_IS_TRUE means the following | 874 // After a comparison, the condition NEXT_IS_TRUE means the following |
866 // instruction is executed if the comparision is true and skipped over overwise. | 875 // instruction is executed if the comparision is true and skipped over overwise. |
867 // Conidition NEXT_IS_FALSE means the following instruction is executed if the | 876 // Conidition NEXT_IS_FALSE means the following instruction is executed if the |
868 // comparison is false and skipped over otherwise. | 877 // comparison is false and skipped over otherwise. |
869 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; | 878 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; |
870 | 879 |
871 } // namespace dart | 880 } // namespace dart |
872 | 881 |
873 #endif // VM_CONSTANTS_DBC_H_ | 882 #endif // VM_CONSTANTS_DBC_H_ |
OLD | NEW |