OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 void set_predictable_code_size(bool value) { predictable_code_size_ = value; } | 72 void set_predictable_code_size(bool value) { predictable_code_size_ = value; } |
73 | 73 |
74 uint64_t enabled_cpu_features() const { return enabled_cpu_features_; } | 74 uint64_t enabled_cpu_features() const { return enabled_cpu_features_; } |
75 void set_enabled_cpu_features(uint64_t features) { | 75 void set_enabled_cpu_features(uint64_t features) { |
76 enabled_cpu_features_ = features; | 76 enabled_cpu_features_ = features; |
77 } | 77 } |
78 bool IsEnabled(CpuFeature f) { | 78 bool IsEnabled(CpuFeature f) { |
79 return (enabled_cpu_features_ & (static_cast<uint64_t>(1) << f)) != 0; | 79 return (enabled_cpu_features_ & (static_cast<uint64_t>(1) << f)) != 0; |
80 } | 80 } |
81 | 81 |
82 bool is_ool_constant_pool_available() const { | 82 bool is_constant_pool_available() const { |
83 if (FLAG_enable_ool_constant_pool) { | 83 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) { |
84 return ool_constant_pool_available_; | 84 return constant_pool_available_; |
85 } else { | 85 } else { |
86 // Out-of-line constant pool not supported on this architecture. | 86 // Constant pool not supported on this architecture. |
87 UNREACHABLE(); | 87 UNREACHABLE(); |
88 return false; | 88 return false; |
89 } | 89 } |
90 } | 90 } |
91 | 91 |
92 // Overwrite a host NaN with a quiet target NaN. Used by mksnapshot for | 92 // Overwrite a host NaN with a quiet target NaN. Used by mksnapshot for |
93 // cross-snapshotting. | 93 // cross-snapshotting. |
94 static void QuietNaN(HeapObject* nan) { } | 94 static void QuietNaN(HeapObject* nan) { } |
95 | 95 |
96 int pc_offset() const { return static_cast<int>(pc_ - buffer_); } | 96 int pc_offset() const { return static_cast<int>(pc_ - buffer_); } |
97 | 97 |
98 // This function is called when code generation is aborted, so that | 98 // This function is called when code generation is aborted, so that |
99 // the assembler could clean up internal data structures. | 99 // the assembler could clean up internal data structures. |
100 virtual void AbortedCodeGeneration() { } | 100 virtual void AbortedCodeGeneration() { } |
101 | 101 |
102 static const int kMinimalBufferSize = 4*KB; | 102 static const int kMinimalBufferSize = 4*KB; |
103 | 103 |
104 protected: | 104 protected: |
105 // The buffer into which code and relocation info are generated. It could | 105 // The buffer into which code and relocation info are generated. It could |
106 // either be owned by the assembler or be provided externally. | 106 // either be owned by the assembler or be provided externally. |
107 byte* buffer_; | 107 byte* buffer_; |
108 int buffer_size_; | 108 int buffer_size_; |
109 bool own_buffer_; | 109 bool own_buffer_; |
110 | 110 |
111 void set_ool_constant_pool_available(bool available) { | 111 void set_constant_pool_available(bool available) { |
112 if (FLAG_enable_ool_constant_pool) { | 112 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) { |
113 ool_constant_pool_available_ = available; | 113 constant_pool_available_ = available; |
114 } else { | 114 } else { |
115 // Out-of-line constant pool not supported on this architecture. | 115 // Constant pool not supported on this architecture. |
116 UNREACHABLE(); | 116 UNREACHABLE(); |
117 } | 117 } |
118 } | 118 } |
119 | 119 |
120 // The program counter, which points into the buffer above and moves forward. | 120 // The program counter, which points into the buffer above and moves forward. |
121 byte* pc_; | 121 byte* pc_; |
122 | 122 |
123 private: | 123 private: |
124 Isolate* isolate_; | 124 Isolate* isolate_; |
125 int jit_cookie_; | 125 int jit_cookie_; |
126 uint64_t enabled_cpu_features_; | 126 uint64_t enabled_cpu_features_; |
127 bool emit_debug_code_; | 127 bool emit_debug_code_; |
128 bool predictable_code_size_; | 128 bool predictable_code_size_; |
129 bool serializer_enabled_; | 129 bool serializer_enabled_; |
130 | 130 |
131 // Indicates whether the constant pool can be accessed, which is only possible | 131 // Indicates whether the constant pool can be accessed, which is only possible |
132 // if the pp register points to the current code object's constant pool. | 132 // if the pp register points to the current code object's constant pool. |
133 bool ool_constant_pool_available_; | 133 bool constant_pool_available_; |
134 | 134 |
135 // Constant pool. | 135 // Constant pool. |
136 friend class FrameAndConstantPoolScope; | 136 friend class FrameAndConstantPoolScope; |
137 friend class ConstantPoolUnavailableScope; | 137 friend class ConstantPoolUnavailableScope; |
138 }; | 138 }; |
139 | 139 |
140 | 140 |
141 // Avoids emitting debug code during the lifetime of this scope object. | 141 // Avoids emitting debug code during the lifetime of this scope object. |
142 class DontEmitDebugCodeScope BASE_EMBEDDED { | 142 class DontEmitDebugCodeScope BASE_EMBEDDED { |
143 public: | 143 public: |
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 // all external references in the code so that they can be bound to the correct | 808 // all external references in the code so that they can be bound to the correct |
809 // addresses when deserializing a heap. | 809 // addresses when deserializing a heap. |
810 class ExternalReference BASE_EMBEDDED { | 810 class ExternalReference BASE_EMBEDDED { |
811 public: | 811 public: |
812 // Used in the simulator to support different native api calls. | 812 // Used in the simulator to support different native api calls. |
813 enum Type { | 813 enum Type { |
814 // Builtin call. | 814 // Builtin call. |
815 // Object* f(v8::internal::Arguments). | 815 // Object* f(v8::internal::Arguments). |
816 BUILTIN_CALL, // default | 816 BUILTIN_CALL, // default |
817 | 817 |
| 818 |
818 // Builtin that takes float arguments and returns an int. | 819 // Builtin that takes float arguments and returns an int. |
819 // int f(double, double). | 820 // int f(double, double). |
820 BUILTIN_COMPARE_CALL, | 821 BUILTIN_COMPARE_CALL, |
821 | 822 |
822 // Builtin call that returns floating point. | 823 // Builtin call that returns floating point. |
823 // double f(double, double). | 824 // double f(double, double). |
824 BUILTIN_FP_FP_CALL, | 825 BUILTIN_FP_FP_CALL, |
825 | 826 |
826 // Builtin call that returns floating point. | 827 // Builtin call that returns floating point. |
827 // double f(double). | 828 // double f(double). |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1168 NullCallWrapper() { } | 1169 NullCallWrapper() { } |
1169 virtual ~NullCallWrapper() { } | 1170 virtual ~NullCallWrapper() { } |
1170 virtual void BeforeCall(int call_size) const { } | 1171 virtual void BeforeCall(int call_size) const { } |
1171 virtual void AfterCall() const { } | 1172 virtual void AfterCall() const { } |
1172 }; | 1173 }; |
1173 | 1174 |
1174 | 1175 |
1175 } } // namespace v8::internal | 1176 } } // namespace v8::internal |
1176 | 1177 |
1177 #endif // V8_ASSEMBLER_H_ | 1178 #endif // V8_ASSEMBLER_H_ |
OLD | NEW |