LCOV - code coverage report
Current view: top level - src/x64 - cpu-x64.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 3 3 100.0 %
Date: 2017-04-26 Functions: 1 1 100.0 %

          Line data    Source code
       1             : // Copyright 2012 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : // CPU specific code for x64 independent of OS goes here.
       6             : 
       7             : #if defined(__GNUC__) && !defined(__MINGW64__)
       8             : #include "src/third_party/valgrind/valgrind.h"
       9             : #endif
      10             : 
      11             : #if V8_TARGET_ARCH_X64
      12             : 
      13             : #include "src/assembler.h"
      14             : #include "src/macro-assembler.h"
      15             : 
      16             : namespace v8 {
      17             : namespace internal {
      18             : 
      19   382266297 : void CpuFeatures::FlushICache(void* start, size_t size) {
      20             :   // No need to flush the instruction cache on Intel. On Intel instruction
      21             :   // cache flushing is only necessary when multiple cores running the same
      22             :   // code simultaneously. V8 (and JavaScript) is single threaded and when code
      23             :   // is patched on an intel CPU the core performing the patching will have its
      24             :   // own instruction cache updated automatically.
      25             : 
      26             :   // If flushing of the instruction cache becomes necessary Windows has the
      27             :   // API function FlushInstructionCache.
      28             : 
      29             :   // By default, valgrind only checks the stack for writes that might need to
      30             :   // invalidate already cached translated code.  This leads to random
      31             :   // instability when code patches or moves are sometimes unnoticed.  One
      32             :   // solution is to run valgrind with --smc-check=all, but this comes at a big
      33             :   // performance cost.  We can notify valgrind to invalidate its cache.
      34             : #ifdef VALGRIND_DISCARD_TRANSLATIONS
      35   382266297 :   unsigned res = VALGRIND_DISCARD_TRANSLATIONS(start, size);
      36             :   USE(res);
      37             : #endif
      38   382269098 : }
      39             : 
      40             : }  // namespace internal
      41             : }  // namespace v8
      42             : 
      43             : #endif  // V8_TARGET_ARCH_X64

Generated by: LCOV version 1.10