OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 13921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
13932 DCHECK(kind() == OPTIMIZED_FUNCTION); | 13932 DCHECK(kind() == OPTIMIZED_FUNCTION); |
13933 Object* weak_cell_cache = | 13933 Object* weak_cell_cache = |
13934 DeoptimizationInputData::cast(deoptimization_data())->WeakCellCache(); | 13934 DeoptimizationInputData::cast(deoptimization_data())->WeakCellCache(); |
13935 if (weak_cell_cache->IsWeakCell()) { | 13935 if (weak_cell_cache->IsWeakCell()) { |
13936 DCHECK(this == WeakCell::cast(weak_cell_cache)->value()); | 13936 DCHECK(this == WeakCell::cast(weak_cell_cache)->value()); |
13937 return WeakCell::cast(weak_cell_cache); | 13937 return WeakCell::cast(weak_cell_cache); |
13938 } | 13938 } |
13939 return NULL; | 13939 return NULL; |
13940 } | 13940 } |
13941 | 13941 |
13942 InlineCacheState Code::ic_state() { | |
13943 switch (kind()) { | |
13944 case Code::BINARY_OP_IC: { | |
13945 BinaryOpICState state(GetIsolate(), extra_ic_state()); | |
13946 return state.GetICState(); | |
13947 } | |
13948 case Code::COMPARE_IC: { | |
13949 CompareICStub stub(GetIsolate(), extra_ic_state()); | |
13950 return stub.GetICState(); | |
13951 } | |
13952 case Code::TO_BOOLEAN_IC: { | |
13953 ToBooleanICStub stub(GetIsolate(), extra_ic_state()); | |
13954 return stub.GetICState(); | |
13955 } | |
13956 case Code::DEBUG_STUB: | |
13957 return UNINITIALIZED; | |
13958 | |
13959 default: | |
13960 DCHECK(is_inline_cache_stub() || !IC::ICUseVector(kind())); | |
13961 return UNINITIALIZED; | |
Toon Verwaest
2016/06/09 13:49:12
This looks weird, this case should be unreachable
Igor Sheludko
2016/06/09 15:18:21
Done.
| |
13962 } | |
13963 } | |
13942 | 13964 |
13943 #ifdef ENABLE_DISASSEMBLER | 13965 #ifdef ENABLE_DISASSEMBLER |
13944 | 13966 |
13945 void DeoptimizationInputData::DeoptimizationInputDataPrint( | 13967 void DeoptimizationInputData::DeoptimizationInputDataPrint( |
13946 std::ostream& os) { // NOLINT | 13968 std::ostream& os) { // NOLINT |
13947 disasm::NameConverter converter; | 13969 disasm::NameConverter converter; |
13948 int const inlined_function_count = InlinedFunctionCount()->value(); | 13970 int const inlined_function_count = InlinedFunctionCount()->value(); |
13949 os << "Inlined functions (count = " << inlined_function_count << ")\n"; | 13971 os << "Inlined functions (count = " << inlined_function_count << ")\n"; |
13950 for (int id = 0; id < inlined_function_count; ++id) { | 13972 for (int id = 0; id < inlined_function_count; ++id) { |
13951 Object* info = LiteralArray()->get(id); | 13973 Object* info = LiteralArray()->get(id); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
14195 const char* Code::ICState2String(InlineCacheState state) { | 14217 const char* Code::ICState2String(InlineCacheState state) { |
14196 switch (state) { | 14218 switch (state) { |
14197 case UNINITIALIZED: return "UNINITIALIZED"; | 14219 case UNINITIALIZED: return "UNINITIALIZED"; |
14198 case PREMONOMORPHIC: return "PREMONOMORPHIC"; | 14220 case PREMONOMORPHIC: return "PREMONOMORPHIC"; |
14199 case MONOMORPHIC: return "MONOMORPHIC"; | 14221 case MONOMORPHIC: return "MONOMORPHIC"; |
14200 case RECOMPUTE_HANDLER: | 14222 case RECOMPUTE_HANDLER: |
14201 return "RECOMPUTE_HANDLER"; | 14223 return "RECOMPUTE_HANDLER"; |
14202 case POLYMORPHIC: return "POLYMORPHIC"; | 14224 case POLYMORPHIC: return "POLYMORPHIC"; |
14203 case MEGAMORPHIC: return "MEGAMORPHIC"; | 14225 case MEGAMORPHIC: return "MEGAMORPHIC"; |
14204 case GENERIC: return "GENERIC"; | 14226 case GENERIC: return "GENERIC"; |
14205 case DEBUG_STUB: return "DEBUG_STUB"; | |
14206 } | 14227 } |
14207 UNREACHABLE(); | 14228 UNREACHABLE(); |
14208 return NULL; | 14229 return NULL; |
14209 } | 14230 } |
14210 | 14231 |
14211 | 14232 |
14212 void Code::PrintExtraICState(std::ostream& os, // NOLINT | 14233 void Code::PrintExtraICState(std::ostream& os, // NOLINT |
14213 Kind kind, ExtraICState extra) { | 14234 Kind kind, ExtraICState extra) { |
14214 os << "extra_ic_state = "; | 14235 os << "extra_ic_state = "; |
14215 if ((kind == STORE_IC || kind == KEYED_STORE_IC) && | 14236 if ((kind == STORE_IC || kind == KEYED_STORE_IC) && |
(...skipping 4645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
18861 if (cell->value() != *new_value) { | 18882 if (cell->value() != *new_value) { |
18862 cell->set_value(*new_value); | 18883 cell->set_value(*new_value); |
18863 Isolate* isolate = cell->GetIsolate(); | 18884 Isolate* isolate = cell->GetIsolate(); |
18864 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18885 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
18865 isolate, DependentCode::kPropertyCellChangedGroup); | 18886 isolate, DependentCode::kPropertyCellChangedGroup); |
18866 } | 18887 } |
18867 } | 18888 } |
18868 | 18889 |
18869 } // namespace internal | 18890 } // namespace internal |
18870 } // namespace v8 | 18891 } // namespace v8 |
OLD | NEW |