14 #ifndef _STLP_VENDOR_CSTD
25 DCHECK(args.length() == 2);
30 if (args[0]->IsSmi()) {
31 int value = args.smi_at(0);
32 if (value >= 0 && value < radix) {
34 static const char kCharTable[] =
"0123456789abcdefghijklmnopqrstuvwxyz";
35 return *isolate->factory()->LookupSingleCharacterStringFromCode(
42 if (std::isnan(value)) {
43 return isolate->heap()->nan_string();
45 if (std::isinf(value)) {
47 return isolate->heap()->minus_infinity_string();
49 return isolate->heap()->infinity_string();
52 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
60 DCHECK(args.length() == 2);
69 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
77 DCHECK(args.length() == 2);
85 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
93 DCHECK(args.length() == 2);
101 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
108 SealHandleScope shs(isolate);
109 DCHECK(args.length() == 1);
112 return isolate->heap()->ToBoolean(
Smi::IsValid(number));
117 for (
int i = from;
i <
to;
i++) {
118 if (s[
i] <
'0' || s[
i] >
'9')
return false;
128 int d = s[from] -
'0';
130 for (
int i = from + 1;
i <
to;
i++) {
131 d = 10 * d + (s[
i] -
'0');
140 DCHECK(args.length() == 1);
145 if (subject->IsSeqOneByteString()) {
146 int len = subject->length();
151 bool minus = (data[0] ==
'-');
152 int start_pos = (minus ? 1 : 0);
154 if (start_pos == len) {
155 return isolate->heap()->nan_value();
156 }
else if (data[start_pos] >
'9') {
161 if (data[start_pos] !=
'I' && data[start_pos] != 0xa0) {
162 return isolate->heap()->nan_value();
164 }
else if (len - start_pos < 10 &&
AreDigits(data, start_pos, len)) {
169 if (d == 0)
return isolate->heap()->minus_zero_value();
172 (len == 1 || data[0] !=
'0')) {
178 DCHECK_EQ(
static_cast<int>(subject->hash_field()),
179 static_cast<int>(hash));
181 subject->set_hash_field(hash);
189 if (FLAG_harmony_numeric_literals) {
195 return *isolate->factory()->NewNumber(
202 DCHECK(args.length() == 2);
223 return *isolate->factory()->NewNumber(value);
229 DCHECK(args.length() == 1);
236 return *isolate->factory()->NewNumber(value);
242 DCHECK(args.length() == 1);
245 return *isolate->factory()->NumberToString(number);
251 DCHECK(args.length() == 1);
254 return *isolate->factory()->NumberToString(number,
false);
260 DCHECK(args.length() == 1);
269 DCHECK(args.length() == 1);
274 if (double_value == 0) double_value = 0;
276 return *isolate->factory()->NewNumber(double_value);
282 DCHECK(args.length() == 1);
285 return *isolate->factory()->NewNumberFromUint(number);
291 DCHECK(args.length() == 1);
294 return *isolate->factory()->NewNumberFromInt(
DoubleToInt32(number));
301 SealHandleScope shs(isolate);
302 DCHECK(args.length() == 1);
307 if (obj->IsHeapNumber()) {
308 double value = HeapNumber::cast(obj)->value();
309 int int_value =
FastD2I(value);
314 return isolate->heap()->nan_value();
320 DCHECK(args.length() == 2);
324 return *isolate->factory()->NewNumber(x +
y);
330 DCHECK(args.length() == 2);
334 return *isolate->factory()->NewNumber(x -
y);
340 DCHECK(args.length() == 2);
344 return *isolate->factory()->NewNumber(x *
y);
350 DCHECK(args.length() == 1);
353 return *isolate->factory()->NewNumber(-x);
359 DCHECK(args.length() == 2);
363 return *isolate->factory()->NewNumber(x /
y);
369 DCHECK(args.length() == 2);
373 return *isolate->factory()->NewNumber(
modulo(x,
y));
379 DCHECK(args.length() == 2);
386 return *isolate->factory()->NewNumberFromInt(product);
392 DCHECK(args.length() == 2);
396 return *isolate->factory()->NewNumberFromInt(x |
y);
402 DCHECK(args.length() == 2);
406 return *isolate->factory()->NewNumberFromInt(x &
y);
412 DCHECK(args.length() == 2);
416 return *isolate->factory()->NewNumberFromInt(x ^
y);
422 DCHECK(args.length() == 2);
426 return *isolate->factory()->NewNumberFromInt(x << (
y & 0x1f));
432 DCHECK(args.length() == 2);
436 return *isolate->factory()->NewNumberFromUint(x >> (
y & 0x1f));
442 DCHECK(args.length() == 2);
446 return *isolate->factory()->NewNumberFromInt(
452 SealHandleScope shs(isolate);
453 DCHECK(args.length() == 2);
471 SealHandleScope shs(isolate);
472 DCHECK(args.length() == 3);
477 if (std::isnan(x) || std::isnan(
y))
return *uncomparable_result;
487 SealHandleScope shs(isolate);
488 DCHECK(args.length() == 2);
497 if (x_value == 0 || y_value == 0)
508 if (x_value < 0 || y_value < 0) {
515 static const uint32_t kPowersOf10[] = {
517 10 * 1000, 100 * 1000, 1000 * 1000, 10 * 1000 * 1000,
518 100 * 1000 * 1000, 1000 * 1000 * 1000};
529 int x_log10 = ((x_log2 + 1) * 1233) >> 12;
530 x_log10 -= x_scaled < kPowersOf10[x_log10];
533 int y_log10 = ((y_log2 + 1) * 1233) >> 12;
534 y_log10 -= y_scaled < kPowersOf10[y_log10];
538 if (x_log10 < y_log10) {
545 x_scaled *= kPowersOf10[y_log10 - x_log10 - 1];
548 }
else if (y_log10 < x_log10) {
549 y_scaled *= kPowersOf10[x_log10 - y_log10 - 1];
561 SealHandleScope shs(isolate);
562 return __RT_impl_Runtime_NumberToStringRT(args, isolate);
A JavaScript value representing a 32-bit signed integer.
A JavaScript value representing a 32-bit unsigned integer.
static double nan_value()
static Handle< T > cast(Handle< S > that)
static Smi * FromInt(int value)
static bool IsValid(intptr_t value)
static uint32_t MakeArrayIndexHash(uint32_t value, int length)
Vector< const uint8_t > ToOneByteVector()
Vector< const uc16 > ToUC16Vector()
static const int kMaxArrayIndexSize
static Handle< String > Flatten(Handle< String > string, PretenureFlag pretenure=NOT_TENURED)
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
void DeleteArray(T *array)
char * DoubleToRadixCString(double value, int radix)
char * DoubleToFixedCString(double value, int f)
static int ParseDecimalInteger(const uint8_t *s, int from, int to)
double DoubleToInteger(double x)
int IntegerLog2(uint32_t value)
double modulo(double x, double y)
char * DoubleToExponentialCString(double value, int f)
static bool AreDigits(const uint8_t *s, int from, int to)
char * DoubleToPrecisionCString(double value, int p)
double StringToInt(UnicodeCache *unicode_cache, Vector< const uint8_t > vector, int radix)
int ArithmeticShiftRight(int x, int s)
int32_t DoubleToInt32(double x)
double StringToDouble(UnicodeCache *unicode_cache, const char *str, int flags, double empty_string_val)
int FastD2IChecked(double x)
Debugger support for the V8 JavaScript engine.
#define CONVERT_ARG_CHECKED(Type, name, index)
#define RUNTIME_ASSERT(value)
#define CONVERT_ARG_HANDLE_CHECKED(Type, name, index)
#define CONVERT_NUMBER_CHECKED(type, name, Type, obj)
#define CONVERT_DOUBLE_ARG_CHECKED(name, index)
#define CONVERT_NUMBER_ARG_HANDLE_CHECKED(name, index)
#define CONVERT_SMI_ARG_CHECKED(name, index)
int isless(double x, double y)