OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium 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 "components/nacl/renderer/ppb_nacl_private_impl.h" | 5 #include "components/nacl/renderer/ppb_nacl_private_impl.h" |
6 | 6 |
7 #include <numeric> | 7 #include <numeric> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 handle, | 652 handle, |
653 enter.callback()); | 653 enter.callback()); |
654 | 654 |
655 return enter.SetResult(PP_OK_COMPLETIONPENDING); | 655 return enter.SetResult(PP_OK_COMPLETIONPENDING); |
656 } | 656 } |
657 | 657 |
658 void ReportTranslationFinished(PP_Instance instance, | 658 void ReportTranslationFinished(PP_Instance instance, |
659 PP_Bool success, | 659 PP_Bool success, |
660 int32_t opt_level, | 660 int32_t opt_level, |
661 int64_t pexe_size, | 661 int64_t pexe_size, |
662 int64_t compile_time_us, | 662 int64_t compile_time_us) { |
663 int64_t total_time_us) { | |
664 if (success == PP_TRUE) { | 663 if (success == PP_TRUE) { |
665 static const int32_t kUnknownOptLevel = 4; | 664 static const int32_t kUnknownOptLevel = 4; |
666 if (opt_level < 0 || opt_level > 3) | 665 if (opt_level < 0 || opt_level > 3) |
667 opt_level = kUnknownOptLevel; | 666 opt_level = kUnknownOptLevel; |
668 HistogramEnumerate("NaCl.Options.PNaCl.OptLevel", | 667 HistogramEnumerate("NaCl.Options.PNaCl.OptLevel", |
669 opt_level, | 668 opt_level, |
670 kUnknownOptLevel + 1); | 669 kUnknownOptLevel + 1); |
671 HistogramKBPerSec("NaCl.Perf.PNaClLoadTime.CompileKBPerSec", | 670 HistogramKBPerSec("NaCl.Perf.PNaClLoadTime.CompileKBPerSec", |
672 pexe_size / 1024, | 671 pexe_size / 1024, |
673 compile_time_us); | 672 compile_time_us); |
674 HistogramSizeKB("NaCl.Perf.Size.Pexe", pexe_size / 1024); | 673 HistogramSizeKB("NaCl.Perf.Size.Pexe", pexe_size / 1024); |
675 | 674 |
676 HistogramTimeTranslation("NaCl.Perf.PNaClLoadTime.TotalUncachedTime", | 675 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
677 total_time_us / 1000); | 676 if (load_manager) { |
678 HistogramKBPerSec("NaCl.Perf.PNaClLoadTime.TotalUncachedKBPerSec", | 677 base::TimeDelta total_time = base::Time::Now() - |
679 pexe_size / 1024, | 678 load_manager->pnacl_start_time(); |
680 total_time_us); | 679 HistogramTimeTranslation("NaCl.Perf.PNaClLoadTime.TotalUncachedTime", |
| 680 total_time.InMilliseconds()); |
| 681 HistogramKBPerSec("NaCl.Perf.PNaClLoadTime.TotalUncachedKBPerSec", |
| 682 pexe_size / 1024, |
| 683 total_time.InMicroseconds()); |
| 684 } |
681 } | 685 } |
682 | 686 |
683 // If the resource host isn't initialized, don't try to do that here. | 687 // If the resource host isn't initialized, don't try to do that here. |
684 // Just return because something is already very wrong. | 688 // Just return because something is already very wrong. |
685 if (g_pnacl_resource_host.Get() == NULL) | 689 if (g_pnacl_resource_host.Get() == NULL) |
686 return; | 690 return; |
687 g_pnacl_resource_host.Get()->ReportTranslationFinished(instance, success); | 691 g_pnacl_resource_host.Get()->ReportTranslationFinished(instance, success); |
688 } | 692 } |
689 | 693 |
690 PP_FileHandle OpenNaClExecutable(PP_Instance instance, | 694 PP_FileHandle OpenNaClExecutable(PP_Instance instance, |
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 &pnacl_options)) { | 1582 &pnacl_options)) { |
1579 PostPPCompletionCallback(callback, PP_ERROR_FAILED); | 1583 PostPPCompletionCallback(callback, PP_ERROR_FAILED); |
1580 } | 1584 } |
1581 | 1585 |
1582 // TODO(teravest): Make a type like PP_NaClFileInfo to use for DownloadFile | 1586 // TODO(teravest): Make a type like PP_NaClFileInfo to use for DownloadFile |
1583 // that would close the file handle on destruction. | 1587 // that would close the file handle on destruction. |
1584 DownloadFile(instance, url, | 1588 DownloadFile(instance, url, |
1585 base::Bind(&DidOpenManifestEntry, out_file_info, callback)); | 1589 base::Bind(&DidOpenManifestEntry, out_file_info, callback)); |
1586 } | 1590 } |
1587 | 1591 |
| 1592 void SetPNaClStartTime(PP_Instance instance) { |
| 1593 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 1594 if (load_manager) |
| 1595 load_manager->set_pnacl_start_time(base::Time::Now()); |
| 1596 } |
| 1597 |
1588 const PPB_NaCl_Private nacl_interface = { | 1598 const PPB_NaCl_Private nacl_interface = { |
1589 &LaunchSelLdr, | 1599 &LaunchSelLdr, |
1590 &StartPpapiProxy, | 1600 &StartPpapiProxy, |
1591 &UrandomFD, | 1601 &UrandomFD, |
1592 &Are3DInterfacesDisabled, | 1602 &Are3DInterfacesDisabled, |
1593 &BrokerDuplicateHandle, | 1603 &BrokerDuplicateHandle, |
1594 &GetReadonlyPnaclFd, | 1604 &GetReadonlyPnaclFd, |
1595 &CreateTemporaryFile, | 1605 &CreateTemporaryFile, |
1596 &GetNumberOfProcessors, | 1606 &GetNumberOfProcessors, |
1597 &PPIsNonSFIModeEnabled, | 1607 &PPIsNonSFIModeEnabled, |
(...skipping 19 matching lines...) Expand all Loading... |
1617 &GetManifestBaseURL, | 1627 &GetManifestBaseURL, |
1618 &ProcessNaClManifest, | 1628 &ProcessNaClManifest, |
1619 &DevInterfacesEnabled, | 1629 &DevInterfacesEnabled, |
1620 &ManifestGetProgramURL, | 1630 &ManifestGetProgramURL, |
1621 &GetPNaClResourceInfo, | 1631 &GetPNaClResourceInfo, |
1622 &GetCpuFeatureAttrs, | 1632 &GetCpuFeatureAttrs, |
1623 &PostMessageToJavaScript, | 1633 &PostMessageToJavaScript, |
1624 &DownloadNexe, | 1634 &DownloadNexe, |
1625 &ReportSelLdrStatus, | 1635 &ReportSelLdrStatus, |
1626 &LogTranslateTime, | 1636 &LogTranslateTime, |
1627 &OpenManifestEntry | 1637 &OpenManifestEntry, |
| 1638 &SetPNaClStartTime |
1628 }; | 1639 }; |
1629 | 1640 |
1630 } // namespace | 1641 } // namespace |
1631 | 1642 |
1632 const PPB_NaCl_Private* GetNaClPrivateInterface() { | 1643 const PPB_NaCl_Private* GetNaClPrivateInterface() { |
1633 return &nacl_interface; | 1644 return &nacl_interface; |
1634 } | 1645 } |
1635 | 1646 |
1636 } // namespace nacl | 1647 } // namespace nacl |
OLD | NEW |