Line data Source code
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
3 : // found in the LICENSE file.
4 :
5 : #ifndef V8_IC_INL_H_
6 : #define V8_IC_INL_H_
7 :
8 : #include "src/ic/ic.h"
9 :
10 : #include "src/assembler-inl.h"
11 : #include "src/debug/debug.h"
12 : #include "src/macro-assembler.h"
13 : #include "src/prototype.h"
14 :
15 : namespace v8 {
16 : namespace internal {
17 :
18 :
19 0 : Address IC::address() const {
20 : // Get the address of the call.
21 : return Assembler::target_address_from_return_address(pc());
22 : }
23 :
24 :
25 : Address IC::constant_pool() const {
26 : if (FLAG_enable_embedded_constant_pool) {
27 : return raw_constant_pool();
28 : } else {
29 : return nullptr;
30 : }
31 : }
32 :
33 :
34 : Address IC::raw_constant_pool() const {
35 : if (FLAG_enable_embedded_constant_pool) {
36 : return *constant_pool_address_;
37 : } else {
38 : return nullptr;
39 : }
40 : }
41 :
42 :
43 : bool IC::IsHandler(Object* object) {
44 : return (object->IsSmi() && (object != nullptr)) || object->IsTuple2() ||
45 : object->IsTuple3() || object->IsFixedArray() || object->IsWeakCell() ||
46 : object->IsCode();
47 : }
48 :
49 0 : bool IC::AddressIsDeoptimizedCode() const {
50 0 : return AddressIsDeoptimizedCode(isolate(), address());
51 : }
52 :
53 :
54 0 : bool IC::AddressIsDeoptimizedCode(Isolate* isolate, Address address) {
55 : Code* host =
56 0 : isolate->inner_pointer_to_code_cache()->GetCacheEntry(address)->code;
57 0 : return (host->kind() == Code::OPTIMIZED_FUNCTION &&
58 0 : host->marked_for_deoptimization());
59 : }
60 : } // namespace internal
61 : } // namespace v8
62 :
63 : #endif // V8_IC_INL_H_
|