From 48f415fdf3ad4eb52066f939455ab324f5381fb6 Mon Sep 17 00:00:00 2001 From: gsennton Date: Tue, 10 Feb 2015 02:32:14 -0800 Subject: [PATCH] Name V8 snapshot according to target architecture (32/64 bit). Renaming webview copy of V8 snapshot to be able to differentiate between snapshots for 32- and 64 bit architectures. This is done so that snapshots for different architectures can be repacked into the same APK. BUG=455699 Review URL: https://codereview.chromium.org/881923003 Cr-Commit-Position: refs/heads/master@{#315533} --- android_webview/android_webview.gyp | 44 ++++++++++++++++++++++ android_webview/android_webview_tests.gypi | 41 +++++++++----------- android_webview/apk/system_webview_apk_common.gypi | 18 +++------ android_webview/lib/main/aw_main_delegate.cc | 14 ++++++- android_webview/snapshot_copying.gypi | 28 ++++++++++++++ 5 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 android_webview/snapshot_copying.gypi diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index 6302423fa974..729283dcab15 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -56,6 +56,50 @@ } ], }], + ['v8_use_external_startup_data==1', { + 'variables': { + 'conditions': [ + ['(target_arch=="arm" or target_arch=="ia32" or target_arch=="mipsel")', { + 'arch_suffix':'32' + }], + ['(target_arch=="arm64" or target_arch=="x64" or target_arch=="mips64el")', { + 'arch_suffix':'64' + }], + ], + }, + 'actions': [ + { + 'action_name': 'rename_snapshot_blob', + 'inputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + ], + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob_<(arch_suffix).bin', + ], + 'action': [ + 'python', + '<(DEPTH)/build/cp.py', + '<@(_inputs)', + '<@(_outputs)', + ], + }, + { + 'action_name': 'rename_natives_blob', + 'inputs': [ + '<(PRODUCT_DIR)/natives_blob.bin', + ], + 'outputs': [ + '<(PRODUCT_DIR)/natives_blob_<(arch_suffix).bin', + ], + 'action': [ + 'python', + '<(DEPTH)/build/cp.py', + '<@(_inputs)', + '<@(_outputs)', + ], + }, + ], + }], ], }, { diff --git a/android_webview/android_webview_tests.gypi b/android_webview/android_webview_tests.gypi index 817654fd0684..aca7475e5c44 100644 --- a/android_webview/android_webview_tests.gypi +++ b/android_webview/android_webview_tests.gypi @@ -18,36 +18,34 @@ 'native_lib_target': 'libstandalonelibwebviewchromium', 'resource_dir': 'test/shell/res', 'extensions_to_not_compress': 'pak,dat,bin', + 'asset_location': '<(PRODUCT_DIR)/android_webview_apk/assets', 'extra_native_libs': ['<(SHARED_LIB_DIR)/libdrawgl.>(android_product_extension)'], + 'snapshot_copy_files': '<(snapshot_copy_files)', 'additional_input_paths': [ - '<(PRODUCT_DIR)/android_webview_apk/assets/webviewchromium.pak', - '<(PRODUCT_DIR)/android_webview_apk/assets/en-US.pak', - '<(PRODUCT_DIR)/android_webview_apk/assets/asset_file.html', - '<(PRODUCT_DIR)/android_webview_apk/assets/cookie_test.html', - '<(PRODUCT_DIR)/android_webview_apk/assets/asset_icon.png', - '<(PRODUCT_DIR)/android_webview_apk/assets/full_screen_video.js', - '<(PRODUCT_DIR)/android_webview_apk/assets/full_screen_video_test.html', - '<(PRODUCT_DIR)/android_webview_apk/assets/full_screen_video_inside_div_test.html', - '<(PRODUCT_DIR)/android_webview_apk/assets/multiple_videos_test.html', - '<(PRODUCT_DIR)/android_webview_apk/assets/video.mp4', + '<(asset_location)/webviewchromium.pak', + '<(asset_location)/en-US.pak', + '<(asset_location)/asset_file.html', + '<(asset_location)/cookie_test.html', + '<(asset_location)/asset_icon.png', + '<(asset_location)/full_screen_video.js', + '<(asset_location)/full_screen_video_test.html', + '<(asset_location)/full_screen_video_inside_div_test.html', + '<(asset_location)/multiple_videos_test.html', + '<(asset_location)/video.mp4', + '<@(snapshot_additional_input_paths)', ], 'conditions': [ ['icu_use_data_file_flag==1', { 'additional_input_paths': [ - '<(PRODUCT_DIR)/icudtl.dat', - ], - }], - ['v8_use_external_startup_data==1', { - 'additional_input_paths': [ - '<(PRODUCT_DIR)/natives_blob.bin', - '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(asset_location)/icudtl.dat', ], }], ], + 'includes': [ 'snapshot_copying.gypi' ], }, 'copies': [ { - 'destination': '<(PRODUCT_DIR)/android_webview_apk/assets', + 'destination': '<(asset_location)', 'files': [ '<(PRODUCT_DIR)/android_webview_assets/webviewchromium.pak', '<(PRODUCT_DIR)/android_webview_assets/locales/en-US.pak', @@ -59,6 +57,7 @@ '<(java_in_dir)/assets/full_screen_video_inside_div_test.html', '<(java_in_dir)/assets/multiple_videos_test.html', '<(java_in_dir)/assets/video.mp4', + '<@(snapshot_copy_files)', ], 'conditions': [ ['icu_use_data_file_flag==1', { @@ -66,12 +65,6 @@ '<(PRODUCT_DIR)/icudtl.dat', ], }], - ['v8_use_external_startup_data==1', { - 'files': [ - '<(PRODUCT_DIR)/natives_blob.bin', - '<(PRODUCT_DIR)/snapshot_blob.bin', - ], - }], ], }, ], diff --git a/android_webview/apk/system_webview_apk_common.gypi b/android_webview/apk/system_webview_apk_common.gypi index a8f5b6c4f4de..b47135261733 100644 --- a/android_webview/apk/system_webview_apk_common.gypi +++ b/android_webview/apk/system_webview_apk_common.gypi @@ -18,6 +18,7 @@ 'R_package_relpath': 'com/android/webview/chromium', 'extensions_to_not_compress': 'pak,bin,dat', 'asset_location': '<(INTERMEDIATE_DIR)/assets/', + 'snapshot_copy_files': '<(snapshot_copy_files)', # TODO: crbug.com/442348 Update proguard.flags and re-enable. 'proguard_enabled': 'false', 'proguard_flags_paths': ['<(DEPTH)/android_webview/apk/java/proguard.flags'], @@ -26,6 +27,10 @@ '<@(webview_locales_output_paks)', '<(asset_location)/webviewchromium.pak', '<(asset_location)/webview_licenses.notice', + '<@(snapshot_additional_input_paths)', + ], + 'includes': [ + '../snapshot_copying.gypi', ], 'conditions': [ ['icu_use_data_file_flag==1', { @@ -33,12 +38,6 @@ '<(asset_location)/icudtl.dat', ], }], - ['v8_use_external_startup_data==1', { - 'additional_input_paths': [ - '<(asset_location)/natives_blob.bin', - '<(asset_location)/snapshot_blob.bin', - ], - }], ], }, 'copies': [ @@ -47,6 +46,7 @@ 'files': [ '<@(webview_locales_input_paks)', '<(PRODUCT_DIR)/android_webview_assets/webviewchromium.pak', + '<@(snapshot_copy_files)', ], 'conditions': [ ['icu_use_data_file_flag==1', { @@ -54,12 +54,6 @@ '<(PRODUCT_DIR)/icudtl.dat', ], }], - ['v8_use_external_startup_data==1', { - 'files': [ - '<(PRODUCT_DIR)/natives_blob.bin', - '<(PRODUCT_DIR)/snapshot_blob.bin', - ], - }], ], }, ], diff --git a/android_webview/lib/main/aw_main_delegate.cc b/android_webview/lib/main/aw_main_delegate.cc index 5ff728aab121..f8ea4a1c52bd 100644 --- a/android_webview/lib/main/aw_main_delegate.cc +++ b/android_webview/lib/main/aw_main_delegate.cc @@ -93,10 +93,20 @@ bool AwMainDelegate::BasicStartupComplete(int* exit_code) { // In multi-process mode this code would live in // AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess. #ifdef V8_USE_EXTERNAL_STARTUP_DATA +#ifdef __LP64__ + const char kNativesFileName[] = "natives_blob_64.bin"; + const char kSnapshotFileName[] = "snapshot_blob_64.bin"; +#else + const char kNativesFileName[] = "natives_blob_32.bin"; + const char kSnapshotFileName[] = "snapshot_blob_32.bin"; +#endif // __LP64__ + // TODO(gsennton) we should use + // gin::IsolateHolder::kNativesFileName/kSnapshotFileName + // here when those files have arch specific names http://crbug.com/455699 CHECK(AwAssets::RegisterAssetWithGlobalDescriptors( - kV8NativesDataDescriptor, gin::IsolateHolder::kNativesFileName)); + kV8NativesDataDescriptor, kNativesFileName)); CHECK(AwAssets::RegisterAssetWithGlobalDescriptors( - kV8SnapshotDataDescriptor, gin::IsolateHolder::kSnapshotFileName)); + kV8SnapshotDataDescriptor, kSnapshotFileName)); #endif // TODO(mkosiba): make this CHECK when the android_webview_build uses an asset // from the .apk too. diff --git a/android_webview/snapshot_copying.gypi b/android_webview/snapshot_copying.gypi new file mode 100644 index 000000000000..0a23a8cf0290 --- /dev/null +++ b/android_webview/snapshot_copying.gypi @@ -0,0 +1,28 @@ +{ + 'variables': { + 'snapshot_additional_input_paths': [], + 'snapshot_copy_files': [], + 'conditions': [ + ['v8_use_external_startup_data==1 and (target_arch=="arm" or target_arch=="ia32" or target_arch=="mipsel")', { + 'snapshot_additional_input_paths': [ + '<(asset_location)/natives_blob_32.bin', + '<(asset_location)/snapshot_blob_32.bin', + ], + 'snapshot_copy_files': [ + '<(PRODUCT_DIR)/natives_blob_32.bin', + '<(PRODUCT_DIR)/snapshot_blob_32.bin', + ], + }], + ['v8_use_external_startup_data==1 and (target_arch=="arm64" or target_arch=="x64" or target_arch=="mips64el")', { + 'snapshot_additional_input_paths': [ + '<(asset_location)/natives_blob_64.bin', + '<(asset_location)/snapshot_blob_64.bin', + ], + 'snapshot_copy_files': [ + '<(PRODUCT_DIR)/natives_blob_64.bin', + '<(PRODUCT_DIR)/snapshot_blob_64.bin', + ], + }], + ], + }, +} -- 2.11.4.GIT