# HG changeset patch # User twisti # Date 1389057787 28800 # Node ID 16e101c8691f5c62ef914ab61ae10ff6aa387d18 # Parent a7e8ff4a18381d995c7d463952af449f57d0a90e 8029305: add type tag to AbstractCompiler Reviewed-by: iveresov, kvn diff -r a7e8ff4a1838 -r 16e101c8691f src/share/vm/c1/c1_Compiler.cpp --- a/src/share/vm/c1/c1_Compiler.cpp Mon Jan 06 15:35:20 2014 -0800 +++ b/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(); diff -r a7e8ff4a1838 -r 16e101c8691f src/share/vm/c1/c1_Compiler.hpp --- a/src/share/vm/c1/c1_Compiler.hpp Mon Jan 06 15:35:20 2014 -0800 +++ b/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; } diff -r a7e8ff4a1838 -r 16e101c8691f src/share/vm/compiler/abstractCompiler.hpp --- a/src/share/vm/compiler/abstractCompiler.hpp Mon Jan 06 15:35:20 2014 -0800 +++ b/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; diff -r a7e8ff4a1838 -r 16e101c8691f src/share/vm/opto/c2compiler.hpp --- a/src/share/vm/opto/c2compiler.hpp Mon Jan 06 15:35:20 2014 -0800 +++ b/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 diff -r a7e8ff4a1838 -r 16e101c8691f src/share/vm/shark/sharkCompiler.cpp --- a/src/share/vm/shark/sharkCompiler.cpp Mon Jan 06 15:35:20 2014 -0800 +++ b/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());