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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/ic/call-optimization.h" | 7 #include "src/ic/call-optimization.h" |
8 #include "src/ic/handler-compiler.h" | 8 #include "src/ic/handler-compiler.h" |
| 9 #include "src/ic/ic.h" |
9 #include "src/ic/ic-inl.h" | 10 #include "src/ic/ic-inl.h" |
10 | 11 |
11 namespace v8 { | 12 namespace v8 { |
12 namespace internal { | 13 namespace internal { |
13 | 14 |
14 | 15 |
15 Handle<Code> PropertyHandlerCompiler::Find(Handle<Name> name, | 16 Handle<Code> PropertyHandlerCompiler::Find(Handle<Name> name, |
16 Handle<Map> stub_holder, | 17 Handle<Map> stub_holder, |
17 Code::Kind kind, | 18 Code::Kind kind, |
18 CacheHolderFlag cache_holder, | 19 CacheHolderFlag cache_holder, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 Handle<Code> PropertyHandlerCompiler::GetCode(Code::Kind kind, | 72 Handle<Code> PropertyHandlerCompiler::GetCode(Code::Kind kind, |
72 Code::StubType type, | 73 Code::StubType type, |
73 Handle<Name> name) { | 74 Handle<Name> name) { |
74 Code::Flags flags = Code::ComputeHandlerFlags(kind, type, cache_holder()); | 75 Code::Flags flags = Code::ComputeHandlerFlags(kind, type, cache_holder()); |
75 Handle<Code> code = GetCodeWithFlags(flags, name); | 76 Handle<Code> code = GetCodeWithFlags(flags, name); |
76 PROFILE(isolate(), CodeCreateEvent(Logger::STUB_TAG, *code, *name)); | 77 PROFILE(isolate(), CodeCreateEvent(Logger::STUB_TAG, *code, *name)); |
77 return code; | 78 return code; |
78 } | 79 } |
79 | 80 |
80 | 81 |
| 82 void PropertyHandlerCompiler::set_type_for_object(Handle<Object> object) { |
| 83 type_ = IC::CurrentTypeOf(object, isolate()); |
| 84 } |
| 85 |
| 86 |
81 #define __ ACCESS_MASM(masm()) | 87 #define __ ACCESS_MASM(masm()) |
82 | 88 |
83 | 89 |
84 Register NamedLoadHandlerCompiler::FrontendHeader(Register object_reg, | 90 Register NamedLoadHandlerCompiler::FrontendHeader(Register object_reg, |
85 Handle<Name> name, | 91 Handle<Name> name, |
86 Label* miss) { | 92 Label* miss) { |
87 PrototypeCheckType check_type = CHECK_ALL_MAPS; | 93 PrototypeCheckType check_type = CHECK_ALL_MAPS; |
88 int function_index = -1; | 94 int function_index = -1; |
89 if (type()->Is(HeapType::String())) { | 95 if (type()->Is(HeapType::String())) { |
90 function_index = Context::STRING_FUNCTION_INDEX; | 96 function_index = Context::STRING_FUNCTION_INDEX; |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 DCHECK(elements_kind == DICTIONARY_ELEMENTS); | 402 DCHECK(elements_kind == DICTIONARY_ELEMENTS); |
397 cached_stub = LoadDictionaryElementStub(isolate()).GetCode(); | 403 cached_stub = LoadDictionaryElementStub(isolate()).GetCode(); |
398 } | 404 } |
399 } | 405 } |
400 | 406 |
401 handlers->Add(cached_stub); | 407 handlers->Add(cached_stub); |
402 } | 408 } |
403 } | 409 } |
404 } | 410 } |
405 } // namespace v8::internal | 411 } // namespace v8::internal |
OLD | NEW |