File v8-assume-x86-64-v3-support.patch of Package nodejs-electron.v3
Remove runtime checks in V8 for using new CPU features, and allow using them in the snapshot_blob which gets compiled by V8 during build.
--- src/v8/src/codegen/cpu-features.h.orig
+++ src/v8/src/codegen/cpu-features.h
@@ -112,6 +112,18 @@
}
static bool IsSupported(CpuFeature f) {
+ if(f == SSE4_2) return true;
+ if(f == SSE4_1) return true;
+ if(f == SSSE3) return true;
+ if(f == SSE3) return true;
+ if(f == SAHF) return true;
+ if(f == AVX) return true;
+ if(f == AVX2) return true;
+ if(f == FMA3) return true;
+ if(f == BMI1) return true;
+ if(f == BMI2) return true;
+ if(f == LZCNT) return true;
+ if(f == POPCNT) return true;
return (supported_ & (1u << f)) != 0;
}
--- src/v8/src/base/cpu.h.orig
+++ src/v8/src/base/cpu.h
@@ -83,23 +83,23 @@
static const int kUnknownCacheLineSize = 0;
// x86 features
- bool has_cmov() const { return has_cmov_; }
- bool has_sahf() const { return has_sahf_; }
- bool has_mmx() const { return has_mmx_; }
- bool has_sse() const { return has_sse_; }
- bool has_sse2() const { return has_sse2_; }
- bool has_sse3() const { return has_sse3_; }
- bool has_ssse3() const { return has_ssse3_; }
- bool has_sse41() const { return has_sse41_; }
- bool has_sse42() const { return has_sse42_; }
- bool has_osxsave() const { return has_osxsave_; }
- bool has_avx() const { return has_avx_; }
- bool has_avx2() const { return has_avx2_; }
- bool has_fma3() const { return has_fma3_; }
- bool has_bmi1() const { return has_bmi1_; }
- bool has_bmi2() const { return has_bmi2_; }
- bool has_lzcnt() const { return has_lzcnt_; }
- bool has_popcnt() const { return has_popcnt_; }
+ bool has_cmov() const { return true; }
+ bool has_sahf() const { return true; }
+ bool has_mmx() const { return true; }
+ bool has_sse() const { return true; }
+ bool has_sse2() const { return true; }
+ bool has_sse3() const { return true; }
+ bool has_ssse3() const { return true; }
+ bool has_sse41() const { return true; }
+ bool has_sse42() const { return true; }
+ bool has_osxsave() const { return true; }
+ bool has_avx() const { return true; }
+ bool has_avx2() const { return true; }
+ bool has_fma3() const { return true; }
+ bool has_bmi1() const { return true; }
+ bool has_bmi2() const { return true; }
+ bool has_lzcnt() const { return true; }
+ bool has_popcnt() const { return true; }
bool is_atom() const { return is_atom_; }
bool has_cetss() const { return has_cetss_; }
bool has_non_stop_time_stamp_counter() const {