| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdlib.h> | 5 #include <stdlib.h> |
| 6 #include <limits> | 6 #include <limits> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #include "src/misc-intrinsics.h" | 35 #include "src/misc-intrinsics.h" |
| 36 #include "src/parser.h" | 36 #include "src/parser.h" |
| 37 #include "src/prototype.h" | 37 #include "src/prototype.h" |
| 38 #include "src/runtime.h" | 38 #include "src/runtime.h" |
| 39 #include "src/runtime-profiler.h" | 39 #include "src/runtime-profiler.h" |
| 40 #include "src/scopeinfo.h" | 40 #include "src/scopeinfo.h" |
| 41 #include "src/smart-pointers.h" | 41 #include "src/smart-pointers.h" |
| 42 #include "src/string-search.h" | 42 #include "src/string-search.h" |
| 43 #include "src/stub-cache.h" | 43 #include "src/stub-cache.h" |
| 44 #include "src/uri.h" | 44 #include "src/uri.h" |
| 45 #include "src/utils.h" |
| 45 #include "src/v8threads.h" | 46 #include "src/v8threads.h" |
| 46 #include "src/vm-state-inl.h" | 47 #include "src/vm-state-inl.h" |
| 47 | 48 |
| 48 #ifdef V8_I18N_SUPPORT | 49 #ifdef V8_I18N_SUPPORT |
| 49 #include "src/i18n.h" | 50 #include "src/i18n.h" |
| 50 #include "unicode/brkiter.h" | 51 #include "unicode/brkiter.h" |
| 51 #include "unicode/calendar.h" | 52 #include "unicode/calendar.h" |
| 52 #include "unicode/coll.h" | 53 #include "unicode/coll.h" |
| 53 #include "unicode/curramt.h" | 54 #include "unicode/curramt.h" |
| 54 #include "unicode/datefmt.h" | 55 #include "unicode/datefmt.h" |
| (...skipping 7650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7705 return *isolate->factory()->NewNumber(fast_exp(x)); | 7706 return *isolate->factory()->NewNumber(fast_exp(x)); |
| 7706 } | 7707 } |
| 7707 | 7708 |
| 7708 | 7709 |
| 7709 RUNTIME_FUNCTION(Runtime_MathFloorRT) { | 7710 RUNTIME_FUNCTION(Runtime_MathFloorRT) { |
| 7710 HandleScope scope(isolate); | 7711 HandleScope scope(isolate); |
| 7711 ASSERT(args.length() == 1); | 7712 ASSERT(args.length() == 1); |
| 7712 isolate->counters()->math_floor()->Increment(); | 7713 isolate->counters()->math_floor()->Increment(); |
| 7713 | 7714 |
| 7714 CONVERT_DOUBLE_ARG_CHECKED(x, 0); | 7715 CONVERT_DOUBLE_ARG_CHECKED(x, 0); |
| 7715 return *isolate->factory()->NewNumber(std::floor(x)); | 7716 return *isolate->factory()->NewNumber(Floor(x)); |
| 7716 } | 7717 } |
| 7717 | 7718 |
| 7718 | 7719 |
| 7719 // Slow version of Math.pow. We check for fast paths for special cases. | 7720 // Slow version of Math.pow. We check for fast paths for special cases. |
| 7720 // Used if VFP3 is not available. | 7721 // Used if VFP3 is not available. |
| 7721 RUNTIME_FUNCTION(Runtime_MathPowSlow) { | 7722 RUNTIME_FUNCTION(Runtime_MathPowSlow) { |
| 7722 HandleScope scope(isolate); | 7723 HandleScope scope(isolate); |
| 7723 ASSERT(args.length() == 2); | 7724 ASSERT(args.length() == 2); |
| 7724 isolate->counters()->math_pow()->Increment(); | 7725 isolate->counters()->math_pow()->Increment(); |
| 7725 | 7726 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7790 | 7791 |
| 7791 // If the magnitude is big enough, there's no place for fraction part. If we | 7792 // If the magnitude is big enough, there's no place for fraction part. If we |
| 7792 // try to add 0.5 to this number, 1.0 will be added instead. | 7793 // try to add 0.5 to this number, 1.0 will be added instead. |
| 7793 if (exponent >= 52) { | 7794 if (exponent >= 52) { |
| 7794 return *number; | 7795 return *number; |
| 7795 } | 7796 } |
| 7796 | 7797 |
| 7797 if (sign && value >= -0.5) return isolate->heap()->minus_zero_value(); | 7798 if (sign && value >= -0.5) return isolate->heap()->minus_zero_value(); |
| 7798 | 7799 |
| 7799 // Do not call NumberFromDouble() to avoid extra checks. | 7800 // Do not call NumberFromDouble() to avoid extra checks. |
| 7800 return *isolate->factory()->NewNumber(std::floor(value + 0.5)); | 7801 return *isolate->factory()->NewNumber(Floor(value + 0.5)); |
| 7801 } | 7802 } |
| 7802 | 7803 |
| 7803 | 7804 |
| 7804 RUNTIME_FUNCTION(Runtime_MathSqrtRT) { | 7805 RUNTIME_FUNCTION(Runtime_MathSqrtRT) { |
| 7805 HandleScope scope(isolate); | 7806 HandleScope scope(isolate); |
| 7806 ASSERT(args.length() == 1); | 7807 ASSERT(args.length() == 1); |
| 7807 isolate->counters()->math_sqrt()->Increment(); | 7808 isolate->counters()->math_sqrt()->Increment(); |
| 7808 | 7809 |
| 7809 CONVERT_DOUBLE_ARG_CHECKED(x, 0); | 7810 CONVERT_DOUBLE_ARG_CHECKED(x, 0); |
| 7810 return *isolate->factory()->NewNumber(fast_sqrt(x)); | 7811 return *isolate->factory()->NewNumber(fast_sqrt(x)); |
| (...skipping 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9515 ASSERT(args.length() == 0); | 9516 ASSERT(args.length() == 0); |
| 9516 if (FLAG_log_timer_events) LOG(isolate, CurrentTimeEvent()); | 9517 if (FLAG_log_timer_events) LOG(isolate, CurrentTimeEvent()); |
| 9517 | 9518 |
| 9518 // According to ECMA-262, section 15.9.1, page 117, the precision of | 9519 // According to ECMA-262, section 15.9.1, page 117, the precision of |
| 9519 // the number in a Date object representing a particular instant in | 9520 // the number in a Date object representing a particular instant in |
| 9520 // time is milliseconds. Therefore, we floor the result of getting | 9521 // time is milliseconds. Therefore, we floor the result of getting |
| 9521 // the OS time. | 9522 // the OS time. |
| 9522 double millis; | 9523 double millis; |
| 9523 if (FLAG_verify_predictable) { | 9524 if (FLAG_verify_predictable) { |
| 9524 millis = 1388534400000.0; // Jan 1 2014 00:00:00 GMT+0000 | 9525 millis = 1388534400000.0; // Jan 1 2014 00:00:00 GMT+0000 |
| 9525 millis += std::floor(isolate->heap()->synthetic_time()); | 9526 millis += Floor(isolate->heap()->synthetic_time()); |
| 9526 } else { | 9527 } else { |
| 9527 millis = std::floor(base::OS::TimeCurrentMillis()); | 9528 millis = Floor(base::OS::TimeCurrentMillis()); |
| 9528 } | 9529 } |
| 9529 return *isolate->factory()->NewNumber(millis); | 9530 return *isolate->factory()->NewNumber(millis); |
| 9530 } | 9531 } |
| 9531 | 9532 |
| 9532 | 9533 |
| 9533 RUNTIME_FUNCTION(Runtime_DateParseString) { | 9534 RUNTIME_FUNCTION(Runtime_DateParseString) { |
| 9534 HandleScope scope(isolate); | 9535 HandleScope scope(isolate); |
| 9535 ASSERT(args.length() == 2); | 9536 ASSERT(args.length() == 2); |
| 9536 CONVERT_ARG_HANDLE_CHECKED(String, str, 0); | 9537 CONVERT_ARG_HANDLE_CHECKED(String, str, 0); |
| 9537 CONVERT_ARG_HANDLE_CHECKED(JSArray, output, 1); | 9538 CONVERT_ARG_HANDLE_CHECKED(JSArray, output, 1); |
| (...skipping 5546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15084 } | 15085 } |
| 15085 return NULL; | 15086 return NULL; |
| 15086 } | 15087 } |
| 15087 | 15088 |
| 15088 | 15089 |
| 15089 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { | 15090 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { |
| 15090 return &(kIntrinsicFunctions[static_cast<int>(id)]); | 15091 return &(kIntrinsicFunctions[static_cast<int>(id)]); |
| 15091 } | 15092 } |
| 15092 | 15093 |
| 15093 } } // namespace v8::internal | 15094 } } // namespace v8::internal |
| OLD | NEW |