Chromium Code Reviews| Index: snapshot_toolchain.gni | 
| diff --git a/snapshot_toolchain.gni b/snapshot_toolchain.gni | 
| index 5fe19fd6953fa165eedaf9b1fb1ab72e6a7efaa7..ceda840d427457e417ee73f87b0fcba595602257 100644 | 
| --- a/snapshot_toolchain.gni | 
| +++ b/snapshot_toolchain.gni | 
| @@ -38,26 +38,46 @@ declare_args() { | 
| # configurations v8 runs on. | 
| if (v8_snapshot_toolchain == "") { | 
| if (host_cpu == "x64" && host_os == "linux") { | 
| - if (current_cpu == "arm" || current_cpu == "mipsel" || | 
| - current_cpu == "x86") { | 
| - _snapshot_cpu = "x86" | 
| + if (v8_current_cpu == v8_target_cpu && current_cpu == target_cpu && | 
| + (target_cpu == "x86" || target_cpu == "x64")) { | 
| 
 
Michael Achenbach
2016/07/22 20:55:15
So the revert was due to the case where target cpu
 
 | 
| + # Args that are specified by the user can end up having the same | 
| + # effect as args that are specified in a toolchain; for example, | 
| + # building on linux x64 with target_cpu == "x86" v8_target_cpu == "arm" | 
| + # will use the //build/toolchain/linux:clang_x86 toolchain, but have the | 
| + # same effect as if you specified | 
| + # | 
| + # custom_toolchain="//build/toolchain/linux:clang_x86_v8_arm" | 
| + # | 
| + # As a result, if we didn't take that into account we could | 
| + # accidentally end up building two identical copies of v8. | 
| + # | 
| + # So, we can re-use the default toolchain for the snapshot in these | 
| + # casees, but only when the host is actually capable of running the | 
| + # target code, which at this time means that the target_cpu == x86 | 
| + # or x64. | 
| + v8_snapshot_toolchain = default_toolchain | 
| } else { | 
| - assert(current_cpu == "arm64" || current_cpu == "x64" || | 
| - current_cpu == "mips64el", | 
| - "Need environment for this arch: $current_cpu") | 
| - _snapshot_cpu = "x64" | 
| - } | 
| + if (current_cpu == "arm" || current_cpu == "mipsel" || | 
| + current_cpu == "x86") { | 
| + _snapshot_cpu = "x86" | 
| + } else { | 
| + assert(current_cpu == "arm64" || current_cpu == "x64" || | 
| + current_cpu == "mips64el", | 
| + "Need environment for this arch: $current_cpu") | 
| + _snapshot_cpu = "x64" | 
| + } | 
| - if (v8_current_cpu != _snapshot_cpu) { | 
| - _cpus = "${_snapshot_cpu}_v8_${v8_current_cpu}" | 
| - } else { | 
| - _cpus = _snapshot_cpu | 
| - } | 
| + if (v8_current_cpu != _snapshot_cpu) { | 
| + _cpus = "${_snapshot_cpu}_v8_${v8_current_cpu}" | 
| + } else { | 
| + _cpus = _snapshot_cpu | 
| + } | 
| - if ((host_os == "linux" && current_os == "android") || is_clang) { | 
| - v8_snapshot_toolchain = "//build/toolchain/linux:clang_${_cpus}" | 
| - } else { | 
| - v8_snapshot_toolchain = "//build/toolchain/linux:${_cpus}" | 
| + if ((host_os == "linux" && current_os == "android") || is_clang) { | 
| + v8_snapshot_toolchain = "//build/toolchain/linux:clang_${_cpus}" | 
| + } else { | 
| + v8_snapshot_toolchain = "//build/toolchain/linux:${_cpus}" | 
| + } | 
| } | 
| } else if (host_os == "mac" && current_os == "win") { | 
| assert(v8_current_cpu == current_cpu, |