#include "src/compiler/js-call-reducer.h"
#include <functional>
#include <optional>
#include "src/base/container-utils.h"
#include "src/base/small-vector.h"
#include "src/builtins/builtins-promise.h"
#include "src/builtins/builtins-utils.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/tnode.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/access-info.h"
#include "src/compiler/allocation-builder-inl.h"
#include "src/compiler/allocation-builder.h"
#include "src/compiler/common-operator.h"
#include "src/compiler/compilation-dependencies.h"
#include "src/compiler/fast-api-calls.h"
#include "src/compiler/feedback-source.h"
#include "src/compiler/graph-assembler.h"
#include "src/compiler/heap-refs.h"
#include "src/compiler/js-graph.h"
#include "src/compiler/js-operator.h"
#include "src/compiler/linkage.h"
#include "src/compiler/map-inference.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/opcodes.h"
#include "src/compiler/simplified-operator.h"
#include "src/compiler/state-values-utils.h"
#include "src/compiler/type-cache.h"
#include "src/compiler/use-info.h"
#include "src/flags/flags.h"
#include "src/ic/call-optimization.h"
#include "src/objects/elements-kind.h"
#include "src/objects/instance-type.h"
#include "src/objects/js-function.h"
#include "src/objects/objects-inl.h"
#include "src/objects/ordered-hash-table.h"
#include "src/utils/utils.h"
#ifdef V8_INTL_SUPPORT
#include "src/objects/intl-objects.h"
#endif
namespace v8 {
namespace internal {
namespace compiler {
#define _ …
class JSCallReducerAssembler : public JSGraphAssembler { … };
enum class ArrayReduceDirection { … };
enum class ArrayFindVariant { … };
enum class ArrayEverySomeVariant { … };
enum class ArrayIndexOfIncludesVariant { … };
class IteratingArrayBuiltinReducerAssembler : public JSCallReducerAssembler { … };
class PromiseBuiltinReducerAssembler : public JSCallReducerAssembler { … };
class FastApiCallReducerAssembler : public JSCallReducerAssembler { … };
TNode<Number> JSCallReducerAssembler::SpeculativeToNumber(
TNode<Object> value, NumberOperationHint hint) { … }
TNode<Smi> JSCallReducerAssembler::CheckSmi(TNode<Object> value) { … }
TNode<Number> JSCallReducerAssembler::CheckNumber(TNode<Object> value) { … }
TNode<String> JSCallReducerAssembler::CheckString(TNode<Object> value) { … }
TNode<Number> JSCallReducerAssembler::CheckBounds(TNode<Number> value,
TNode<Number> limit,
CheckBoundsFlags flags) { … }
TNode<Smi> JSCallReducerAssembler::TypeGuardUnsignedSmall(TNode<Object> value) { … }
TNode<Object> JSCallReducerAssembler::TypeGuardNonInternal(
TNode<Object> value) { … }
TNode<Number> JSCallReducerAssembler::TypeGuardFixedArrayLength(
TNode<Object> value) { … }
TNode<Object> JSCallReducerAssembler::Call4(
const Callable& callable, TNode<Context> context, TNode<Object> arg0,
TNode<Object> arg1, TNode<Object> arg2, TNode<Object> arg3) { … }
TNode<Object> JSCallReducerAssembler::JSCall3(
TNode<Object> function, TNode<Object> this_arg, TNode<Object> arg0,
TNode<Object> arg1, TNode<Object> arg2, FrameState frame_state) { … }
TNode<Object> JSCallReducerAssembler::JSCall4(
TNode<Object> function, TNode<Object> this_arg, TNode<Object> arg0,
TNode<Object> arg1, TNode<Object> arg2, TNode<Object> arg3,
FrameState frame_state) { … }
TNode<Object> JSCallReducerAssembler::CopyNode() { … }
TNode<JSArray> JSCallReducerAssembler::CreateArrayNoThrow(
TNode<Object> ctor, TNode<Number> size, FrameState frame_state) { … }
TNode<JSArray> JSCallReducerAssembler::AllocateEmptyJSArray(
ElementsKind kind, NativeContextRef native_context) { … }
TNode<Number> JSCallReducerAssembler::LoadMapElementsKind(TNode<Map> map) { … }
TNode<Object> JSCallReducerAssembler::ReduceMathUnary(const Operator* op) { … }
TNode<Object> JSCallReducerAssembler::ReduceMathBinary(const Operator* op) { … }
TNode<String> JSCallReducerAssembler::ReduceStringPrototypeSubstring() { … }
TNode<Boolean> JSCallReducerAssembler::ReduceStringPrototypeStartsWith(
StringRef search_element_string) { … }
TNode<Boolean> JSCallReducerAssembler::ReduceStringPrototypeStartsWith() { … }
TNode<Boolean> JSCallReducerAssembler::ReduceStringPrototypeEndsWith(
StringRef search_element_string) { … }
TNode<Boolean> JSCallReducerAssembler::ReduceStringPrototypeEndsWith() { … }
TNode<String> JSCallReducerAssembler::ReduceStringPrototypeCharAt(
StringRef s, uint32_t index) { … }
TNode<String> JSCallReducerAssembler::ReduceStringPrototypeCharAt() { … }
TNode<String> JSCallReducerAssembler::ReduceStringPrototypeSlice() { … }
TNode<Object> JSCallReducerAssembler::ReduceJSCallMathMinMaxWithArrayLike(
Builtin builtin) { … }
TNode<Object> IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeAt(
ZoneVector<MapRef> maps, bool needs_fallback_builtin_call) { … }
TNode<Number> IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypePush(
MapInference* inference) { … }
namespace {
struct ForEachFrameStateParams { … };
FrameState ForEachLoopLazyFrameState(const ForEachFrameStateParams& params,
TNode<Object> k) { … }
FrameState ForEachLoopEagerFrameState(const ForEachFrameStateParams& params,
TNode<Object> k) { … }
}
TNode<Object>
IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeForEach(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, SharedFunctionInfoRef shared) { … }
namespace {
struct ReduceFrameStateParams { … };
FrameState ReducePreLoopLazyFrameState(const ReduceFrameStateParams& params,
TNode<Object> receiver,
TNode<Object> callback, TNode<Object> k,
TNode<Number> original_length) { … }
FrameState ReducePreLoopEagerFrameState(const ReduceFrameStateParams& params,
TNode<Object> receiver,
TNode<Object> callback,
TNode<Number> original_length) { … }
FrameState ReduceLoopLazyFrameState(const ReduceFrameStateParams& params,
TNode<Object> receiver,
TNode<Object> callback, TNode<Object> k,
TNode<Number> original_length) { … }
FrameState ReduceLoopEagerFrameState(const ReduceFrameStateParams& params,
TNode<Object> receiver,
TNode<Object> callback, TNode<Object> k,
TNode<Number> original_length,
TNode<Object> accumulator) { … }
}
TNode<Object> IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, ArrayReduceDirection direction,
SharedFunctionInfoRef shared) { … }
namespace {
struct MapFrameStateParams { … };
FrameState MapPreLoopLazyFrameState(const MapFrameStateParams& params) { … }
FrameState MapLoopLazyFrameState(const MapFrameStateParams& params,
TNode<Number> k) { … }
FrameState MapLoopEagerFrameState(const MapFrameStateParams& params,
TNode<Number> k) { … }
}
TNode<JSArray> IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeMap(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, SharedFunctionInfoRef shared,
NativeContextRef native_context) { … }
namespace {
struct FilterFrameStateParams { … };
FrameState FilterLoopLazyFrameState(const FilterFrameStateParams& params,
TNode<Number> k, TNode<Number> to,
TNode<Object> element) { … }
FrameState FilterLoopEagerPostCallbackFrameState(
const FilterFrameStateParams& params, TNode<Number> k, TNode<Number> to,
TNode<Object> element, TNode<Object> callback_value) { … }
FrameState FilterLoopEagerFrameState(const FilterFrameStateParams& params,
TNode<Number> k, TNode<Number> to) { … }
}
TNode<JSArray>
IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFilter(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, SharedFunctionInfoRef shared,
NativeContextRef native_context) { … }
namespace {
struct FindFrameStateParams { … };
FrameState FindLoopLazyFrameState(const FindFrameStateParams& params,
TNode<Number> k, ArrayFindVariant variant) { … }
FrameState FindLoopEagerFrameState(const FindFrameStateParams& params,
TNode<Number> k, ArrayFindVariant variant) { … }
FrameState FindLoopAfterCallbackLazyFrameState(
const FindFrameStateParams& params, TNode<Number> next_k,
TNode<Object> if_found_value, ArrayFindVariant variant) { … }
}
TNode<Object> IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFind(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, SharedFunctionInfoRef shared,
NativeContextRef native_context, ArrayFindVariant variant) { … }
namespace {
struct EverySomeFrameStateParams { … };
FrameState EverySomeLoopLazyFrameState(const EverySomeFrameStateParams& params,
TNode<Number> k,
ArrayEverySomeVariant variant) { … }
FrameState EverySomeLoopEagerFrameState(const EverySomeFrameStateParams& params,
TNode<Number> k,
ArrayEverySomeVariant variant) { … }
}
TNode<Boolean>
IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeEverySome(
MapInference* inference, const bool has_stability_dependency,
ElementsKind kind, SharedFunctionInfoRef shared,
NativeContextRef native_context, ArrayEverySomeVariant variant) { … }
namespace {
Callable GetCallableForArrayIndexOfIncludes(ArrayIndexOfIncludesVariant variant,
ElementsKind elements_kind,
Isolate* isolate) { … }
}
TNode<Object>
IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeIndexOfIncludes(
ElementsKind kind, ArrayIndexOfIncludesVariant variant) { … }
namespace {
struct PromiseCtorFrameStateParams { … };
FrameState CreateConstructInvokeStubFrameState(
Node* node, Node* outer_frame_state, SharedFunctionInfoRef shared,
Node* context, CommonOperatorBuilder* common, Graph* graph) { … }
FrameState PromiseConstructorFrameState(
const PromiseCtorFrameStateParams& params, CommonOperatorBuilder* common,
Graph* graph) { … }
FrameState PromiseConstructorLazyFrameState(
const PromiseCtorFrameStateParams& params,
FrameState constructor_frame_state) { … }
FrameState PromiseConstructorLazyWithCatchFrameState(
const PromiseCtorFrameStateParams& params,
FrameState constructor_frame_state, TNode<JSPromise> promise,
TNode<JSFunction> reject) { … }
}
TNode<Object> PromiseBuiltinReducerAssembler::ReducePromiseConstructor(
NativeContextRef native_context) { … }
#undef _
std::pair<Node*, Node*> JSCallReducer::ReleaseEffectAndControlFromAssembler(
JSCallReducerAssembler* gasm) { … }
Reduction JSCallReducer::ReplaceWithSubgraph(JSCallReducerAssembler* gasm,
Node* subgraph) { … }
Reduction JSCallReducer::ReduceMathUnary(Node* node, const Operator* op) { … }
Reduction JSCallReducer::ReduceMathBinary(Node* node, const Operator* op) { … }
Reduction JSCallReducer::ReduceMathImul(Node* node) { … }
Reduction JSCallReducer::ReduceMathClz32(Node* node) { … }
Reduction JSCallReducer::ReduceMathMinMax(Node* node, const Operator* op,
Node* empty_value) { … }
Reduction JSCallReducer::Reduce(Node* node) { … }
void JSCallReducer::Finalize() { … }
Reduction JSCallReducer::ReduceArrayConstructor(Node* node) { … }
Reduction JSCallReducer::ReduceBooleanConstructor(Node* node) { … }
Reduction JSCallReducer::ReduceObjectConstructor(Node* node) { … }
Reduction JSCallReducer::ReduceFunctionPrototypeApply(Node* node) { … }
Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) { … }
Reduction JSCallReducer::ReduceFunctionPrototypeCall(Node* node) { … }
Reduction JSCallReducer::ReduceFunctionPrototypeHasInstance(Node* node) { … }
Reduction JSCallReducer::ReduceObjectGetPrototype(Node* node, Node* object) { … }
Reduction JSCallReducer::ReduceObjectGetPrototypeOf(Node* node) { … }
Reduction JSCallReducer::ReduceObjectIs(Node* node) { … }
Reduction JSCallReducer::ReduceObjectPrototypeGetProto(Node* node) { … }
Reduction JSCallReducer::ReduceObjectPrototypeHasOwnProperty(Node* node) { … }
Reduction JSCallReducer::ReduceObjectPrototypeIsPrototypeOf(Node* node) { … }
Reduction JSCallReducer::ReduceReflectApply(Node* node) { … }
Reduction JSCallReducer::ReduceReflectConstruct(Node* node) { … }
Reduction JSCallReducer::ReduceReflectGetPrototypeOf(Node* node) { … }
Reduction JSCallReducer::ReduceObjectCreate(Node* node) { … }
Reduction JSCallReducer::ReduceReflectGet(Node* node) { … }
Reduction JSCallReducer::ReduceReflectHas(Node* node) { … }
namespace {
bool CanInlineArrayIteratingBuiltin(JSHeapBroker* broker,
ZoneRefSet<Map> const& receiver_maps,
ElementsKind* kind_return) { … }
bool CanInlineArrayResizingBuiltin(JSHeapBroker* broker,
ZoneRefSet<Map> const& receiver_maps,
std::vector<ElementsKind>* kinds,
bool builtin_is_push = false) { … }
class IteratingArrayBuiltinHelper { … };
}
Reduction JSCallReducer::ReduceArrayForEach(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayReduce(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayReduceRight(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayMap(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayFilter(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayFind(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayFindIndex(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayEvery(Node* node,
SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceArrayIncludes(Node* node) { … }
Reduction JSCallReducer::ReduceArrayIndexOf(Node* node) { … }
Reduction JSCallReducer::ReduceArraySome(Node* node,
SharedFunctionInfoRef shared) { … }
#if V8_ENABLE_WEBASSEMBLY
namespace {
bool CanInlineJSToWasmCall(const wasm::FunctionSig* wasm_signature) { … }
}
Reduction JSCallReducer::ReduceCallWasmFunction(Node* node,
SharedFunctionInfoRef shared) { … }
#endif
FastApiCallFunctionVector CanOptimizeFastCall(
JSHeapBroker* broker, Zone* zone,
FunctionTemplateInfoRef function_template_info, size_t arg_count) { … }
Reduction JSCallReducer::ReduceCallApiFunction(Node* node,
SharedFunctionInfoRef shared) { … }
namespace {
bool IsSafeArgumentsElements(Node* node) { … }
#ifdef DEBUG
bool IsCallOrConstructWithArrayLike(Node* node) { … }
#endif
bool IsCallOrConstructWithSpread(Node* node) { … }
bool IsCallWithArrayLikeOrSpread(Node* node) { … }
}
Node* JSCallReducer::ConvertHoleToUndefined(Node* value, ElementsKind kind) { … }
void JSCallReducer::CheckIfConstructor(Node* construct) { … }
namespace {
bool ShouldUseCallICFeedback(Node* node) { … }
}
Node* JSCallReducer::CheckArrayLength(Node* array, ElementsKind elements_kind,
uint32_t array_length,
const FeedbackSource& feedback_source,
Effect effect, Control control) { … }
Reduction
JSCallReducer::ReduceCallOrConstructWithArrayLikeOrSpreadOfCreateArguments(
Node* node, Node* arguments_list, int arraylike_or_spread_index,
CallFrequency const& frequency, FeedbackSource const& feedback,
SpeculationMode speculation_mode, CallFeedbackRelation feedback_relation) { … }
Reduction JSCallReducer::ReduceCallOrConstructWithArrayLikeOrSpread(
Node* node, int argument_count, int arraylike_or_spread_index,
CallFrequency const& frequency, FeedbackSource const& feedback_source,
SpeculationMode speculation_mode, CallFeedbackRelation feedback_relation,
Node* target, Effect effect, Control control) { … }
bool JSCallReducer::IsBuiltinOrApiFunction(JSFunctionRef function) const { … }
Reduction JSCallReducer::ReduceJSCall(Node* node) { … }
Reduction JSCallReducer::ReduceJSCall(Node* node,
SharedFunctionInfoRef shared) { … }
TNode<Object> JSCallReducerAssembler::ReduceJSCallWithArrayLikeOrSpreadOfEmpty(
std::unordered_set<Node*>* generated_calls_with_array_like_or_spread) { … }
namespace {
bool TargetIsClassConstructor(Node* node, JSHeapBroker* broker) { … }
}
Reduction JSCallReducer::ReduceJSCallWithArrayLike(Node* node) { … }
Reduction JSCallReducer::ReduceJSCallWithSpread(Node* node) { … }
Reduction JSCallReducer::ReduceJSConstruct(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeIndexOfIncludes(
Node* node, StringIndexOfIncludesVariant variant) { … }
Reduction JSCallReducer::ReduceStringPrototypeSubstring(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeSlice(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeSubstr(Node* node) { … }
Reduction JSCallReducer::ReduceJSConstructWithArrayLike(Node* node) { … }
Reduction JSCallReducer::ReduceJSConstructWithSpread(Node* node) { … }
Reduction JSCallReducer::ReduceJSConstructForwardAllArgs(Node* node) { … }
Reduction JSCallReducer::ReduceReturnReceiver(Node* node) { … }
Reduction JSCallReducer::ReduceForInsufficientFeedback(
Node* node, DeoptimizeReason reason) { … }
Node* JSCallReducer::LoadReceiverElementsKind(Node* receiver, Effect* effect,
Control control) { … }
void JSCallReducer::CheckIfElementsKind(Node* receiver_elements_kind,
ElementsKind kind, Node* control,
Node** if_true, Node** if_false) { … }
Reduction JSCallReducer::ReduceArrayPrototypeAt(Node* node) { … }
Reduction JSCallReducer::ReduceArrayPrototypePush(Node* node) { … }
Reduction JSCallReducer::ReduceArrayPrototypePop(Node* node) { … }
Reduction JSCallReducer::ReduceArrayPrototypeShift(Node* node) { … }
Reduction JSCallReducer::ReduceArrayPrototypeSlice(Node* node) { … }
Reduction JSCallReducer::ReduceArrayIsArray(Node* node) { … }
Reduction JSCallReducer::ReduceArrayIterator(Node* node,
ArrayIteratorKind array_kind,
IterationKind iteration_kind) { … }
Reduction JSCallReducer::ReduceArrayIteratorPrototypeNext(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeStringAt(
const Operator* string_access_operator, Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeStartsWith(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeEndsWith(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeCharAt(Node* node) { … }
#ifdef V8_INTL_SUPPORT
Reduction JSCallReducer::ReduceStringPrototypeToLowerCaseIntl(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeToUpperCaseIntl(Node* node) { … }
#endif
Reduction JSCallReducer::ReduceStringFromCharCode(Node* node) { … }
Reduction JSCallReducer::ReduceStringFromCodePoint(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeIterator(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeLocaleCompare(Node* node) { … }
Reduction JSCallReducer::ReduceStringIteratorPrototypeNext(Node* node) { … }
Reduction JSCallReducer::ReduceStringPrototypeConcat(Node* node) { … }
namespace {
FrameState CreateStringCreateLazyDeoptContinuationFrameState(
JSGraph* graph, SharedFunctionInfoRef shared, Node* target, Node* context,
Node* outer_frame_state) { … }
}
Reduction JSCallReducer::ReduceStringConstructor(Node* node,
JSFunctionRef constructor) { … }
Reduction JSCallReducer::ReducePromiseConstructor(Node* node) { … }
bool JSCallReducer::DoPromiseChecks(MapInference* inference) { … }
Reduction JSCallReducer::ReducePromisePrototypeCatch(Node* node) { … }
Node* JSCallReducer::CreateClosureFromBuiltinSharedFunctionInfo(
SharedFunctionInfoRef shared, Node* context, Node* effect, Node* control) { … }
Reduction JSCallReducer::ReducePromisePrototypeFinally(Node* node) { … }
Reduction JSCallReducer::ReducePromisePrototypeThen(Node* node) { … }
Reduction JSCallReducer::ReducePromiseResolveTrampoline(Node* node) { … }
Reduction JSCallReducer::ReduceTypedArrayConstructor(
Node* node, SharedFunctionInfoRef shared) { … }
Reduction JSCallReducer::ReduceTypedArrayPrototypeToStringTag(Node* node) { … }
Reduction JSCallReducer::ReduceArrayBufferViewByteLengthAccessor(
Node* node, InstanceType instance_type) { … }
Reduction JSCallReducer::ReduceTypedArrayPrototypeLength(Node* node) { … }
Reduction JSCallReducer::ReduceNumberIsFinite(Node* node) { … }
Reduction JSCallReducer::ReduceNumberIsInteger(Node* node) { … }
Reduction JSCallReducer::ReduceNumberIsSafeInteger(Node* node) { … }
Reduction JSCallReducer::ReduceNumberIsNaN(Node* node) { … }
Reduction JSCallReducer::ReduceMapPrototypeGet(Node* node) { … }
namespace {
InstanceType InstanceTypeForCollectionKind(CollectionKind kind) { … }
}
Reduction JSCallReducer::ReduceCollectionPrototypeHas(
Node* node, CollectionKind collection_kind) { … }
Reduction JSCallReducer::ReduceMapPrototypeHas(Node* node) { … }
Reduction JSCallReducer::ReduceSetPrototypeHas(Node* node) { … }
Reduction JSCallReducer::ReduceCollectionIteration(
Node* node, CollectionKind collection_kind, IterationKind iteration_kind) { … }
Reduction JSCallReducer::ReduceCollectionPrototypeSize(
Node* node, CollectionKind collection_kind) { … }
Reduction JSCallReducer::ReduceCollectionIteratorPrototypeNext(
Node* node, int entry_size, Handle<HeapObject> empty_collection,
InstanceType collection_iterator_instance_type_first,
InstanceType collection_iterator_instance_type_last) { … }
Reduction JSCallReducer::ReduceArrayBufferIsView(Node* node) { … }
Reduction JSCallReducer::ReduceArrayBufferViewAccessor(
Node* node, InstanceType instance_type, FieldAccess const& access,
Builtin builtin) { … }
Reduction JSCallReducer::ReduceDataViewAccess(Node* node, DataViewAccess access,
ExternalArrayType element_type) { … }
Reduction JSCallReducer::ReduceGlobalIsFinite(Node* node) { … }
Reduction JSCallReducer::ReduceGlobalIsNaN(Node* node) { … }
Reduction JSCallReducer::ReduceDatePrototypeGetTime(Node* node) { … }
Reduction JSCallReducer::ReduceDateNow(Node* node) { … }
Reduction JSCallReducer::ReduceNumberParseInt(Node* node) { … }
Reduction JSCallReducer::ReduceRegExpPrototypeTest(Node* node) { … }
Reduction JSCallReducer::ReduceNumberConstructor(Node* node) { … }
Reduction JSCallReducer::ReduceBigIntConstructor(Node* node) { … }
Reduction JSCallReducer::ReduceBigIntAsN(Node* node, Builtin builtin) { … }
std::optional<Reduction> JSCallReducer::TryReduceJSCallMathMinMaxWithArrayLike(
Node* node) { … }
Reduction JSCallReducer::ReduceJSCallMathMinMaxWithArrayLike(Node* node,
Builtin builtin) { … }
#ifdef V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA
Reduction JSCallReducer::ReduceGetContinuationPreservedEmbedderData(
Node* node) { … }
Reduction JSCallReducer::ReduceSetContinuationPreservedEmbedderData(
Node* node) { … }
#endif
CompilationDependencies* JSCallReducer::dependencies() const { … }
Graph* JSCallReducer::graph() const { … }
Isolate* JSCallReducer::isolate() const { … }
Factory* JSCallReducer::factory() const { … }
NativeContextRef JSCallReducer::native_context() const { … }
CommonOperatorBuilder* JSCallReducer::common() const { … }
JSOperatorBuilder* JSCallReducer::javascript() const { … }
SimplifiedOperatorBuilder* JSCallReducer::simplified() const { … }
}
}
}