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

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

Issue 235013002: Fix polymorphic inlining of method dispatchers. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 8 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 1864 matching lines...) Expand 10 before | Expand all | Expand 10 after
1875 virtual AliasIdentity Identity() const { 1875 virtual AliasIdentity Identity() const {
1876 // Only implemented for allocation instructions. 1876 // Only implemented for allocation instructions.
1877 UNREACHABLE(); 1877 UNREACHABLE();
1878 return kIdentityUnknown; 1878 return kIdentityUnknown;
1879 } 1879 }
1880 1880
1881 virtual void SetIdentity(AliasIdentity identity) { 1881 virtual void SetIdentity(AliasIdentity identity) {
1882 UNREACHABLE(); 1882 UNREACHABLE();
1883 } 1883 }
1884 1884
1885 Definition* OriginalDefinition();
1886
1885 protected: 1887 protected:
1886 friend class RangeAnalysis; 1888 friend class RangeAnalysis;
1887 friend class Value; 1889 friend class Value;
1888 1890
1889 Range* range_; 1891 Range* range_;
1890 CompileType* type_; 1892 CompileType* type_;
1891 1893
1892 private: 1894 private:
1893 intptr_t temp_index_; 1895 intptr_t temp_index_;
1894 intptr_t ssa_temp_index_; 1896 intptr_t ssa_temp_index_;
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
2973 2975
2974 virtual intptr_t ArgumentCount() const { 2976 virtual intptr_t ArgumentCount() const {
2975 return instance_call()->ArgumentCount(); 2977 return instance_call()->ArgumentCount();
2976 } 2978 }
2977 virtual PushArgumentInstr* PushArgumentAt(intptr_t index) const { 2979 virtual PushArgumentInstr* PushArgumentAt(intptr_t index) const {
2978 return instance_call()->PushArgumentAt(index); 2980 return instance_call()->PushArgumentAt(index);
2979 } 2981 }
2980 2982
2981 bool HasSingleRecognizedTarget() const; 2983 bool HasSingleRecognizedTarget() const;
2982 2984
2983 bool HasSingleDispatcherTarget() const; 2985 bool HasOnlyDispatcherTargets() const;
2984 2986
2985 virtual intptr_t CallCount() const { return ic_data().AggregateCount(); } 2987 virtual intptr_t CallCount() const { return ic_data().AggregateCount(); }
2986 2988
2987 DECLARE_INSTRUCTION(PolymorphicInstanceCall) 2989 DECLARE_INSTRUCTION(PolymorphicInstanceCall)
2988 2990
2989 const ICData& ic_data() const { return ic_data_; } 2991 const ICData& ic_data() const { return ic_data_; }
2990 2992
2991 virtual bool CanDeoptimize() const { return true; } 2993 virtual bool CanDeoptimize() const { return true; }
2992 2994
2993 virtual EffectSet Effects() const { return EffectSet::All(); } 2995 virtual EffectSet Effects() const { return EffectSet::All(); }
(...skipping 4788 matching lines...) Expand 10 before | Expand all | Expand 10 after
7782 ForwardInstructionIterator* current_iterator_; 7784 ForwardInstructionIterator* current_iterator_;
7783 7785
7784 private: 7786 private:
7785 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); 7787 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor);
7786 }; 7788 };
7787 7789
7788 7790
7789 } // namespace dart 7791 } // namespace dart
7790 7792
7791 #endif // VM_INTERMEDIATE_LANGUAGE_H_ 7793 #endif // VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698