Reviewers: mvstanton, danno, Paul Lind, kisg, kilvadyb, dusmil,
Message:
PTAL.
Description:
MIPS: Serializer enable/disable flags need thread safety.
Port r20855 (ac70e129)
BUG=
Please review this at https://codereview.chromium.org/239173004/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+26, -6 lines):
M src/mips/assembler-mips.h
M src/mips/assembler-mips.cc
Index: src/mips/assembler-mips.cc
diff --git a/src/mips/assembler-mips.cc b/src/mips/assembler-mips.cc
index
29df222f40c78f76b72c9f6be79b1ad89adfa7c4..f3a57f94a50d3c071605a00bfa73a4e658fd885f
100644
--- a/src/mips/assembler-mips.cc
+++ b/src/mips/assembler-mips.cc
@@ -46,6 +46,7 @@ namespace internal {
#ifdef DEBUG
bool CpuFeatures::initialized_ = false;
#endif
+bool CpuFeatures::hint_creating_snapshot_ = false;
unsigned CpuFeatures::supported_ = 0;
unsigned CpuFeatures::found_by_runtime_probing_only_ = 0;
unsigned CpuFeatures::cross_compile_ = 0;
@@ -102,7 +103,23 @@ const char*
DoubleRegister::AllocationIndexToString(int index) {
}
+void CpuFeatures::SetHintCreatingSnapshot() {
+ hint_creating_snapshot_ = true;
+}
+
+
+void CpuFeatures::ProbeWithoutIsolate() {
+ Probe(hint_creating_snapshot_);
+}
+
+
void CpuFeatures::Probe() {
+ // The Serializer can only be queried after isolate initialization.
+ Probe(Serializer::enabled());
+}
+
+
+void CpuFeatures::Probe(bool serializer_enabled) {
unsigned standard_features = (OS::CpuFeaturesImpliedByPlatform() |
CpuFeaturesImpliedByCompiler());
ASSERT(supported_ == 0 ||
@@ -116,7 +133,7 @@ void CpuFeatures::Probe() {
// snapshot.
supported_ |= standard_features;
- if (Serializer::enabled()) {
+ if (serializer_enabled) {
// No probing for features if we might serialize (generate snapshot).
return;
}
@@ -2080,11 +2097,6 @@ void Assembler::RecordRelocInfo(RelocInfo::Mode
rmode, intptr_t data) {
if (!RelocInfo::IsNone(rinfo.rmode())) {
// Don't record external references unless the heap will be serialized.
if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
-#ifdef DEBUG
- if (!Serializer::enabled()) {
- Serializer::TooLateToEnableNow();
- }
-#endif
if (!Serializer::enabled() && !emit_debug_code()) {
return;
}
Index: src/mips/assembler-mips.h
diff --git a/src/mips/assembler-mips.h b/src/mips/assembler-mips.h
index
4f365e71d210d2d348e187bd0a9266f87675bf67..e4729b2dd428a239670aaa317d7ccc2f37e8239a
100644
--- a/src/mips/assembler-mips.h
+++ b/src/mips/assembler-mips.h
@@ -427,6 +427,11 @@ class CpuFeatures : public AllStatic {
// is enabled (snapshots must be portable).
static void Probe();
+ // A special case for printing target and features, which we want to do
+ // before initializing the isolate
+ static void SetHintCreatingSnapshot();
+ static void ProbeWithoutIsolate();
+
// Check whether a feature is supported by the target CPU.
static bool IsSupported(CpuFeature f) {
ASSERT(initialized_);
@@ -455,6 +460,9 @@ class CpuFeatures : public AllStatic {
}
private:
+ static void Probe(bool serializer_enabled);
+ static bool hint_creating_snapshot_;
+
static bool Check(CpuFeature f, unsigned set) {
return (set & flag2set(f)) != 0;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.