PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef INCLUDE_V8_FUNCTION_H_ #define INCLUDE_V8_FUNCTION_H_ #include #include #include "v8-function-callback.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8-message.h" // NOLINT(build/include_directory) #include "v8-object.h" // NOLINT(build/include_directory) #include "v8-template.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { class Context; class UnboundScript; /** * A JavaScript function object (ECMA-262, 15.3). */ class V8_EXPORT Function : public Object { public: /** * Create a function in the current execution context * for a given FunctionCallback. */ static MaybeLocal New( Local context, FunctionCallback callback, Local data = Local(), int length = 0, ConstructorBehavior behavior = ConstructorBehavior::kAllow, SideEffectType side_effect_type = SideEffectType::kHasSideEffect); V8_WARN_UNUSED_RESULT MaybeLocal NewInstance( Local context, int argc, Local argv[]) const; V8_WARN_UNUSED_RESULT MaybeLocal NewInstance( Local context) const { return NewInstance(context, 0, nullptr); } /** * When side effect checks are enabled, passing kHasNoSideEffect allows the * constructor to be invoked without throwing. Calls made within the * constructor are still checked. */ V8_WARN_UNUSED_RESULT MaybeLocal NewInstanceWithSideEffectType( Local context, int argc, Local argv[], SideEffectType side_effect_type = SideEffectType::kHasSideEffect) const; V8_WARN_UNUSED_RESULT MaybeLocal Call(Local context, Local recv, int argc, Local argv[]); void SetName(Local name); Local GetName() const; V8_DEPRECATED("No direct replacement") MaybeLocal GetUnboundScript() const; /** * Name inferred from variable or property assignment of this function. * Used to facilitate debugging and profiling of JavaScript code written * in an OO style, where many functions are anonymous but are assigned * to object properties. */ Local GetInferredName() const; /** * displayName if it is set, otherwise name if it is configured, otherwise * function name, otherwise inferred name. */ Local GetDebugName() const; /** * Returns zero based line number of function body and * kLineOffsetNotFound if no information available. */ int GetScriptLineNumber() const; /** * Returns zero based column number of function body and * kLineOffsetNotFound if no information available. */ int GetScriptColumnNumber() const; /** * Returns scriptId. */ int ScriptId() const; /** * Returns the original function if this function is bound, else returns * v8::Undefined. */ Local GetBoundFunction() const; /** * Calls builtin Function.prototype.toString on this function. * This is different from Value::ToString() that may call a user-defined * toString() function, and different than Object::ObjectProtoToString() which * always serializes "[object Function]". */ V8_WARN_UNUSED_RESULT MaybeLocal FunctionProtoToString( Local context); /** * Returns true if the function does nothing. * The function returns false on error. * Note that this function is experimental. Embedders should not rely on * this existing. We may remove this function in the future. */ V8_WARN_UNUSED_RESULT bool Experimental_IsNopFunction() const; ScriptOrigin GetScriptOrigin() const; V8_INLINE static Function* Cast(Value* value) { #ifdef V8_ENABLE_CHECKS CheckCast(value); #endif return static_cast(value); } static const int kLineOffsetNotFound; private: Function(); static void CheckCast(Value* obj); }; } // namespace v8 #endif // INCLUDE_V8_FUNCTION_H_