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

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

Issue 157833004: Disable hoisting CheckClass due to excessive deoptimization. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 10 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
« no previous file with comments | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 bool is_recognized() const { 1715 bool is_recognized() const {
1716 return RecognizedBit::decode(raw_ptr()->kind_tag_); 1716 return RecognizedBit::decode(raw_ptr()->kind_tag_);
1717 } 1717 }
1718 void set_is_recognized(bool value) const; 1718 void set_is_recognized(bool value) const;
1719 1719
1720 bool is_redirecting() const { 1720 bool is_redirecting() const {
1721 return RedirectingBit::decode(raw_ptr()->kind_tag_); 1721 return RedirectingBit::decode(raw_ptr()->kind_tag_);
1722 } 1722 }
1723 void set_is_redirecting(bool value) const; 1723 void set_is_redirecting(bool value) const;
1724 1724
1725 bool allows_hoisting_check_class() const {
1726 return AllowsHoistingCheckClassBit::decode(raw_ptr()->kind_tag_);
1727 }
1728 void set_allows_hoisting_check_class(bool value) const;
1729
1725 bool HasOptimizedCode() const; 1730 bool HasOptimizedCode() const;
1726 1731
1727 // Returns true if the argument counts are valid for calling this function. 1732 // Returns true if the argument counts are valid for calling this function.
1728 // Otherwise, it returns false and the reason (if error_message is not NULL). 1733 // Otherwise, it returns false and the reason (if error_message is not NULL).
1729 bool AreValidArgumentCounts(intptr_t num_arguments, 1734 bool AreValidArgumentCounts(intptr_t num_arguments,
1730 intptr_t num_named_arguments, 1735 intptr_t num_named_arguments,
1731 String* error_message) const; 1736 String* error_message) const;
1732 1737
1733 // Returns true if the total argument count and the names of optional 1738 // Returns true if the total argument count and the names of optional
1734 // arguments are valid for calling this function. 1739 // arguments are valid for calling this function.
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 kConstBit = 5, 1890 kConstBit = 5,
1886 kAbstractBit = 6, 1891 kAbstractBit = 6,
1887 kVisibleBit = 7, 1892 kVisibleBit = 7,
1888 kOptimizableBit = 8, 1893 kOptimizableBit = 8,
1889 kInlinableBit = 9, 1894 kInlinableBit = 9,
1890 kIntrinsicBit = 10, 1895 kIntrinsicBit = 10,
1891 kRecognizedBit = 11, 1896 kRecognizedBit = 11,
1892 kNativeBit = 12, 1897 kNativeBit = 12,
1893 kRedirectingBit = 13, 1898 kRedirectingBit = 13,
1894 kExternalBit = 14, 1899 kExternalBit = 14,
1900 kAllowsHoistingCheckClassBit = 15,
1895 }; 1901 };
1896 class KindBits : 1902 class KindBits :
1897 public BitField<RawFunction::Kind, kKindTagBit, kKindTagSize> {}; // NOLINT 1903 public BitField<RawFunction::Kind, kKindTagBit, kKindTagSize> {}; // NOLINT
1898 class StaticBit : public BitField<bool, kStaticBit, 1> {}; 1904 class StaticBit : public BitField<bool, kStaticBit, 1> {};
1899 class ConstBit : public BitField<bool, kConstBit, 1> {}; 1905 class ConstBit : public BitField<bool, kConstBit, 1> {};
1900 class AbstractBit : public BitField<bool, kAbstractBit, 1> {}; 1906 class AbstractBit : public BitField<bool, kAbstractBit, 1> {};
1901 class VisibleBit : public BitField<bool, kVisibleBit, 1> {}; 1907 class VisibleBit : public BitField<bool, kVisibleBit, 1> {};
1902 class OptimizableBit : public BitField<bool, kOptimizableBit, 1> {}; 1908 class OptimizableBit : public BitField<bool, kOptimizableBit, 1> {};
1903 class InlinableBit : public BitField<bool, kInlinableBit, 1> {}; 1909 class InlinableBit : public BitField<bool, kInlinableBit, 1> {};
1904 class IntrinsicBit : public BitField<bool, kIntrinsicBit, 1> {}; 1910 class IntrinsicBit : public BitField<bool, kIntrinsicBit, 1> {};
1905 class RecognizedBit : public BitField<bool, kRecognizedBit, 1> {}; 1911 class RecognizedBit : public BitField<bool, kRecognizedBit, 1> {};
1906 class NativeBit : public BitField<bool, kNativeBit, 1> {}; 1912 class NativeBit : public BitField<bool, kNativeBit, 1> {};
1907 class ExternalBit : public BitField<bool, kExternalBit, 1> {}; 1913 class ExternalBit : public BitField<bool, kExternalBit, 1> {};
1908 class RedirectingBit : public BitField<bool, kRedirectingBit, 1> {}; 1914 class RedirectingBit : public BitField<bool, kRedirectingBit, 1> {};
1915 class AllowsHoistingCheckClassBit :
1916 public BitField<bool, kAllowsHoistingCheckClassBit, 1> {}; // NOLINT
1909 1917
1910 void set_name(const String& value) const; 1918 void set_name(const String& value) const;
1911 void set_kind(RawFunction::Kind value) const; 1919 void set_kind(RawFunction::Kind value) const;
1912 void set_is_static(bool value) const; 1920 void set_is_static(bool value) const;
1913 void set_is_const(bool value) const; 1921 void set_is_const(bool value) const;
1914 void set_is_external(bool value) const; 1922 void set_is_external(bool value) const;
1915 void set_parent_function(const Function& value) const; 1923 void set_parent_function(const Function& value) const;
1916 void set_owner(const Object& value) const; 1924 void set_owner(const Object& value) const;
1917 RawFunction* implicit_closure_function() const; 1925 RawFunction* implicit_closure_function() const;
1918 void set_implicit_closure_function(const Function& value) const; 1926 void set_implicit_closure_function(const Function& value) const;
(...skipping 4673 matching lines...) Expand 10 before | Expand all | Expand 10 after
6592 6600
6593 6601
6594 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 6602 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
6595 intptr_t index) { 6603 intptr_t index) {
6596 return array.At((index * kEntryLength) + kTargetFunctionIndex); 6604 return array.At((index * kEntryLength) + kTargetFunctionIndex);
6597 } 6605 }
6598 6606
6599 } // namespace dart 6607 } // namespace dart
6600 6608
6601 #endif // VM_OBJECT_H_ 6609 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698