本文整理匯總了C++中ARGUMENTS函數的典型用法代碼示例。如果您正苦於以下問題:C++ ARGUMENTS函數的具體用法?C++ ARGUMENTS怎麽用?C++ ARGUMENTS使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ARGUMENTS函數的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: PROBE_STACK
Var SIMDInt32x4Lib::EntryFromFloat32x4(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
Assert(!(callInfo.Flags & CallFlags_New));
if (args.Info.Count >= 2 && JavascriptSIMDFloat32x4::Is(args[1]))
{
JavascriptSIMDFloat32x4 *instance = JavascriptSIMDFloat32x4::FromVar(args[1]);
Assert(instance);
bool throws = false;
SIMDValue result = SIMDInt32x4Operation::OpFromFloat32x4(instance->GetValue(), throws);
// out of range
if (throws)
{
JavascriptError::ThrowRangeError(scriptContext, JSERR_ArgumentOutOfRange, _u("SIMD.Int32x4.FromFloat32x4"));
}
return JavascriptSIMDInt32x4::New(&result, scriptContext);
}
JavascriptError::ThrowTypeError(scriptContext, JSERR_SimdInt32x4TypeMismatch, _u("fromFloat32x4"));
}
示例2: PROBE_STACK
Var JavascriptSIMDFloat64x2::EntryToString(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
Assert(!(callInfo.Flags & CallFlags_New));
if (args.Info.Count == 0 || JavascriptOperators::GetTypeId(args[0]) != TypeIds_SIMDFloat64x2)
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedSimd, L"SIMDFloat64x2.toString");
}
JavascriptSIMDFloat64x2 *instance = JavascriptSIMDFloat64x2::FromVar(args[0]);
Assert(instance);
wchar_t stringBuffer[SIMD_STRING_BUFFER_MAX];
SIMDValue value = instance->GetValue();
JavascriptSIMDFloat64x2::ToStringBuffer(value, stringBuffer, SIMD_STRING_BUFFER_MAX);
JavascriptString* string = JavascriptString::NewCopySzFromArena(stringBuffer, scriptContext, scriptContext->GeneralAllocator());
return string;
}
示例3: PROBE_STACK
Var DataView::EntrySetFloat64(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
BOOL isLittleEndian = FALSE;
Assert(!(callInfo.Flags & CallFlags_New));
if (args.Info.Count == 0 || !DataView::Is(args[0]))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedDataView);
}
if (args.Info.Count < 3)
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_DataView_NeedArgument, L"offset or value");
}
DataView* dataView = DataView::FromVar(args[0]);
uint32 offset = JavascriptConversion::ToUInt32(args[1], scriptContext);
double value = JavascriptConversion::ToNumber(args[2], scriptContext);
if (args.Info.Count > 3)
{
isLittleEndian = JavascriptConversion::ToBoolean(args[3], scriptContext);
}
dataView->SetValue<double>(offset, value, L"DataView.prototype.SetFloat64", isLittleEndian);
return scriptContext->GetLibrary()->GetUndefined();
}
示例4: AsmJsChangeHeapBuffer
Var AsmJsChangeHeapBuffer(RecyclableObject * function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
Assert(!(callInfo.Flags & CallFlags_New));
if (args.Info.Count < 1 || !ArrayBuffer::Is(args[1]))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_NeedArrayBufferObject);
}
ArrayBuffer* newArrayBuffer = ArrayBuffer::FromVar(args[1]);
if (newArrayBuffer->IsDetached() || newArrayBuffer->GetByteLength() & 0xffffff || newArrayBuffer->GetByteLength() <= 0xffffff || newArrayBuffer->GetByteLength() > 0x80000000)
{
return JavascriptBoolean::ToVar(FALSE, scriptContext);
}
FrameDisplay* frame = ((ScriptFunction*)function)->GetEnvironment();
Var* moduleArrayBuffer = (Var*)frame->GetItem(0) + AsmJsModuleMemory::MemoryTableBeginOffset;
*moduleArrayBuffer = newArrayBuffer;
return JavascriptBoolean::ToVar(TRUE, scriptContext);
}
示例5: PROBE_STACK
Var JavascriptWeakSet::EntryHas(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
if (!JavascriptWeakSet::Is(args[0]))
{
JavascriptError::ThrowTypeErrorVar(scriptContext, JSERR_NeedObjectOfType, _u("WeakSet.prototype.has"), _u("WeakSet"));
}
JavascriptWeakSet* weakSet = JavascriptWeakSet::FromVar(args[0]);
Var key = (args.Info.Count > 1) ? args[1] : scriptContext->GetLibrary()->GetUndefined();
bool hasValue = false;
if (JavascriptOperators::IsObject(key) && JavascriptOperators::GetTypeId(key) != TypeIds_HostDispatch)
{
DynamicObject* keyObj = DynamicObject::FromVar(key);
hasValue = weakSet->Has(keyObj);
}
return scriptContext->GetLibrary()->CreateBoolean(hasValue);
}
示例6: PROBE_STACK
Var SIMDUint16x8Lib::EntrySubSaturate(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
Assert(!(callInfo.Flags & CallFlags_New));
// If any of the args are missing, then it is Undefined type which causes TypeError exception.
// strict type on both operands
if (args.Info.Count >= 3 && JavascriptSIMDUint16x8::Is(args[1]) && JavascriptSIMDUint16x8::Is(args[2]))
{
JavascriptSIMDUint16x8 *a = JavascriptSIMDUint16x8::FromVar(args[1]);
JavascriptSIMDUint16x8 *b = JavascriptSIMDUint16x8::FromVar(args[2]);
Assert(a && b);
SIMDValue result, aValue, bValue;
aValue = a->GetValue();
bValue = b->GetValue();
result = SIMDUint16x8Operation::OpSubSaturate(aValue, bValue);
return JavascriptSIMDUint16x8::New(&result, scriptContext);
}
JavascriptError::ThrowTypeError(scriptContext, JSERR_SimdUint16x8TypeMismatch, _u("subSaturate"));
}
示例7: PROBE_STACK
// Boolean.prototype.toString as described in ES6 spec (draft 24) 19.3.3.2
Var JavascriptBoolean::EntryToString(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
AssertMsg(args.Info.Count, "Should always have implicit 'this'.");
ScriptContext* scriptContext = function->GetScriptContext();
Assert(!(callInfo.Flags & CallFlags_New));
BOOL bval;
Var aValue = args[0];
if(JavascriptBoolean::Is(aValue))
{
bval = JavascriptBoolean::FromVar(aValue)->GetValue();
}
else if (JavascriptBooleanObject::Is(aValue))
{
JavascriptBooleanObject* booleanObject = JavascriptBooleanObject::FromVar(aValue);
bval = booleanObject->GetValue();
}
else
{
return TryInvokeRemotelyOrThrow(EntryToString, scriptContext, args, JSERR_This_NeedBoolean, _u("Boolean.prototype.toString"));
}
return bval ? scriptContext->GetLibrary()->GetTrueDisplayString() : scriptContext->GetLibrary()->GetFalseDisplayString();
}
示例8: PROBE_STACK
Var JavascriptReflect::EntryPreventExtensions(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AUTO_TAG_NATIVE_LIBRARY_ENTRY(function, callInfo, _u("Reflect.preventExtensions"));
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
if (args.Info.Flags & CallFlags_New)
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_ErrorOnNew, _u("Reflect.preventExtensions"));
}
if (args.Info.Count < 2 || !JavascriptOperators::IsObject(args[1]))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_FunctionArgument_NeedObject, _u("Reflect.preventExtensions"));
}
Var target = args[1];
RecyclableObject* targetObj = RecyclableObject::FromVar(target);
GlobalObject* globalObject = targetObj->GetLibrary()->GetGlobalObject();
if (globalObject != targetObj && globalObject && (globalObject->ToThis() == targetObj))
{
globalObject->PreventExtensions();
}
return scriptContext->GetLibrary()->GetTrueOrFalse(targetObj->PreventExtensions());
}
示例9: PROBE_STACK
Var JavascriptSet::EntryForEach(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AUTO_TAG_NATIVE_LIBRARY_ENTRY(function, callInfo, _u("Set.prototype.forEach"));
if (!JavascriptSet::Is(args[0]))
{
JavascriptError::ThrowTypeErrorVar(scriptContext, JSERR_NeedObjectOfType, _u("Set.prototype.forEach"), _u("Set"));
}
JavascriptSet* set = JavascriptSet::FromVar(args[0]);
if (args.Info.Count < 2 || !JavascriptConversion::IsCallable(args[1]))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_FunctionArgument_NeedFunction, _u("Set.prototype.forEach"));
}
RecyclableObject* callBackFn = RecyclableObject::FromVar(args[1]);
Var thisArg = (args.Info.Count > 2) ? args[2] : scriptContext->GetLibrary()->GetUndefined();
auto iterator = set->GetIterator();
while (iterator.Next())
{
Var value = iterator.Current();
CALL_FUNCTION(callBackFn, CallInfo(CallFlags_Value, 4), thisArg, value, value, args[0]);
}
return scriptContext->GetLibrary()->GetUndefined();
}
示例10: PROBE_STACK
Var SharedArrayBuffer::NewInstance(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
Var newTarget = callInfo.Flags & CallFlags_NewTarget ? args.Values[args.Info.Count] : args[0];
bool isCtorSuperCall = (callInfo.Flags & CallFlags_New) && newTarget != nullptr && !JavascriptOperators::IsUndefined(newTarget);
Assert(isCtorSuperCall || !(callInfo.Flags & CallFlags_New) || args[0] == nullptr);
if (!(callInfo.Flags & CallFlags_New) || (newTarget && JavascriptOperators::IsUndefinedObject(newTarget)))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_ClassConstructorCannotBeCalledWithoutNew, _u("SharedArrayBuffer"));
}
uint32 byteLength = 0;
if (args.Info.Count > 1)
{
byteLength = GetByteLengthFromVar(scriptContext, args[1]);
}
RecyclableObject* newArr = scriptContext->GetLibrary()->CreateSharedArrayBuffer(byteLength);
return isCtorSuperCall ?
JavascriptOperators::OrdinaryCreateFromConstructor(RecyclableObject::FromVar(newTarget), newArr, nullptr, scriptContext) :
newArr;
}
示例11: PROBE_STACK
Var JavascriptWeakMap::EntryGet(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
if (!JavascriptWeakMap::Is(args[0]))
{
JavascriptError::ThrowTypeErrorVar(scriptContext, JSERR_NeedObjectOfType, _u("WeakMap.prototype.get"), _u("WeakMap"));
}
JavascriptWeakMap* weakMap = JavascriptWeakMap::FromVar(args[0]);
Var key = (args.Info.Count > 1) ? args[1] : scriptContext->GetLibrary()->GetUndefined();
if (JavascriptOperators::IsObject(key) && JavascriptOperators::GetTypeId(key) != TypeIds_HostDispatch)
{
DynamicObject* keyObj = DynamicObject::FromVar(key);
Var value = nullptr;
if (weakMap->Get(keyObj, &value))
{
return value;
}
}
return scriptContext->GetLibrary()->GetUndefined();
}
示例12: PROBE_STACK
Var JavascriptSIMDUint16x8::EntryToString(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
ScriptContext* scriptContext = function->GetScriptContext();
AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'");
Assert(!(callInfo.Flags & CallFlags_New));
if (args.Info.Count == 0 || JavascriptOperators::GetTypeId(args[0]) != TypeIds_SIMDUint16x8)
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedSimd, L"SIMDUint16x8.toString");
}
JavascriptSIMDUint16x8* instance = JavascriptSIMDUint16x8::FromVar(args[0]);
Assert(instance);
wchar_t stringBuffer[1024];
SIMDValue value = instance->GetValue();
swprintf_s(stringBuffer, 1024, L"SIMD.Uint16x8(%u, %u, %u, %u, %u, %u, %u, %u)",
value.u16[0], value.u16[1], value.u16[2], value.u16[3], value.u16[4], value.u16[5], value.u16[6], value.u16[7]);
JavascriptString* string = JavascriptString::NewCopySzFromArena(stringBuffer, scriptContext, scriptContext->GeneralAllocator());
return string;
}
示例13: PROBE_STACK
Var ObjectPrototypeObject::Entry__proto__getter(RecyclableObject* function, CallInfo callInfo, ...)
{
PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault);
ARGUMENTS(args, callInfo);
Assert(!(callInfo.Flags & CallFlags_New));
ScriptContext* scriptContext = function->GetScriptContext();
#if !FLOATVAR
// Mark temp number will stack allocate number that is used as the object ptr.
// So we should box it before call ToObject on it.
Var arg0 = JavascriptNumber::BoxStackNumber(args[0], scriptContext);
#else
Var arg0 = args[0];
#endif
// B.2.2.1.1
// get Object.prototype.__proto__
// The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps:
// 1. Let O be ToObject(this value).
// 2. ReturnIfAbrupt(O).
RecyclableObject* object;
if (args.Info.Count < 1 || !JavascriptConversion::ToObject(arg0, scriptContext, &object))
{
JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedObject, _u("Object.prototype.__proto__"));
}
// 3. Return O.[[GetPrototypeOf]]().
return JavascriptObject::GetPrototypeOf(object, scriptContext);
}