Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 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 |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef V8_COMPILER_JS_CALL_REDUCER_H_ |
| 6 | #define V8_COMPILER_JS_CALL_REDUCER_H_ |
| 7 | |
| 8 | #include "src/base/flags.h" |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 9 | #include "src/compiler/frame-states.h" |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 10 | #include "src/compiler/globals.h" |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 11 | #include "src/compiler/graph-reducer.h" |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 12 | #include "src/compiler/node-properties.h" |
| 13 | #include "src/deoptimizer/deoptimize-reason.h" |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 14 | |
| 15 | namespace v8 { |
| 16 | namespace internal { |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 17 | |
| 18 | // Forward declarations. |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 19 | class Factory; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 20 | class JSGlobalProxy; |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 21 | |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 22 | namespace compiler { |
| 23 | |
| 24 | // Forward declarations. |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 25 | class CallFrequency; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 26 | class CommonOperatorBuilder; |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 27 | class CompilationDependencies; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 28 | struct FeedbackSource; |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 29 | struct FieldAccess; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 30 | class JSCallReducerAssembler; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 31 | class JSGraph; |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 32 | class JSHeapBroker; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 33 | class JSOperatorBuilder; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 34 | class MapInference; |
| 35 | class NodeProperties; |
Ben Murdoch | f91f061 | 2016-11-29 16:50:11 +0000 | [diff] [blame] | 36 | class SimplifiedOperatorBuilder; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 37 | |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 38 | // Performs strength reduction on {JSConstruct} and {JSCall} nodes, |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 39 | // which might allow inlining or other optimizations to be performed afterwards. |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 40 | class V8_EXPORT_PRIVATE JSCallReducer final : public AdvancedReducer { |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 41 | public: |
| 42 | // Flags that control the mode of operation. |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 43 | enum Flag { |
| 44 | kNoFlags = 0u, |
| 45 | kBailoutOnUninitialized = 1u << 0, |
| 46 | }; |
| 47 | using Flags = base::Flags<Flag>; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 48 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 49 | JSCallReducer(Editor* editor, JSGraph* jsgraph, JSHeapBroker* broker, |
| 50 | Zone* temp_zone, Flags flags, |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 51 | CompilationDependencies* dependencies) |
Ben Murdoch | f3b273f | 2017-01-17 12:11:28 +0000 | [diff] [blame] | 52 | : AdvancedReducer(editor), |
| 53 | jsgraph_(jsgraph), |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 54 | broker_(broker), |
| 55 | temp_zone_(temp_zone), |
Ben Murdoch | f3b273f | 2017-01-17 12:11:28 +0000 | [diff] [blame] | 56 | flags_(flags), |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 57 | dependencies_(dependencies) {} |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 58 | |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 59 | const char* reducer_name() const override { return "JSCallReducer"; } |
| 60 | |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 61 | Reduction Reduce(Node* node) final; |
| 62 | |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 63 | // Processes the waitlist gathered while the reducer was running, |
| 64 | // and does a final attempt to reduce the nodes in the waitlist. |
| 65 | void Finalize() final; |
| 66 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 67 | // JSCallReducer outsources much work to a graph assembler. |
| 68 | void RevisitForGraphAssembler(Node* node) { Revisit(node); } |
| 69 | Zone* ZoneForGraphAssembler() const { return temp_zone(); } |
| 70 | JSGraph* JSGraphForGraphAssembler() const { return jsgraph(); } |
| 71 | |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 72 | private: |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 73 | Reduction ReduceBooleanConstructor(Node* node); |
| 74 | Reduction ReduceCallApiFunction(Node* node, |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 75 | const SharedFunctionInfoRef& shared); |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 76 | Reduction ReduceFunctionPrototypeApply(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 77 | Reduction ReduceFunctionPrototypeBind(Node* node); |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 78 | Reduction ReduceFunctionPrototypeCall(Node* node); |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 79 | Reduction ReduceFunctionPrototypeHasInstance(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 80 | Reduction ReduceObjectConstructor(Node* node); |
| 81 | Reduction ReduceObjectGetPrototype(Node* node, Node* object); |
| 82 | Reduction ReduceObjectGetPrototypeOf(Node* node); |
| 83 | Reduction ReduceObjectIs(Node* node); |
Ben Murdoch | c8c1d9e | 2017-03-08 14:04:23 +0000 | [diff] [blame] | 84 | Reduction ReduceObjectPrototypeGetProto(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 85 | Reduction ReduceObjectPrototypeHasOwnProperty(Node* node); |
| 86 | Reduction ReduceObjectPrototypeIsPrototypeOf(Node* node); |
| 87 | Reduction ReduceObjectCreate(Node* node); |
| 88 | Reduction ReduceReflectApply(Node* node); |
| 89 | Reduction ReduceReflectConstruct(Node* node); |
| 90 | Reduction ReduceReflectGet(Node* node); |
| 91 | Reduction ReduceReflectGetPrototypeOf(Node* node); |
| 92 | Reduction ReduceReflectHas(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 93 | |
| 94 | Reduction ReduceArrayConstructor(Node* node); |
| 95 | Reduction ReduceArrayEvery(Node* node, const SharedFunctionInfoRef& shared); |
| 96 | Reduction ReduceArrayFilter(Node* node, const SharedFunctionInfoRef& shared); |
| 97 | Reduction ReduceArrayFindIndex(Node* node, |
| 98 | const SharedFunctionInfoRef& shared); |
| 99 | Reduction ReduceArrayFind(Node* node, const SharedFunctionInfoRef& shared); |
| 100 | Reduction ReduceArrayForEach(Node* node, const SharedFunctionInfoRef& shared); |
| 101 | Reduction ReduceArrayIncludes(Node* node); |
| 102 | Reduction ReduceArrayIndexOf(Node* node); |
| 103 | Reduction ReduceArrayIsArray(Node* node); |
| 104 | Reduction ReduceArrayMap(Node* node, const SharedFunctionInfoRef& shared); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 105 | Reduction ReduceArrayPrototypePop(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 106 | Reduction ReduceArrayPrototypePush(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 107 | Reduction ReduceArrayPrototypeShift(Node* node); |
| 108 | Reduction ReduceArrayPrototypeSlice(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 109 | Reduction ReduceArrayReduce(Node* node, const SharedFunctionInfoRef& shared); |
| 110 | Reduction ReduceArrayReduceRight(Node* node, |
| 111 | const SharedFunctionInfoRef& shared); |
| 112 | Reduction ReduceArraySome(Node* node, const SharedFunctionInfoRef& shared); |
| 113 | |
| 114 | enum class ArrayIteratorKind { kArrayLike, kTypedArray }; |
| 115 | Reduction ReduceArrayIterator(Node* node, ArrayIteratorKind array_kind, |
| 116 | IterationKind iteration_kind); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 117 | Reduction ReduceArrayIteratorPrototypeNext(Node* node); |
| 118 | Reduction ReduceFastArrayIteratorNext(InstanceType type, Node* node, |
| 119 | IterationKind kind); |
| 120 | |
| 121 | Reduction ReduceCallOrConstructWithArrayLikeOrSpread( |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 122 | Node* node, int arraylike_or_spread_index, CallFrequency const& frequency, |
| 123 | FeedbackSource const& feedback, SpeculationMode speculation_mode, |
| 124 | CallFeedbackRelation feedback_relation); |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 125 | Reduction ReduceJSConstruct(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 126 | Reduction ReduceJSConstructWithArrayLike(Node* node); |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 127 | Reduction ReduceJSConstructWithSpread(Node* node); |
| 128 | Reduction ReduceJSCall(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 129 | Reduction ReduceJSCall(Node* node, const SharedFunctionInfoRef& shared); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 130 | Reduction ReduceJSCallWithArrayLike(Node* node); |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 131 | Reduction ReduceJSCallWithSpread(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 132 | Reduction ReduceRegExpPrototypeTest(Node* node); |
| 133 | Reduction ReduceReturnReceiver(Node* node); |
| 134 | Reduction ReduceStringPrototypeIndexOf(Node* node); |
| 135 | Reduction ReduceStringPrototypeSubstring(Node* node); |
| 136 | Reduction ReduceStringPrototypeSlice(Node* node); |
| 137 | Reduction ReduceStringPrototypeSubstr(Node* node); |
| 138 | Reduction ReduceStringPrototypeStringAt( |
| 139 | const Operator* string_access_operator, Node* node); |
| 140 | Reduction ReduceStringPrototypeCharAt(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 141 | Reduction ReduceStringPrototypeStartsWith(Node* node); |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 142 | |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 143 | #ifdef V8_INTL_SUPPORT |
| 144 | Reduction ReduceStringPrototypeToLowerCaseIntl(Node* node); |
| 145 | Reduction ReduceStringPrototypeToUpperCaseIntl(Node* node); |
| 146 | #endif // V8_INTL_SUPPORT |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 147 | |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 148 | Reduction ReduceStringFromCharCode(Node* node); |
| 149 | Reduction ReduceStringFromCodePoint(Node* node); |
| 150 | Reduction ReduceStringPrototypeIterator(Node* node); |
| 151 | Reduction ReduceStringIteratorPrototypeNext(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 152 | Reduction ReduceStringPrototypeConcat(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 153 | |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 154 | Reduction ReducePromiseConstructor(Node* node); |
| 155 | Reduction ReducePromiseInternalConstructor(Node* node); |
| 156 | Reduction ReducePromiseInternalReject(Node* node); |
| 157 | Reduction ReducePromiseInternalResolve(Node* node); |
| 158 | Reduction ReducePromisePrototypeCatch(Node* node); |
| 159 | Reduction ReducePromisePrototypeFinally(Node* node); |
| 160 | Reduction ReducePromisePrototypeThen(Node* node); |
| 161 | Reduction ReducePromiseResolveTrampoline(Node* node); |
| 162 | |
| 163 | Reduction ReduceTypedArrayConstructor(Node* node, |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 164 | const SharedFunctionInfoRef& shared); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 165 | Reduction ReduceTypedArrayPrototypeToStringTag(Node* node); |
| 166 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 167 | Reduction ReduceForInsufficientFeedback(Node* node, DeoptimizeReason reason); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 168 | |
| 169 | Reduction ReduceMathUnary(Node* node, const Operator* op); |
| 170 | Reduction ReduceMathBinary(Node* node, const Operator* op); |
| 171 | Reduction ReduceMathImul(Node* node); |
| 172 | Reduction ReduceMathClz32(Node* node); |
| 173 | Reduction ReduceMathMinMax(Node* node, const Operator* op, Node* empty_value); |
| 174 | |
| 175 | Reduction ReduceNumberIsFinite(Node* node); |
| 176 | Reduction ReduceNumberIsInteger(Node* node); |
| 177 | Reduction ReduceNumberIsSafeInteger(Node* node); |
| 178 | Reduction ReduceNumberIsNaN(Node* node); |
| 179 | |
| 180 | Reduction ReduceGlobalIsFinite(Node* node); |
| 181 | Reduction ReduceGlobalIsNaN(Node* node); |
| 182 | |
| 183 | Reduction ReduceMapPrototypeHas(Node* node); |
| 184 | Reduction ReduceMapPrototypeGet(Node* node); |
| 185 | Reduction ReduceCollectionIteration(Node* node, |
| 186 | CollectionKind collection_kind, |
| 187 | IterationKind iteration_kind); |
| 188 | Reduction ReduceCollectionPrototypeSize(Node* node, |
| 189 | CollectionKind collection_kind); |
| 190 | Reduction ReduceCollectionIteratorPrototypeNext( |
| 191 | Node* node, int entry_size, Handle<HeapObject> empty_collection, |
| 192 | InstanceType collection_iterator_instance_type_first, |
| 193 | InstanceType collection_iterator_instance_type_last); |
| 194 | |
| 195 | Reduction ReduceArrayBufferIsView(Node* node); |
| 196 | Reduction ReduceArrayBufferViewAccessor(Node* node, |
| 197 | InstanceType instance_type, |
| 198 | FieldAccess const& access); |
| 199 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 200 | enum class DataViewAccess { kGet, kSet }; |
| 201 | Reduction ReduceDataViewAccess(Node* node, DataViewAccess access, |
| 202 | ExternalArrayType element_type); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 203 | |
| 204 | Reduction ReduceDatePrototypeGetTime(Node* node); |
| 205 | Reduction ReduceDateNow(Node* node); |
| 206 | Reduction ReduceNumberParseInt(Node* node); |
| 207 | |
| 208 | Reduction ReduceNumberConstructor(Node* node); |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 209 | Reduction ReduceBigIntAsUintN(Node* node); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 210 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 211 | // The pendant to ReplaceWithValue when using GraphAssembler-based reductions. |
| 212 | Reduction ReplaceWithSubgraph(JSCallReducerAssembler* gasm, Node* subgraph); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 213 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 214 | // Helper to verify promise receiver maps are as expected. |
| 215 | // On bailout from a reduction, be sure to return inference.NoChange(). |
| 216 | bool DoPromiseChecks(MapInference* inference); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 217 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 218 | Node* CreateClosureFromBuiltinSharedFunctionInfo(SharedFunctionInfoRef shared, |
| 219 | Node* context, Node* effect, |
| 220 | Node* control); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 221 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 222 | void CheckIfElementsKind(Node* receiver_elements_kind, ElementsKind kind, |
| 223 | Node* control, Node** if_true, Node** if_false); |
| 224 | Node* LoadReceiverElementsKind(Node* receiver, Effect* effect, |
| 225 | Control control); |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 226 | |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 227 | bool IsBuiltinOrApiFunction(JSFunctionRef target_ref) const; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 228 | |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 229 | Graph* graph() const; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 230 | JSGraph* jsgraph() const { return jsgraph_; } |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 231 | JSHeapBroker* broker() const { return broker_; } |
| 232 | Zone* temp_zone() const { return temp_zone_; } |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 233 | Isolate* isolate() const; |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 234 | Factory* factory() const; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 235 | NativeContextRef native_context() const; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 236 | CommonOperatorBuilder* common() const; |
| 237 | JSOperatorBuilder* javascript() const; |
Ben Murdoch | f91f061 | 2016-11-29 16:50:11 +0000 | [diff] [blame] | 238 | SimplifiedOperatorBuilder* simplified() const; |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 239 | Flags flags() const { return flags_; } |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 240 | CompilationDependencies* dependencies() const { return dependencies_; } |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 241 | bool should_disallow_heap_access() const; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 242 | |
| 243 | JSGraph* const jsgraph_; |
Rubin Xu | 6e1e26a | 2021-02-10 00:04:48 +0000 | [diff] [blame^] | 244 | JSHeapBroker* const broker_; |
| 245 | Zone* const temp_zone_; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 246 | Flags const flags_; |
Ben Murdoch | 62ed631 | 2017-06-06 11:06:27 +0100 | [diff] [blame] | 247 | CompilationDependencies* const dependencies_; |
Rubin Xu | 2894c6a | 2019-02-07 16:01:35 +0000 | [diff] [blame] | 248 | std::set<Node*> waitlist_; |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 249 | }; |
| 250 | |
Ben Murdoch | 014dc51 | 2016-03-22 12:00:34 +0000 | [diff] [blame] | 251 | } // namespace compiler |
| 252 | } // namespace internal |
| 253 | } // namespace v8 |
| 254 | |
| 255 | #endif // V8_COMPILER_JS_CALL_REDUCER_H_ |