Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(500)

Side by Side Diff: runtime/vm/constants_dbc.h

Issue 2268593002: DBC: Add back special case for float64 load/store (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix 32-bit build Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_dbc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_dbc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698