8029305: add type tag to AbstractCompiler
authortwisti
Mon, 06 Jan 2014 17:23:07 -0800
changeset 22236 44508442b8da
parent 22235 bf73739ef0bc
child 22237 e9d7daf0d91b
8029305: add type tag to AbstractCompiler Reviewed-by: iveresov, kvn
hotspot/src/share/vm/c1/c1_Compiler.cpp
hotspot/src/share/vm/c1/c1_Compiler.hpp
hotspot/src/share/vm/compiler/abstractCompiler.hpp
hotspot/src/share/vm/opto/c2compiler.hpp
hotspot/src/share/vm/shark/sharkCompiler.cpp
--- a/hotspot/src/share/vm/c1/c1_Compiler.cpp	Mon Jan 06 15:35:20 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.cpp	Mon Jan 06 17:23:07 2014 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,8 @@
 #include "runtime/sharedRuntime.hpp"
 
 
-Compiler::Compiler () {}
+Compiler::Compiler() : AbstractCompiler(c1) {
+}
 
 void Compiler::init_c1_runtime() {
   BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob();
--- a/hotspot/src/share/vm/c1/c1_Compiler.hpp	Mon Jan 06 15:35:20 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.hpp	Mon Jan 06 17:23:07 2014 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,8 +42,6 @@
   // Name of this compiler
   virtual const char* name()                     { return "C1"; }
 
-  virtual bool is_c1()                           { return true; };
-
   // Missing feature tests
   virtual bool supports_native()                 { return true; }
   virtual bool supports_osr   ()                 { return true; }
--- a/hotspot/src/share/vm/compiler/abstractCompiler.hpp	Mon Jan 06 15:35:20 2014 -0800
+++ b/hotspot/src/share/vm/compiler/abstractCompiler.hpp	Mon Jan 06 17:23:07 2014 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,8 +40,19 @@
   // This thread will initialize the compiler runtime.
   bool should_perform_init();
 
+  // The (closed set) of concrete compiler classes.
+  enum Type {
+    none,
+    c1,
+    c2,
+    shark
+  };
+
+ private:
+  Type _type;
+
  public:
-  AbstractCompiler() : _compiler_state(uninitialized), _num_compiler_threads(0) {}
+  AbstractCompiler(Type type) : _type(type), _compiler_state(uninitialized), _num_compiler_threads(0) {}
 
   // This function determines the compiler thread that will perform the
   // shutdown of the corresponding compiler runtime.
@@ -54,27 +65,11 @@
   virtual bool supports_native()                 { return true; }
   virtual bool supports_osr   ()                 { return true; }
   virtual bool can_compile_method(methodHandle method)  { return true; }
-#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK))
-  virtual bool is_c1   ()                        { return false; }
-  virtual bool is_c2   ()                        { return false; }
-  virtual bool is_shark()                        { return false; }
-#else
-#ifdef COMPILER1
-  bool is_c1   ()                                { return true; }
-  bool is_c2   ()                                { return false; }
-  bool is_shark()                                { return false; }
-#endif // COMPILER1
-#ifdef COMPILER2
-  bool is_c1   ()                                { return false; }
-  bool is_c2   ()                                { return true; }
-  bool is_shark()                                { return false; }
-#endif // COMPILER2
-#ifdef SHARK
-  bool is_c1   ()                                { return false; }
-  bool is_c2   ()                                { return false; }
-  bool is_shark()                                { return true; }
-#endif // SHARK
-#endif // TIERED
+
+  // Compiler type queries.
+  bool is_c1()                                   { return _type == c1; }
+  bool is_c2()                                   { return _type == c2; }
+  bool is_shark()                                { return _type == shark; }
 
   // Customization
   virtual void initialize () = 0;
--- a/hotspot/src/share/vm/opto/c2compiler.hpp	Mon Jan 06 15:35:20 2014 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.hpp	Mon Jan 06 17:23:07 2014 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,13 +32,11 @@
   static bool init_c2_runtime();
 
 public:
+  C2Compiler() : AbstractCompiler(c2) {}
+
   // Name
   const char *name() { return "C2"; }
 
-#ifdef TIERED
-  virtual bool is_c2() { return true; };
-#endif // TIERED
-
   void initialize();
 
   // Compilation entry point for methods
--- a/hotspot/src/share/vm/shark/sharkCompiler.cpp	Mon Jan 06 15:35:20 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkCompiler.cpp	Mon Jan 06 17:23:07 2014 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -58,7 +58,7 @@
 }
 
 SharkCompiler::SharkCompiler()
-  : AbstractCompiler() {
+  : AbstractCompiler(shark) {
   // Create the lock to protect the memory manager and execution engine
   _execution_engine_lock = new Monitor(Mutex::leaf, "SharkExecutionEngineLock");
   MutexLocker locker(execution_engine_lock());