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

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

Issue 22580005: Implement IsNullCheck for CheckClassInstr. If input is nullable expected type, then check for null … (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_
6 #define VM_INTERMEDIATE_LANGUAGE_H_ 6 #define VM_INTERMEDIATE_LANGUAGE_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/growable_array.h" 10 #include "vm/growable_array.h"
(...skipping 6312 matching lines...) Expand 10 before | Expand all | Expand 10 after
6323 virtual bool CanDeoptimize() const { return true; } 6323 virtual bool CanDeoptimize() const { return true; }
6324 6324
6325 Value* value() const { return inputs_[0]; } 6325 Value* value() const { return inputs_[0]; }
6326 6326
6327 const ICData& unary_checks() const { return unary_checks_; } 6327 const ICData& unary_checks() const { return unary_checks_; }
6328 6328
6329 virtual Instruction* Canonicalize(FlowGraph* flow_graph); 6329 virtual Instruction* Canonicalize(FlowGraph* flow_graph);
6330 6330
6331 virtual void PrintOperandsTo(BufferFormatter* f) const; 6331 virtual void PrintOperandsTo(BufferFormatter* f) const;
6332 6332
6333 void set_null_check(bool flag) { null_check_ = flag; } 6333 bool IsNullCheck() const;
6334
6335 bool null_check() const { return null_check_; }
6336 6334
6337 virtual bool AllowsCSE() const { return true; } 6335 virtual bool AllowsCSE() const { return true; }
6338 virtual EffectSet Effects() const { return EffectSet::None(); } 6336 virtual EffectSet Effects() const { return EffectSet::None(); }
6339 virtual EffectSet Dependencies() const; 6337 virtual EffectSet Dependencies() const;
6340 virtual bool AttributesEqual(Instruction* other) const; 6338 virtual bool AttributesEqual(Instruction* other) const;
6341 6339
6342 virtual bool MayThrow() const { return false; } 6340 virtual bool MayThrow() const { return false; }
6343 6341
6344 private: 6342 private:
6345 const ICData& unary_checks_; 6343 const ICData& unary_checks_;
6346 6344
6347 bool null_check_;
6348
6349 DISALLOW_COPY_AND_ASSIGN(CheckClassInstr); 6345 DISALLOW_COPY_AND_ASSIGN(CheckClassInstr);
6350 }; 6346 };
6351 6347
6352 6348
6353 class CheckSmiInstr : public TemplateInstruction<1> { 6349 class CheckSmiInstr : public TemplateInstruction<1> {
6354 public: 6350 public:
6355 CheckSmiInstr(Value* value, intptr_t original_deopt_id) { 6351 CheckSmiInstr(Value* value, intptr_t original_deopt_id) {
6356 ASSERT(original_deopt_id != Isolate::kNoDeoptId); 6352 ASSERT(original_deopt_id != Isolate::kNoDeoptId);
6357 SetInputAt(0, value); 6353 SetInputAt(0, value);
6358 deopt_id_ = original_deopt_id; 6354 deopt_id_ = original_deopt_id;
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
6642 ForwardInstructionIterator* current_iterator_; 6638 ForwardInstructionIterator* current_iterator_;
6643 6639
6644 private: 6640 private:
6645 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); 6641 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor);
6646 }; 6642 };
6647 6643
6648 6644
6649 } // namespace dart 6645 } // namespace dart
6650 6646
6651 #endif // VM_INTERMEDIATE_LANGUAGE_H_ 6647 #endif // VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698