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

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

Issue 2109743002: DBC: Implement InstanceOf. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: . 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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 // catch handler. 333 // catch handler.
334 // 334 //
335 // - InstantiateType D 335 // - InstantiateType D
336 // 336 //
337 // Instantiate type PP[D] with instantiator type arguments SP[0]. 337 // Instantiate type PP[D] with instantiator type arguments SP[0].
338 // 338 //
339 // - InstantiateTypeArgumentsTOS D 339 // - InstantiateTypeArgumentsTOS D
340 // 340 //
341 // Instantiate type arguments PP[D] with instantiator SP[0]. 341 // Instantiate type arguments PP[D] with instantiator SP[0].
342 // 342 //
343 // - InstanceOf
344 //
345 // Test if instance SP[-3] with type arguments SP[-2] is a subtype of SP[-1]
346 // using SubtypeTestCache SP[0].
347 //
343 // - AssertAssignable D 348 // - AssertAssignable D
344 // 349 //
345 // Assert that SP[-3] is assignable to variable named SP[0] of type 350 // Assert that SP[-3] is assignable to variable named SP[0] of type
346 // SP[-1] with type arguments SP[-2] using SubtypeTestCache PP[D]. 351 // SP[-1] with type arguments SP[-2] using SubtypeTestCache PP[D].
347 // 352 //
348 // - AssertBoolean A 353 // - AssertBoolean A
349 // 354 //
350 // Assert that TOS is a boolean (A = 1) or that TOS is not null (A = 0). 355 // Assert that TOS is a boolean (A = 1) or that TOS is not null (A = 0).
351 // 356 //
352 // - CheckSmi rA 357 // - CheckSmi rA
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 V(Shl, A_B_C, reg, reg, reg) \ 467 V(Shl, A_B_C, reg, reg, reg) \
463 V(Shr, A_B_C, reg, reg, reg) \ 468 V(Shr, A_B_C, reg, reg, reg) \
464 V(Neg, A_D, reg, reg, ___) \ 469 V(Neg, A_D, reg, reg, ___) \
465 V(BitOr, A_B_C, reg, reg, reg) \ 470 V(BitOr, A_B_C, reg, reg, reg) \
466 V(BitAnd, A_B_C, reg, reg, reg) \ 471 V(BitAnd, A_B_C, reg, reg, reg) \
467 V(BitXor, A_B_C, reg, reg, reg) \ 472 V(BitXor, A_B_C, reg, reg, reg) \
468 V(BitNot, A_D, reg, reg, ___) \ 473 V(BitNot, A_D, reg, reg, ___) \
469 V(StoreStaticTOS, D, lit, ___, ___) \ 474 V(StoreStaticTOS, D, lit, ___, ___) \
470 V(PushStatic, D, lit, ___, ___) \ 475 V(PushStatic, D, lit, ___, ___) \
471 V(InitStaticTOS, 0, ___, ___, ___) \ 476 V(InitStaticTOS, 0, ___, ___, ___) \
477 V(LogicalNot, 0, ___, ___, ___) \
zra 2016/06/28 19:28:05 Already have BooleanNegate{TOS}.
rmacnak 2016/06/28 21:21:50 Ahh
472 V(IfNeStrictTOS, 0, ___, ___, ___) \ 478 V(IfNeStrictTOS, 0, ___, ___, ___) \
473 V(IfEqStrictTOS, 0, ___, ___, ___) \ 479 V(IfEqStrictTOS, 0, ___, ___, ___) \
474 V(IfNeStrictNumTOS, 0, ___, ___, ___) \ 480 V(IfNeStrictNumTOS, 0, ___, ___, ___) \
475 V(IfEqStrictNumTOS, 0, ___, ___, ___) \ 481 V(IfEqStrictNumTOS, 0, ___, ___, ___) \
476 V(IfNeStrict, A_D, reg, reg, ___) \ 482 V(IfNeStrict, A_D, reg, reg, ___) \
477 V(IfEqStrict, A_D, reg, reg, ___) \ 483 V(IfEqStrict, A_D, reg, reg, ___) \
478 V(IfNeStrictNum, A_D, reg, reg, ___) \ 484 V(IfNeStrictNum, A_D, reg, reg, ___) \
479 V(IfEqStrictNum, A_D, reg, reg, ___) \ 485 V(IfEqStrictNum, A_D, reg, reg, ___) \
480 V(CreateArrayTOS, 0, ___, ___, ___) \ 486 V(CreateArrayTOS, 0, ___, ___, ___) \
481 V(Allocate, D, lit, ___, ___) \ 487 V(Allocate, D, lit, ___, ___) \
482 V(AllocateT, 0, ___, ___, ___) \ 488 V(AllocateT, 0, ___, ___, ___) \
483 V(StoreIndexedTOS, 0, ___, ___, ___) \ 489 V(StoreIndexedTOS, 0, ___, ___, ___) \
484 V(StoreIndexed, A_B_C, reg, reg, reg) \ 490 V(StoreIndexed, A_B_C, reg, reg, reg) \
485 V(StoreField, A_B_C, reg, num, reg) \ 491 V(StoreField, A_B_C, reg, num, reg) \
486 V(StoreFieldTOS, D, num, ___, ___) \ 492 V(StoreFieldTOS, D, num, ___, ___) \
487 V(LoadField, A_B_C, reg, reg, num) \ 493 V(LoadField, A_B_C, reg, reg, num) \
488 V(LoadFieldTOS, D, num, ___, ___) \ 494 V(LoadFieldTOS, D, num, ___, ___) \
489 V(BooleanNegateTOS, 0, ___, ___, ___) \ 495 V(BooleanNegateTOS, 0, ___, ___, ___) \
zra 2016/06/28 19:28:04 Here.
490 V(BooleanNegate, A_D, reg, reg, ___) \ 496 V(BooleanNegate, A_D, reg, reg, ___) \
491 V(Throw, A, num, ___, ___) \ 497 V(Throw, A, num, ___, ___) \
492 V(Entry, A_B_C, num, num, num) \ 498 V(Entry, A_B_C, num, num, num) \
493 V(EntryOptional, A_B_C, num, num, num) \ 499 V(EntryOptional, A_B_C, num, num, num) \
494 V(EntryOptimized, A_D, num, num, ___) \ 500 V(EntryOptimized, A_D, num, num, ___) \
495 V(Frame, D, num, ___, ___) \ 501 V(Frame, D, num, ___, ___) \
496 V(SetFrame, A, num, ___, num) \ 502 V(SetFrame, A, num, ___, num) \
497 V(AllocateContext, D, num, ___, ___) \ 503 V(AllocateContext, D, num, ___, ___) \
498 V(CloneContext, 0, ___, ___, ___) \ 504 V(CloneContext, 0, ___, ___, ___) \
499 V(MoveSpecial, A_D, reg, num, ___) \ 505 V(MoveSpecial, A_D, reg, num, ___) \
500 V(InstantiateType, D, lit, ___, ___) \ 506 V(InstantiateType, D, lit, ___, ___) \
501 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \ 507 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \
508 V(InstanceOf, 0, ___, ___, ___) \
502 V(AssertAssignable, D, num, lit, ___) \ 509 V(AssertAssignable, D, num, lit, ___) \
503 V(AssertBoolean, A, num, ___, ___) \ 510 V(AssertBoolean, A, num, ___, ___) \
504 V(CheckSmi, A, reg, ___, ___) \ 511 V(CheckSmi, A, reg, ___, ___) \
505 V(CheckClassId, A_D, reg, lit, ___) \ 512 V(CheckClassId, A_D, reg, lit, ___) \
506 V(CheckStack, 0, ___, ___, ___) \ 513 V(CheckStack, 0, ___, ___, ___) \
507 V(DebugStep, 0, ___, ___, ___) \ 514 V(DebugStep, 0, ___, ___, ___) \
508 V(DebugBreak, A, num, ___, ___) \ 515 V(DebugBreak, A, num, ___, ___) \
509 V(Deopt, A_D, num, num, ___) \ 516 V(Deopt, A_D, num, num, ___) \
510 517
511 typedef uint32_t Instr; 518 typedef uint32_t Instr;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 kNumberOfDummyFpuRegisters, 625 kNumberOfDummyFpuRegisters,
619 }; 626 };
620 const FpuRegister FpuTMP = kFakeFpuRegister; 627 const FpuRegister FpuTMP = kFakeFpuRegister;
621 const intptr_t kNumberOfFpuRegisters = 1; 628 const intptr_t kNumberOfFpuRegisters = 1;
622 629
623 enum Condition { EQ, NE }; 630 enum Condition { EQ, NE };
624 631
625 } // namespace dart 632 } // namespace dart
626 633
627 #endif // VM_CONSTANTS_DBC_H_ 634 #endif // VM_CONSTANTS_DBC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698