Chromium Code Reviews| 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 <errno.h> | 5 #include <errno.h> |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 #include <sys/stat.h> | 8 #include <sys/stat.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 1562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1573 .ToLocalChecked(), | 1573 .ToLocalChecked(), |
| 1574 worker_fun_template); | 1574 worker_fun_template); |
| 1575 | 1575 |
| 1576 Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate); | 1576 Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate); |
| 1577 AddOSMethods(isolate, os_templ); | 1577 AddOSMethods(isolate, os_templ); |
| 1578 global_template->Set( | 1578 global_template->Set( |
| 1579 String::NewFromUtf8(isolate, "os", NewStringType::kNormal) | 1579 String::NewFromUtf8(isolate, "os", NewStringType::kNormal) |
| 1580 .ToLocalChecked(), | 1580 .ToLocalChecked(), |
| 1581 os_templ); | 1581 os_templ); |
| 1582 | 1582 |
| 1583 return global_template; | 1583 return global_template; |
|
ulan
2017/03/16 11:50:14
How about adding "increment", "decrement" function
| |
| 1584 } | 1584 } |
| 1585 | 1585 |
| 1586 static void PrintNonErrorsMessageCallback(Local<Message> message, | 1586 static void PrintNonErrorsMessageCallback(Local<Message> message, |
| 1587 Local<Value> error) { | 1587 Local<Value> error) { |
| 1588 // Nothing to do here for errors, exceptions thrown up to the shell will be | 1588 // Nothing to do here for errors, exceptions thrown up to the shell will be |
| 1589 // reported | 1589 // reported |
| 1590 // separately by {Shell::ReportException} after they are caught. | 1590 // separately by {Shell::ReportException} after they are caught. |
| 1591 // Do print other kinds of messages. | 1591 // Do print other kinds of messages. |
| 1592 switch (message->ErrorLevel()) { | 1592 switch (message->ErrorLevel()) { |
| 1593 case v8::Isolate::kMessageWarning: | 1593 case v8::Isolate::kMessageWarning: |
| (...skipping 984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2578 g_platform->MonotonicallyIncreasingTime() + kLongIdlePauseInSeconds); | 2578 g_platform->MonotonicallyIncreasingTime() + kLongIdlePauseInSeconds); |
| 2579 } | 2579 } |
| 2580 if (options.invoke_weak_callbacks) { | 2580 if (options.invoke_weak_callbacks) { |
| 2581 // By sending a low memory notifications, we will try hard to collect all | 2581 // By sending a low memory notifications, we will try hard to collect all |
| 2582 // garbage and will therefore also invoke all weak callbacks of actually | 2582 // garbage and will therefore also invoke all weak callbacks of actually |
| 2583 // unreachable persistent handles. | 2583 // unreachable persistent handles. |
| 2584 isolate->LowMemoryNotification(); | 2584 isolate->LowMemoryNotification(); |
| 2585 } | 2585 } |
| 2586 } | 2586 } |
| 2587 | 2587 |
| 2588 | |
| 2589 void Shell::EmptyMessageQueues(Isolate* isolate) { | 2588 void Shell::EmptyMessageQueues(Isolate* isolate) { |
| 2590 if (!i::FLAG_verify_predictable) { | 2589 if (i::FLAG_verify_predictable) return; |
| 2591 while (v8::platform::PumpMessageLoop(g_platform, isolate)) continue; | 2590 while (true) { |
| 2591 // Pump the message loop until it is empty. | |
| 2592 while (v8::platform::PumpMessageLoop(g_platform, isolate)) { | |
| 2593 isolate->RunMicrotasks(); | |
| 2594 } | |
| 2595 // Run the idle tasks. | |
| 2592 v8::platform::RunIdleTasks(g_platform, isolate, | 2596 v8::platform::RunIdleTasks(g_platform, isolate, |
| 2593 50.0 / base::Time::kMillisecondsPerSecond); | 2597 50.0 / base::Time::kMillisecondsPerSecond); |
| 2598 // If there are still outstanding waiters, sleep a little (to wait for | |
| 2599 // background tasks) and then try everything again. | |
| 2600 if (reinterpret_cast<i::Isolate*>(isolate)->GetWaitCount() > 0) { | |
| 2601 base::OS::Sleep(base::TimeDelta::FromMilliseconds(1)); | |
| 2602 } else { | |
| 2603 break; | |
| 2604 } | |
| 2594 } | 2605 } |
| 2595 } | 2606 } |
| 2596 | 2607 |
| 2597 class Serializer : public ValueSerializer::Delegate { | 2608 class Serializer : public ValueSerializer::Delegate { |
| 2598 public: | 2609 public: |
| 2599 explicit Serializer(Isolate* isolate) | 2610 explicit Serializer(Isolate* isolate) |
| 2600 : isolate_(isolate), | 2611 : isolate_(isolate), |
| 2601 serializer_(isolate, this), | 2612 serializer_(isolate, this), |
| 2602 current_memory_usage_(0) {} | 2613 current_memory_usage_(0) {} |
| 2603 | 2614 |
| (...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3043 } | 3054 } |
| 3044 | 3055 |
| 3045 } // namespace v8 | 3056 } // namespace v8 |
| 3046 | 3057 |
| 3047 | 3058 |
| 3048 #ifndef GOOGLE3 | 3059 #ifndef GOOGLE3 |
| 3049 int main(int argc, char* argv[]) { | 3060 int main(int argc, char* argv[]) { |
| 3050 return v8::Shell::Main(argc, argv); | 3061 return v8::Shell::Main(argc, argv); |
| 3051 } | 3062 } |
| 3052 #endif | 3063 #endif |
| OLD | NEW |