OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/ast.h" | 7 #include "src/ast.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/compiler.h" | 9 #include "src/compiler.h" |
10 #include "src/ic/ic.h" | 10 #include "src/ic/ic.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 | 82 |
83 | 83 |
84 bool TypeFeedbackOracle::StoreIsUninitialized(TypeFeedbackId ast_id) { | 84 bool TypeFeedbackOracle::StoreIsUninitialized(TypeFeedbackId ast_id) { |
85 Handle<Object> maybe_code = GetInfo(ast_id); | 85 Handle<Object> maybe_code = GetInfo(ast_id); |
86 if (!maybe_code->IsCode()) return false; | 86 if (!maybe_code->IsCode()) return false; |
87 Handle<Code> code = Handle<Code>::cast(maybe_code); | 87 Handle<Code> code = Handle<Code>::cast(maybe_code); |
88 return code->ic_state() == UNINITIALIZED; | 88 return code->ic_state() == UNINITIALIZED; |
89 } | 89 } |
90 | 90 |
91 | 91 |
| 92 bool TypeFeedbackOracle::CallIsUninitialized(FeedbackVectorICSlot slot) { |
| 93 Handle<Object> value = GetInfo(slot); |
| 94 return value->IsUndefined() || |
| 95 value.is_identical_to( |
| 96 TypeFeedbackVector::UninitializedSentinel(isolate())); |
| 97 } |
| 98 |
| 99 |
92 bool TypeFeedbackOracle::CallIsMonomorphic(FeedbackVectorICSlot slot) { | 100 bool TypeFeedbackOracle::CallIsMonomorphic(FeedbackVectorICSlot slot) { |
93 Handle<Object> value = GetInfo(slot); | 101 Handle<Object> value = GetInfo(slot); |
94 return value->IsAllocationSite() || value->IsJSFunction(); | 102 return value->IsAllocationSite() || value->IsJSFunction(); |
95 } | 103 } |
96 | 104 |
97 | 105 |
98 bool TypeFeedbackOracle::CallNewIsMonomorphic(FeedbackVectorSlot slot) { | 106 bool TypeFeedbackOracle::CallNewIsMonomorphic(FeedbackVectorSlot slot) { |
99 Handle<Object> info = GetInfo(slot); | 107 Handle<Object> info = GetInfo(slot); |
100 return FLAG_pretenuring_call_new | 108 return FLAG_pretenuring_call_new |
101 ? info->IsJSFunction() | 109 ? info->IsJSFunction() |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 UnseededNumberDictionary::kNotFound); | 477 UnseededNumberDictionary::kNotFound); |
470 // Dictionary has been allocated with sufficient size for all elements. | 478 // Dictionary has been allocated with sufficient size for all elements. |
471 DisallowHeapAllocation no_need_to_resize_dictionary; | 479 DisallowHeapAllocation no_need_to_resize_dictionary; |
472 HandleScope scope(isolate()); | 480 HandleScope scope(isolate()); |
473 USE(UnseededNumberDictionary::AtNumberPut( | 481 USE(UnseededNumberDictionary::AtNumberPut( |
474 dictionary_, IdToKey(ast_id), handle(target, isolate()))); | 482 dictionary_, IdToKey(ast_id), handle(target, isolate()))); |
475 } | 483 } |
476 | 484 |
477 | 485 |
478 } } // namespace v8::internal | 486 } } // namespace v8::internal |
OLD | NEW |