diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-22 15:14:25 -0700 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-23 09:17:31 -0700 |
commit | a53c763c16eeabb0901a05dbcf38a72fa96d2f26 (patch) | |
tree | 309bf250e1521cedf0e945d7a7629db511e64498 /deps/v8/src/cpu.h | |
parent | 54910044b33a6405c72ad085915a55c575c027fc (diff) | |
download | node-new-a53c763c16eeabb0901a05dbcf38a72fa96d2f26.tar.gz |
v8: upgrade 3.21.18.3
Diffstat (limited to 'deps/v8/src/cpu.h')
-rw-r--r-- | deps/v8/src/cpu.h | 91 |
1 files changed, 83 insertions, 8 deletions
diff --git a/deps/v8/src/cpu.h b/deps/v8/src/cpu.h index 247af71aa3..b2e9f7da7e 100644 --- a/deps/v8/src/cpu.h +++ b/deps/v8/src/cpu.h @@ -1,4 +1,4 @@ -// Copyright 2006-2008 the V8 project authors. All rights reserved. +// Copyright 2006-2013 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -44,14 +44,64 @@ namespace internal { // ---------------------------------------------------------------------------- // CPU // -// This class has static methods for the architecture specific functions. Add -// methods here to cope with differences between the supported architectures. +// Query information about the processor. // -// For each architecture the file cpu_<arch>.cc contains the implementation of -// these functions. +// This class also has static methods for the architecture specific functions. +// Add methods here to cope with differences between the supported +// architectures. For each architecture the file cpu_<arch>.cc contains the +// implementation of these static functions. -class CPU : public AllStatic { +class CPU V8_FINAL BASE_EMBEDDED { public: + CPU(); + + // x86 CPUID information + const char* vendor() const { return vendor_; } + int stepping() const { return stepping_; } + int model() const { return model_; } + int ext_model() const { return ext_model_; } + int family() const { return family_; } + int ext_family() const { return ext_family_; } + int type() const { return type_; } + + // arm implementer/part information + int implementer() const { return implementer_; } + static const int ARM = 0x41; + static const int QUALCOMM = 0x51; + int architecture() const { return architecture_; } + int part() const { return part_; } + static const int ARM_CORTEX_A5 = 0xc05; + static const int ARM_CORTEX_A7 = 0xc07; + static const int ARM_CORTEX_A8 = 0xc08; + static const int ARM_CORTEX_A9 = 0xc09; + static const int ARM_CORTEX_A12 = 0xc0c; + static const int ARM_CORTEX_A15 = 0xc0f; + + // General features + bool has_fpu() const { return has_fpu_; } + + // 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_; } + + // arm features + bool has_idiva() const { return has_idiva_; } + bool has_neon() const { return has_neon_; } + bool has_thumbee() const { return has_thumbee_; } + bool has_vfp() const { return has_vfp_; } + bool has_vfp3() const { return has_vfp3_; } + bool has_vfp3_d32() const { return has_vfp3_d32_; } + + // Returns the number of processors online. + static int NumberOfProcessorsOnline(); + // Initializes the cpu architecture support. Called once at VM startup. static void SetUp(); @@ -60,8 +110,33 @@ class CPU : public AllStatic { // Flush instruction cache. static void FlushICache(void* start, size_t size); - // Try to activate a system level debugger. - static void DebugBreak(); + private: + char vendor_[13]; + int stepping_; + int model_; + int ext_model_; + int family_; + int ext_family_; + int type_; + int implementer_; + int architecture_; + int part_; + bool has_fpu_; + bool has_cmov_; + bool has_sahf_; + bool has_mmx_; + bool has_sse_; + bool has_sse2_; + bool has_sse3_; + bool has_ssse3_; + bool has_sse41_; + bool has_sse42_; + bool has_idiva_; + bool has_neon_; + bool has_thumbee_; + bool has_vfp_; + bool has_vfp3_; + bool has_vfp3_d32_; }; } } // namespace v8::internal |