diff --git a/src/cpu/zero/vm/vm_version_ext_zero.cpp b/src/cpu/zero/vm/vm_version_ext_zero.cpp new file mode 100644 index 0000000000000000000000000000000000000000..97db9742d1c7ea4e6d1afdbdf3b3c7da3983e425 --- /dev/null +++ b/src/cpu/zero/vm/vm_version_ext_zero.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013, 2018, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include "memory/allocation.hpp" +#include "memory/allocation.inline.hpp" +#include "runtime/os.hpp" +#include "vm_version_ext_zero.hpp" + +// VM_Version_Ext statics +int VM_Version_Ext::_no_of_threads = 0; +int VM_Version_Ext::_no_of_cores = 0; +int VM_Version_Ext::_no_of_sockets = 0; +bool VM_Version_Ext::_initialized = false; +char VM_Version_Ext::_cpu_name[CPU_TYPE_DESC_BUF_SIZE] = {0}; + +void VM_Version_Ext::initialize_cpu_information(void) { + // do nothing if cpu info has been initialized + if (_initialized) { + return; + } + + int core_id = -1; + int chip_id = -1; + int len = 0; + char* src_string = NULL; + + _no_of_cores = os::processor_count(); + _no_of_threads = _no_of_cores; + _no_of_sockets = _no_of_cores; + snprintf(_cpu_name, CPU_TYPE_DESC_BUF_SIZE - 1, "Zero VM"); + _initialized = true; +} + +int VM_Version_Ext::number_of_threads(void) { + initialize_cpu_information(); + return _no_of_threads; +} + +int VM_Version_Ext::number_of_cores(void) { + initialize_cpu_information(); + return _no_of_cores; +} + +int VM_Version_Ext::number_of_sockets(void) { + initialize_cpu_information(); + return _no_of_sockets; +} + +const char* VM_Version_Ext::cpu_name(void) { + initialize_cpu_information(); + char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_TYPE_DESC_BUF_SIZE, mtTracing); + if (NULL == tmp) { + return NULL; + } + strncpy(tmp, _cpu_name, CPU_TYPE_DESC_BUF_SIZE); + return tmp; +} + +const char* VM_Version_Ext::cpu_description(void) { + return ""; +} diff --git a/src/cpu/zero/vm/vm_version_ext_zero.hpp b/src/cpu/zero/vm/vm_version_ext_zero.hpp new file mode 100644 index 0000000000000000000000000000000000000000..f9645e9f74a658ae37e4c27580990cb4f3af466e --- /dev/null +++ b/src/cpu/zero/vm/vm_version_ext_zero.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2013, 2018, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef CPU_ZERO_VM_VM_VERSION_EXT_ZERO_HPP +#define CPU_ZERO_VM_VM_VERSION_EXT_ZERO_HPP + +#include "utilities/macros.hpp" +#include "vm_version_zero.hpp" + +class VM_Version_Ext : public VM_Version { + private: + static const size_t CPU_TYPE_DESC_BUF_SIZE = 256; + + static int _no_of_threads; + static int _no_of_cores; + static int _no_of_sockets; + static bool _initialized; + static char _cpu_name[CPU_TYPE_DESC_BUF_SIZE]; + + public: + static int number_of_threads(void); + static int number_of_cores(void); + static int number_of_sockets(void); + + static const char* cpu_name(void); + static const char* cpu_description(void); + static void initialize_cpu_information(void); + +}; + +#endif // CPU_ZERO_VM_VM_VERSION_EXT_ZERO_HPP diff --git a/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp b/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp index 39f77f858d039d0775f3939f961fb88b20723402..94bc83a30cd07fdeb0910aa2846514783a450cf5 100644 --- a/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp +++ b/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp @@ -112,6 +112,14 @@ ShouldNotCallThis(); } + bool pd_get_top_frame_for_profiling(frame* fr_addr, + void* ucontext, + bool isInJava) { + ShouldNotCallThis(); + return false; // silence compile warning + } + + // These routines are only used on cpu architectures that // have separate register stacks (Itanium). static bool register_stack_overflow() { return false; } diff --git a/src/share/vm/utilities/ticks.cpp b/src/share/vm/utilities/ticks.cpp index 342cc34ee26d8942f37ffd54aad2dfaa0c204454..8ffcf1d27edfebd7a6966e8aad6cce3a1f6a869e 100644 --- a/src/share/vm/utilities/ticks.cpp +++ b/src/share/vm/utilities/ticks.cpp @@ -26,7 +26,7 @@ #include "runtime/os.hpp" #include "utilities/ticks.hpp" -#ifdef X86 +#if defined(X86) && !defined(ZERO) #include "rdtsc_x86.hpp" #endif @@ -61,7 +61,7 @@ uint64_t ElapsedCounterSource::nanoseconds(Type value) { } uint64_t FastUnorderedElapsedCounterSource::frequency() { -#ifdef X86 +#if defined(X86) && !defined(ZERO) static bool valid_rdtsc = Rdtsc::initialize(); if (valid_rdtsc) { static const uint64_t freq = (uint64_t)Rdtsc::frequency(); @@ -73,7 +73,7 @@ uint64_t FastUnorderedElapsedCounterSource::frequency() { } FastUnorderedElapsedCounterSource::Type FastUnorderedElapsedCounterSource::now() { -#ifdef X86 +#if defined(X86) && !defined(ZERO) static bool valid_rdtsc = Rdtsc::initialize(); if (valid_rdtsc) { return Rdtsc::elapsed_counter(); @@ -105,7 +105,7 @@ uint64_t CompositeElapsedCounterSource::frequency() { CompositeElapsedCounterSource::Type CompositeElapsedCounterSource::now() { CompositeTime ct; ct.val1 = ElapsedCounterSource::now(); -#ifdef X86 +#if defined(X86) && !defined(ZERO) static bool initialized = false; static bool valid_rdtsc = false; if (!initialized) {