OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/ic/ic-compiler.h" | 5 #include "src/ic/ic-compiler.h" |
6 | 6 |
7 #include "src/ic/handler-compiler.h" | 7 #include "src/ic/handler-compiler.h" |
8 #include "src/ic/ic-inl.h" | 8 #include "src/ic/ic-inl.h" |
9 #include "src/profiler/cpu-profiler.h" | 9 #include "src/profiler/cpu-profiler.h" |
10 | 10 |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 KeyedStoreIC::ComputeExtraICState(language_mode, store_mode); | 168 KeyedStoreIC::ComputeExtraICState(language_mode, store_mode); |
169 PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state); | 169 PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state); |
170 compiler.CompileKeyedStorePolymorphicHandlers( | 170 compiler.CompileKeyedStorePolymorphicHandlers( |
171 receiver_maps, transitioned_maps, handlers, store_mode); | 171 receiver_maps, transitioned_maps, handlers, store_mode); |
172 } | 172 } |
173 | 173 |
174 | 174 |
175 Handle<Code> PropertyICCompiler::CompileLoadInitialize(Code::Flags flags) { | 175 Handle<Code> PropertyICCompiler::CompileLoadInitialize(Code::Flags flags) { |
176 LoadIC::GenerateInitialize(masm()); | 176 LoadIC::GenerateInitialize(masm()); |
177 Handle<Code> code = GetCodeWithFlags(flags, "CompileLoadInitialize"); | 177 Handle<Code> code = GetCodeWithFlags(flags, "CompileLoadInitialize"); |
178 PROFILE(isolate(), CodeCreateEvent(Logger::LOAD_INITIALIZE_TAG, *code, 0)); | 178 PROFILE(isolate(), CodeCreateEvent(Logger::LOAD_INITIALIZE_TAG, |
| 179 AbstractCode::cast(*code), 0)); |
179 return code; | 180 return code; |
180 } | 181 } |
181 | 182 |
182 | 183 |
183 Handle<Code> PropertyICCompiler::CompileStoreInitialize(Code::Flags flags) { | 184 Handle<Code> PropertyICCompiler::CompileStoreInitialize(Code::Flags flags) { |
184 StoreIC::GenerateInitialize(masm()); | 185 StoreIC::GenerateInitialize(masm()); |
185 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreInitialize"); | 186 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreInitialize"); |
186 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_INITIALIZE_TAG, *code, 0)); | 187 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_INITIALIZE_TAG, |
| 188 AbstractCode::cast(*code), 0)); |
187 return code; | 189 return code; |
188 } | 190 } |
189 | 191 |
190 | 192 |
191 Handle<Code> PropertyICCompiler::CompileStorePreMonomorphic(Code::Flags flags) { | 193 Handle<Code> PropertyICCompiler::CompileStorePreMonomorphic(Code::Flags flags) { |
192 StoreIC::GeneratePreMonomorphic(masm()); | 194 StoreIC::GeneratePreMonomorphic(masm()); |
193 Handle<Code> code = GetCodeWithFlags(flags, "CompileStorePreMonomorphic"); | 195 Handle<Code> code = GetCodeWithFlags(flags, "CompileStorePreMonomorphic"); |
194 PROFILE(isolate(), | 196 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_PREMONOMORPHIC_TAG, |
195 CodeCreateEvent(Logger::STORE_PREMONOMORPHIC_TAG, *code, 0)); | 197 AbstractCode::cast(*code), 0)); |
196 return code; | 198 return code; |
197 } | 199 } |
198 | 200 |
199 | 201 |
200 Handle<Code> PropertyICCompiler::CompileStoreGeneric(Code::Flags flags) { | 202 Handle<Code> PropertyICCompiler::CompileStoreGeneric(Code::Flags flags) { |
201 ExtraICState extra_state = Code::ExtractExtraICStateFromFlags(flags); | 203 ExtraICState extra_state = Code::ExtractExtraICStateFromFlags(flags); |
202 LanguageMode language_mode = StoreICState::GetLanguageMode(extra_state); | 204 LanguageMode language_mode = StoreICState::GetLanguageMode(extra_state); |
203 GenerateRuntimeSetProperty(masm(), language_mode); | 205 GenerateRuntimeSetProperty(masm(), language_mode); |
204 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreGeneric"); | 206 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreGeneric"); |
205 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_GENERIC_TAG, *code, 0)); | 207 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_GENERIC_TAG, |
| 208 AbstractCode::cast(*code), 0)); |
206 return code; | 209 return code; |
207 } | 210 } |
208 | 211 |
209 | 212 |
210 Handle<Code> PropertyICCompiler::CompileStoreMegamorphic(Code::Flags flags) { | 213 Handle<Code> PropertyICCompiler::CompileStoreMegamorphic(Code::Flags flags) { |
211 StoreIC::GenerateMegamorphic(masm()); | 214 StoreIC::GenerateMegamorphic(masm()); |
212 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreMegamorphic"); | 215 Handle<Code> code = GetCodeWithFlags(flags, "CompileStoreMegamorphic"); |
213 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_MEGAMORPHIC_TAG, *code, 0)); | 216 PROFILE(isolate(), CodeCreateEvent(Logger::STORE_MEGAMORPHIC_TAG, |
| 217 AbstractCode::cast(*code), 0)); |
214 return code; | 218 return code; |
215 } | 219 } |
216 | 220 |
217 | 221 |
218 Handle<Code> PropertyICCompiler::GetCode(Code::Kind kind, Code::StubType type, | 222 Handle<Code> PropertyICCompiler::GetCode(Code::Kind kind, Code::StubType type, |
219 Handle<Name> name, | 223 Handle<Name> name, |
220 InlineCacheState state) { | 224 InlineCacheState state) { |
221 Code::Flags flags = | 225 Code::Flags flags = |
222 Code::ComputeFlags(kind, state, extra_ic_state_, type, cache_holder()); | 226 Code::ComputeFlags(kind, state, extra_ic_state_, type, cache_holder()); |
223 Handle<Code> code = GetCodeWithFlags(flags, name); | 227 Handle<Code> code = GetCodeWithFlags(flags, name); |
224 PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name)); | 228 PROFILE(isolate(), |
| 229 CodeCreateEvent(log_kind(code), AbstractCode::cast(*code), *name)); |
225 #ifdef DEBUG | 230 #ifdef DEBUG |
226 code->VerifyEmbeddedObjects(); | 231 code->VerifyEmbeddedObjects(); |
227 #endif | 232 #endif |
228 return code; | 233 return code; |
229 } | 234 } |
230 | 235 |
231 | 236 |
232 void PropertyICCompiler::CompileKeyedStorePolymorphicHandlers( | 237 void PropertyICCompiler::CompileKeyedStorePolymorphicHandlers( |
233 MapHandleList* receiver_maps, MapHandleList* transitioned_maps, | 238 MapHandleList* receiver_maps, MapHandleList* transitioned_maps, |
234 CodeHandleList* handlers, KeyedAccessStoreMode store_mode) { | 239 CodeHandleList* handlers, KeyedAccessStoreMode store_mode) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 | 312 |
308 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); | 313 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); |
309 | 314 |
310 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); | 315 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); |
311 } | 316 } |
312 | 317 |
313 | 318 |
314 #undef __ | 319 #undef __ |
315 } // namespace internal | 320 } // namespace internal |
316 } // namespace v8 | 321 } // namespace v8 |
OLD | NEW |