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

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

Issue 2997173002: [vm] Remove Dart_MakeExternalString and --support-externalizable-strings (Closed)
Patch Set: Update vm.status Created 3 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
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 RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_
6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 6 #define RUNTIME_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/flags.h" 10 #include "vm/flags.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 private: 171 private:
172 bool CanComputeIsInstanceOf(const AbstractType& type, 172 bool CanComputeIsInstanceOf(const AbstractType& type,
173 bool is_nullable, 173 bool is_nullable,
174 bool* is_instance); 174 bool* is_instance);
175 175
176 bool is_nullable_; 176 bool is_nullable_;
177 intptr_t cid_; 177 intptr_t cid_;
178 const AbstractType* type_; 178 const AbstractType* type_;
179 }; 179 };
180 180
181 // TODO(alexmarkov): remove EffectSet as there are no tracked effects anymore
181 class EffectSet : public ValueObject { 182 class EffectSet : public ValueObject {
182 public: 183 public:
183 enum Effects { 184 enum Effects {
184 kNoEffects = 0, 185 kNoEffects = 0,
185 kExternalization = 1, 186 kUnusedEffect = 1, // Currently unused.
186 kLastEffect = kExternalization 187 kLastEffect = kUnusedEffect
187 }; 188 };
188 189
189 EffectSet(const EffectSet& other) : ValueObject(), effects_(other.effects_) {} 190 EffectSet(const EffectSet& other) : ValueObject(), effects_(other.effects_) {}
190 191
191 bool IsNone() const { return effects_ == kNoEffects; } 192 bool IsNone() const { return effects_ == kNoEffects; }
192 193
193 static EffectSet None() { return EffectSet(kNoEffects); } 194 static EffectSet None() { return EffectSet(kNoEffects); }
194 static EffectSet All() { 195 static EffectSet All() {
195 ASSERT(EffectSet::kLastEffect == 1); 196 ASSERT(EffectSet::kLastEffect == 1);
196 return EffectSet(kExternalization); 197 return EffectSet(kUnusedEffect);
197 } 198 }
198 199
199 static EffectSet Externalization() { return EffectSet(kExternalization); }
200
201 bool ToInt() { return effects_; } 200 bool ToInt() { return effects_; }
202 201
203 private: 202 private:
204 explicit EffectSet(intptr_t effects) : effects_(effects) {} 203 explicit EffectSet(intptr_t effects) : effects_(effects) {}
205 204
206 intptr_t effects_; 205 intptr_t effects_;
207 }; 206 };
208 207
209 class Value : public ZoneAllocated { 208 class Value : public ZoneAllocated {
210 public: 209 public:
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 void SetLength(intptr_t len) { cid_ranges_.SetLength(len); } 622 void SetLength(intptr_t len) { cid_ranges_.SetLength(len); }
624 623
625 bool is_empty() const { return cid_ranges_.is_empty(); } 624 bool is_empty() const { return cid_ranges_.is_empty(); }
626 625
627 void Sort(int compare(CidRange* const* a, CidRange* const* b)) { 626 void Sort(int compare(CidRange* const* a, CidRange* const* b)) {
628 cid_ranges_.Sort(compare); 627 cid_ranges_.Sort(compare);
629 } 628 }
630 629
631 bool IsMonomorphic() const; 630 bool IsMonomorphic() const;
632 intptr_t MonomorphicReceiverCid() const; 631 intptr_t MonomorphicReceiverCid() const;
633 bool ContainsExternalizableCids() const;
634 intptr_t ComputeLowestCid() const; 632 intptr_t ComputeLowestCid() const;
635 intptr_t ComputeHighestCid() const; 633 intptr_t ComputeHighestCid() const;
636 634
637 protected: 635 protected:
638 void CreateHelper(Zone* zone, 636 void CreateHelper(Zone* zone,
639 const ICData& ic_data, 637 const ICData& ic_data,
640 int argument_number, 638 int argument_number,
641 bool include_targets); 639 bool include_targets);
642 GrowableArray<CidRange*> cid_ranges_; 640 GrowableArray<CidRange*> cid_ranges_;
643 Zone* zone_; 641 Zone* zone_;
(...skipping 3744 matching lines...) Expand 10 before | Expand all | Expand 10 after
4388 4386
4389 virtual EffectSet Effects() const { return EffectSet::None(); } 4387 virtual EffectSet Effects() const { return EffectSet::None(); }
4390 virtual bool AttributesEqual(Instruction* other) const { return true; } 4388 virtual bool AttributesEqual(Instruction* other) const { return true; }
4391 4389
4392 private: 4390 private:
4393 intptr_t offset_; 4391 intptr_t offset_;
4394 4392
4395 DISALLOW_COPY_AND_ASSIGN(LoadUntaggedInstr); 4393 DISALLOW_COPY_AND_ASSIGN(LoadUntaggedInstr);
4396 }; 4394 };
4397 4395
4398 class LoadClassIdInstr : public TemplateDefinition<1, NoThrow> { 4396 class LoadClassIdInstr : public TemplateDefinition<1, NoThrow, Pure> {
4399 public: 4397 public:
4400 explicit LoadClassIdInstr(Value* object) { SetInputAt(0, object); } 4398 explicit LoadClassIdInstr(Value* object) { SetInputAt(0, object); }
4401 4399
4402 virtual Representation representation() const { return kTagged; } 4400 virtual Representation representation() const { return kTagged; }
4403 DECLARE_INSTRUCTION(LoadClassId) 4401 DECLARE_INSTRUCTION(LoadClassId)
4404 virtual CompileType ComputeType() const; 4402 virtual CompileType ComputeType() const;
4405 4403
4406 Value* object() const { return inputs_[0]; } 4404 Value* object() const { return inputs_[0]; }
4407 4405
4408 virtual bool ComputeCanDeoptimize() const { return false; } 4406 virtual bool ComputeCanDeoptimize() const { return false; }
4409 4407
4410 virtual bool AllowsCSE() const { return true; }
4411 virtual EffectSet Dependencies() const {
4412 return EffectSet::Externalization();
4413 }
4414 virtual EffectSet Effects() const { return EffectSet::None(); }
4415 virtual bool AttributesEqual(Instruction* other) const { return true; } 4408 virtual bool AttributesEqual(Instruction* other) const { return true; }
4416 4409
4417 private: 4410 private:
4418 DISALLOW_COPY_AND_ASSIGN(LoadClassIdInstr); 4411 DISALLOW_COPY_AND_ASSIGN(LoadClassIdInstr);
4419 }; 4412 };
4420 4413
4421 class LoadFieldInstr : public TemplateDefinition<1, NoThrow> { 4414 class LoadFieldInstr : public TemplateDefinition<1, NoThrow> {
4422 public: 4415 public:
4423 LoadFieldInstr(Value* instance, 4416 LoadFieldInstr(Value* instance,
4424 intptr_t offset_in_bytes, 4417 intptr_t offset_in_bytes,
(...skipping 3181 matching lines...) Expand 10 before | Expand all | Expand 10 after
7606 bool IsNullCheck() const { return IsDeoptIfNull() || IsDeoptIfNotNull(); } 7599 bool IsNullCheck() const { return IsDeoptIfNull() || IsDeoptIfNotNull(); }
7607 7600
7608 bool IsDeoptIfNull() const; 7601 bool IsDeoptIfNull() const;
7609 bool IsDeoptIfNotNull() const; 7602 bool IsDeoptIfNotNull() const;
7610 7603
7611 bool IsBitTest() const; 7604 bool IsBitTest() const;
7612 static bool IsCompactCidRange(const Cids& cids); 7605 static bool IsCompactCidRange(const Cids& cids);
7613 intptr_t ComputeCidMask() const; 7606 intptr_t ComputeCidMask() const;
7614 7607
7615 virtual bool AllowsCSE() const { return true; } 7608 virtual bool AllowsCSE() const { return true; }
7616 virtual EffectSet Dependencies() const; 7609 virtual EffectSet Dependencies() const { return EffectSet::None(); }
7617 virtual EffectSet Effects() const { return EffectSet::None(); } 7610 virtual EffectSet Effects() const { return EffectSet::None(); }
7618 virtual bool AttributesEqual(Instruction* other) const; 7611 virtual bool AttributesEqual(Instruction* other) const;
7619 7612
7620 bool licm_hoisted() const { return licm_hoisted_; } 7613 bool licm_hoisted() const { return licm_hoisted_; }
7621 void set_licm_hoisted(bool value) { licm_hoisted_ = value; } 7614 void set_licm_hoisted(bool value) { licm_hoisted_ = value; }
7622 7615
7623 PRINT_OPERANDS_TO_SUPPORT 7616 PRINT_OPERANDS_TO_SUPPORT
7624 7617
7625 private: 7618 private:
7626 const Cids& cids_; 7619 const Cids& cids_;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
7686 Value* value() const { return inputs_[0]; } 7679 Value* value() const { return inputs_[0]; }
7687 const CidRange& cids() const { return cids_; } 7680 const CidRange& cids() const { return cids_; }
7688 7681
7689 DECLARE_INSTRUCTION(CheckClassId) 7682 DECLARE_INSTRUCTION(CheckClassId)
7690 7683
7691 virtual bool ComputeCanDeoptimize() const { return true; } 7684 virtual bool ComputeCanDeoptimize() const { return true; }
7692 7685
7693 virtual Instruction* Canonicalize(FlowGraph* flow_graph); 7686 virtual Instruction* Canonicalize(FlowGraph* flow_graph);
7694 7687
7695 virtual bool AllowsCSE() const { return true; } 7688 virtual bool AllowsCSE() const { return true; }
7696 virtual EffectSet Dependencies() const; 7689 virtual EffectSet Dependencies() const { return EffectSet::None(); }
7697 virtual EffectSet Effects() const { return EffectSet::None(); } 7690 virtual EffectSet Effects() const { return EffectSet::None(); }
7698 virtual bool AttributesEqual(Instruction* other) const { return true; } 7691 virtual bool AttributesEqual(Instruction* other) const { return true; }
7699 7692
7700 PRINT_OPERANDS_TO_SUPPORT 7693 PRINT_OPERANDS_TO_SUPPORT
7701 7694
7702 private: 7695 private:
7703 bool Contains(intptr_t cid) const; 7696 bool Contains(intptr_t cid) const;
7704 7697
7705 CidRange cids_; 7698 CidRange cids_;
7706 7699
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
8096 #define DEFINE_UNIMPLEMENTED_INSTRUCTION(Name) \ 8089 #define DEFINE_UNIMPLEMENTED_INSTRUCTION(Name) \
8097 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ 8090 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \
8098 UNIMPLEMENTED(); \ 8091 UNIMPLEMENTED(); \
8099 return NULL; \ 8092 return NULL; \
8100 } \ 8093 } \
8101 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } 8094 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); }
8102 8095
8103 } // namespace dart 8096 } // namespace dart
8104 8097
8105 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 8098 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698