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

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

Issue 2113563002: DBC: Various instructions. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Add unsigned integer compares Created 4 years, 5 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
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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 // Used to implement conditional jump: 221 // Used to implement conditional jump:
222 // 222 //
223 // IfNeStrictTOS 223 // IfNeStrictTOS
224 // Jump T ;; jump if not equal 224 // Jump T ;; jump if not equal
225 // 225 //
226 // - If<Cond>Null rA 226 // - If<Cond>Null rA
227 // 227 //
228 // Cond is Eq or Ne. Skips the next instruction unless the given condition 228 // Cond is Eq or Ne. Skips the next instruction unless the given condition
229 // holds. 229 // holds.
230 // 230 //
231 // - If<Cond> rA, rD
232 //
233 // Cond is Le, Lt, Ge, Gt, or unsigned variants ULe, ULt, UGe, UGt.
234 // Skips the next instruction unless FP[rA] <Cond> FP[rD]. Assumes that
235 // FP[rA] and FP[rD] are Smis.
236 //
231 // - CreateArrayTOS 237 // - CreateArrayTOS
232 // 238 //
233 // Allocate array of length SP[0] with type arguments SP[-1]. 239 // Allocate array of length SP[0] with type arguments SP[-1].
234 // 240 //
235 // - Allocate D 241 // - Allocate D
236 // 242 //
237 // Allocate object of class PP[D] with no type arguments. 243 // Allocate object of class PP[D] with no type arguments.
238 // 244 //
239 // - AllocateT 245 // - AllocateT
240 // 246 //
241 // Allocate object of class SP[0] with type arguments SP[-1]. 247 // Allocate object of class SP[0] with type arguments SP[-1].
242 // 248 //
243 // - StoreIndexedTOS 249 // - StoreIndexedTOS
244 // 250 //
245 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done. 251 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done.
246 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi. 252 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi.
247 // 253 //
248 // - StoreIndexed rA, rB, rC 254 // - StoreIndexed rA, rB, rC
249 // 255 //
250 // Store rC into array rA at index rB. No typechecking is done. 256 // Store rC into array rA at index rB. No typechecking is done.
251 // rA is assumed to be a RawArray, rB to be a smi. 257 // rA is assumed to be a RawArray, rB to be a smi.
252 // 258 //
259 // - LoadIndexed rA, rB, rC
260 //
261 // Loads from array FP[rB] at index FP[rC] into FP[rA]. No typechecking is
262 // done. FP[rB] is assumed to be a RawArray, and to contain a Smi at FP[rC].
263 //
253 // - StoreField rA, B, rC 264 // - StoreField rA, B, rC
254 // 265 //
255 // Store value FP[rC] into object FP[rA] at offset (in words) B. 266 // Store value FP[rC] into object FP[rA] at offset (in words) B.
256 // 267 //
257 // - StoreFieldTOS D 268 // - StoreFieldTOS D
258 // 269 //
259 // Store value SP[0] into object SP[-1] at offset (in words) D. 270 // Store value SP[0] into object SP[-1] at offset (in words) D.
260 // 271 //
261 // - LoadField rA, rB, C 272 // - LoadField rA, rB, C
262 // 273 //
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 V(BitNot, A_D, reg, reg, ___) \ 521 V(BitNot, A_D, reg, reg, ___) \
511 V(StoreStaticTOS, D, lit, ___, ___) \ 522 V(StoreStaticTOS, D, lit, ___, ___) \
512 V(PushStatic, D, lit, ___, ___) \ 523 V(PushStatic, D, lit, ___, ___) \
513 V(InitStaticTOS, 0, ___, ___, ___) \ 524 V(InitStaticTOS, 0, ___, ___, ___) \
514 V(IfNeStrictTOS, 0, ___, ___, ___) \ 525 V(IfNeStrictTOS, 0, ___, ___, ___) \
515 V(IfEqStrictTOS, 0, ___, ___, ___) \ 526 V(IfEqStrictTOS, 0, ___, ___, ___) \
516 V(IfNeStrictNumTOS, 0, ___, ___, ___) \ 527 V(IfNeStrictNumTOS, 0, ___, ___, ___) \
517 V(IfEqStrictNumTOS, 0, ___, ___, ___) \ 528 V(IfEqStrictNumTOS, 0, ___, ___, ___) \
518 V(IfNeStrict, A_D, reg, reg, ___) \ 529 V(IfNeStrict, A_D, reg, reg, ___) \
519 V(IfEqStrict, A_D, reg, reg, ___) \ 530 V(IfEqStrict, A_D, reg, reg, ___) \
531 V(IfLe, A_D, reg, reg, ___) \
532 V(IfLt, A_D, reg, reg, ___) \
533 V(IfGe, A_D, reg, reg, ___) \
534 V(IfGt, A_D, reg, reg, ___) \
535 V(IfULe, A_D, reg, reg, ___) \
536 V(IfULt, A_D, reg, reg, ___) \
537 V(IfUGe, A_D, reg, reg, ___) \
538 V(IfUGt, A_D, reg, reg, ___) \
520 V(IfNeStrictNum, A_D, reg, reg, ___) \ 539 V(IfNeStrictNum, A_D, reg, reg, ___) \
521 V(IfEqStrictNum, A_D, reg, reg, ___) \ 540 V(IfEqStrictNum, A_D, reg, reg, ___) \
522 V(IfEqNull, A, reg, ___, ___) \ 541 V(IfEqNull, A, reg, ___, ___) \
523 V(IfNeNull, A, reg, ___, ___) \ 542 V(IfNeNull, A, reg, ___, ___) \
524 V(CreateArrayTOS, 0, ___, ___, ___) \ 543 V(CreateArrayTOS, 0, ___, ___, ___) \
525 V(Allocate, D, lit, ___, ___) \ 544 V(Allocate, D, lit, ___, ___) \
526 V(AllocateT, 0, ___, ___, ___) \ 545 V(AllocateT, 0, ___, ___, ___) \
527 V(StoreIndexedTOS, 0, ___, ___, ___) \ 546 V(StoreIndexedTOS, 0, ___, ___, ___) \
528 V(StoreIndexed, A_B_C, reg, reg, reg) \ 547 V(StoreIndexed, A_B_C, reg, reg, reg) \
548 V(LoadIndexed, A_B_C, reg, reg, reg) \
529 V(StoreField, A_B_C, reg, num, reg) \ 549 V(StoreField, A_B_C, reg, num, reg) \
530 V(StoreFieldTOS, D, num, ___, ___) \ 550 V(StoreFieldTOS, D, num, ___, ___) \
531 V(LoadField, A_B_C, reg, reg, num) \ 551 V(LoadField, A_B_C, reg, reg, num) \
532 V(LoadFieldTOS, D, num, ___, ___) \ 552 V(LoadFieldTOS, D, num, ___, ___) \
533 V(BooleanNegateTOS, 0, ___, ___, ___) \ 553 V(BooleanNegateTOS, 0, ___, ___, ___) \
534 V(BooleanNegate, A_D, reg, reg, ___) \ 554 V(BooleanNegate, A_D, reg, reg, ___) \
535 V(Throw, A, num, ___, ___) \ 555 V(Throw, A, num, ___, ___) \
536 V(Entry, A_B_C, num, num, num) \ 556 V(Entry, A_B_C, num, num, num) \
537 V(EntryOptional, A_B_C, num, num, num) \ 557 V(EntryOptional, A_B_C, num, num, num) \
538 V(EntryOptimized, A_D, num, num, ___) \ 558 V(EntryOptimized, A_D, num, num, ___) \
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 690
671 // After a comparison, the condition NEXT_IS_TRUE means the following 691 // After a comparison, the condition NEXT_IS_TRUE means the following
672 // instruction is executed if the comparision is true and skipped over overwise. 692 // instruction is executed if the comparision is true and skipped over overwise.
673 // Conidition NEXT_IS_FALSE means the following instruction is executed if the 693 // Conidition NEXT_IS_FALSE means the following instruction is executed if the
674 // comparison is false and skipped over otherwise. 694 // comparison is false and skipped over otherwise.
675 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; 695 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE };
676 696
677 } // namespace dart 697 } // namespace dart
678 698
679 #endif // VM_CONSTANTS_DBC_H_ 699 #endif // VM_CONSTANTS_DBC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698