OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 }; | 786 }; |
787 | 787 |
788 template <class Dest, class Source> | 788 template <class Dest, class Source> |
789 INLINE(Dest BitCast(const Source& source)); | 789 INLINE(Dest BitCast(const Source& source)); |
790 | 790 |
791 template <class Dest, class Source> | 791 template <class Dest, class Source> |
792 inline Dest BitCast(const Source& source) { | 792 inline Dest BitCast(const Source& source) { |
793 return BitCastHelper<Dest, Source>::cast(source); | 793 return BitCastHelper<Dest, Source>::cast(source); |
794 } | 794 } |
795 | 795 |
| 796 |
| 797 template<typename ElementType, int NumElements> |
| 798 class EmbeddedContainer { |
| 799 public: |
| 800 EmbeddedContainer() : elems_() { } |
| 801 |
| 802 int length() { return NumElements; } |
| 803 ElementType& operator[](int i) { |
| 804 ASSERT(i < length()); |
| 805 return elems_[i]; |
| 806 } |
| 807 |
| 808 private: |
| 809 ElementType elems_[NumElements]; |
| 810 }; |
| 811 |
| 812 |
| 813 template<typename ElementType> |
| 814 class EmbeddedContainer<ElementType, 0> { |
| 815 public: |
| 816 int length() { return 0; } |
| 817 ElementType& operator[](int i) { |
| 818 UNREACHABLE(); |
| 819 static ElementType t = 0; |
| 820 return t; |
| 821 } |
| 822 }; |
| 823 |
| 824 |
796 } } // namespace v8::internal | 825 } } // namespace v8::internal |
797 | 826 |
798 #endif // V8_UTILS_H_ | 827 #endif // V8_UTILS_H_ |
OLD | NEW |