Skip to content

Commit

Permalink
core, feat: not ignore nan in arguments.
Browse files Browse the repository at this point in the history
  • Loading branch information
xicilion committed Aug 20, 2017
1 parent 0f3f0ee commit 9424db3
Showing 1 changed file with 46 additions and 60 deletions.
106 changes: 46 additions & 60 deletions fibjs/include/utils.h
Expand Up @@ -198,47 +198,47 @@ typedef int32_t result_t;
do { \
do {

#define METHOD_OVER(c, o) \
} \
while (0) \
; \
if (hr > CALL_E_MIN_ARG && hr < CALL_E_MAX) \
do { \
hr = 0; \
int32_t argc1 = args.Length(); \
int32_t argc = argc1; \
while (argc > (o) && IsArgumentUndefined(args[argc - 1])) \
argc--; \
if ((c) >= 0 && argc > (c)) { \
hr = CALL_E_BADPARAMCOUNT; \
break; \
} \
if ((o) > 0 && argc < (o)) { \
hr = CALL_E_PARAMNOTOPTIONAL; \
break; \
#define METHOD_OVER(c, o) \
} \
while (0) \
; \
if (hr > CALL_E_MIN_ARG && hr < CALL_E_MAX) \
do { \
hr = 0; \
int32_t argc1 = args.Length(); \
int32_t argc = argc1; \
while (argc > (o) && args[argc - 1]->IsUndefined()) \
argc--; \
if ((c) >= 0 && argc > (c)) { \
hr = CALL_E_BADPARAMCOUNT; \
break; \
} \
if ((o) > 0 && argc < (o)) { \
hr = CALL_E_PARAMNOTOPTIONAL; \
break; \
}

#define ASYNC_METHOD_OVER(c, o) \
} \
while (0) \
; \
if (hr > CALL_E_MIN_ARG && hr < CALL_E_MAX) \
do { \
hr = 0; \
int32_t argc1 = args.Length(); \
v8::Local<v8::Function> cb; \
if (argc1 > 0 && args[argc1 - 1]->IsFunction()) \
cb = v8::Local<v8::Function>::Cast(args[--argc1]); \
int32_t argc = argc1; \
while (argc > (o) && IsArgumentUndefined(args[argc - 1])) \
argc--; \
if ((c) >= 0 && argc > (c)) { \
hr = CALL_E_BADPARAMCOUNT; \
break; \
} \
if ((o) > 0 && argc < (o)) { \
hr = CALL_E_PARAMNOTOPTIONAL; \
break; \
#define ASYNC_METHOD_OVER(c, o) \
} \
while (0) \
; \
if (hr > CALL_E_MIN_ARG && hr < CALL_E_MAX) \
do { \
hr = 0; \
int32_t argc1 = args.Length(); \
v8::Local<v8::Function> cb; \
if (argc1 > 0 && args[argc1 - 1]->IsFunction()) \
cb = v8::Local<v8::Function>::Cast(args[--argc1]); \
int32_t argc = argc1; \
while (argc > (o) && args[argc - 1]->IsUndefined()) \
argc--; \
if ((c) >= 0 && argc > (c)) { \
hr = CALL_E_BADPARAMCOUNT; \
break; \
} \
if ((o) > 0 && argc < (o)) { \
hr = CALL_E_PARAMNOTOPTIONAL; \
break; \
}

#define METHOD_ENTER() \
Expand Down Expand Up @@ -546,20 +546,6 @@ inline result_t GetArgumentValue(v8::Local<v8::Value> v, exlib::string& n, bool
return 0;
}

inline bool IsArgumentUndefined(v8::Local<v8::Value> v)
{
if (v->IsUndefined())
return true;

if (!v->IsNumber() && !v->IsNumberObject())
return false;

if (isnan(v->NumberValue()))
return true;

return false;
}

inline result_t GetArgumentValue(v8::Isolate* isolate, v8::Local<v8::Value> v, exlib::string& n, bool bStrict = false)
{
return GetArgumentValue(v, n, bStrict);
Expand Down Expand Up @@ -994,13 +980,13 @@ inline v8::Local<v8::Object> GetIteratorReturnValue(v8::Isolate* isolate, v8::Lo
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Symbol> symbol = v8::Symbol::GetIterator(isolate);
return array->Get(context, symbol)
.ToLocalChecked()
->ToObject(context)
.ToLocalChecked()
->CallAsFunction(context, array, 0, NULL)
.ToLocalChecked()
->ToObject(context)
.ToLocalChecked();
.ToLocalChecked()
->ToObject(context)
.ToLocalChecked()
->CallAsFunction(context, array, 0, NULL)
.ToLocalChecked()
->ToObject(context)
.ToLocalChecked();
}

inline v8::Local<v8::Value> ThrowError(const char* msg)
Expand Down

0 comments on commit 9424db3

Please sign in to comment.