Files
sdk/runtime/vm/cpuinfo.h
T
zra@google.com 7c91e88e6e Adds support for ARMv6.
When we detect ARMv6, instead of using movw and
movt, this change loads each individual byte.
Although this is not the best way to achieve this,
a modification to store large constants in the
object pool would be more invasive. Further,
this change will be easier to back-out once
ARMv6 is obsolete.

R=regis@google.com

Review URL: https://codereview.chromium.org//183803024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33442 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 19:17:36 +00:00

76 lines
2.0 KiB
C++

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef VM_CPUINFO_H_
#define VM_CPUINFO_H_
#include "platform/assert.h"
#include "vm/allocation.h"
namespace dart {
// Indices into cpuinfo field name arrays.
enum CpuInfoIndices {
kCpuInfoProcessor = 0,
kCpuInfoModel = 1,
kCpuInfoHardware = 2,
kCpuInfoFeatures = 3,
kCpuInfoMax = 4,
};
// For Intel architectures, the method to use to get CPU information.
enum CpuInfoMethod {
// Use the cpuid instruction.
kCpuInfoCpuId,
// Use system calls.
kCpuInfoSystem,
// Use whatever the default is for a particular OS:
// Linux, Windows -> CpuId,
// Android, MacOS -> System.
kCpuInfoDefault,
};
class CpuInfo : public AllStatic {
public:
static void InitOnce();
static void Cleanup();
static const char* FieldName(CpuInfoIndices idx) {
ASSERT((idx >= 0) && (idx < kCpuInfoMax));
return fields_[idx];
}
// Returns true if the cpuinfo field contains the string.
static bool FieldContains(CpuInfoIndices idx, const char* search_string);
static bool FieldContainsByString(
const char* field, const char* search_string);
// Returns true if the cpuinfo field [field] exists and is non-empty.
static bool HasField(const char* field);
// Returns the field. Caller is responsible for freeing the result.
static const char* ExtractField(CpuInfoIndices idx);
static const char* ExtractFieldByString(const char* field);
// Returns the field describing the CPU model. Caller is responsible for
// freeing the result.
static const char* GetCpuModel() {
ASSERT(HasField(FieldName(kCpuInfoHardware)));
return ExtractField(kCpuInfoHardware);
}
private:
// The method to use to acquire info about the CPU.
static CpuInfoMethod method_;
// Cpuinfo field names.
static const char* fields_[kCpuInfoMax];
};
} // namespace dart
#endif // VM_CPUINFO_H_