V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
cpu-x64.cc
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
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
unsigned
res = VALGRIND_DISCARD_TRANSLATIONS(start, size);
36
USE(res);
37
#endif
38
}
39
40
}
// namespace internal
41
}
// namespace v8
42
43
#endif // V8_TARGET_ARCH_X64
v8
Definition:
libplatform.h:13
v8
src
x64
cpu-x64.cc
Generated on Tue Dec 25 2018 14:40:04 by
1.8.14