summaryrefslogtreecommitdiff
path: root/deps/v8/src/execution/arm64/simulator-arm64.h
diff options
context:
space:
mode:
authorMyles Borins <mylesborins@google.com>2019-09-24 11:56:38 -0400
committerMyles Borins <myles.borins@gmail.com>2019-10-07 03:19:23 -0400
commitf7f6c928c1c9c136b7926f892b8a2fda11d8b4b2 (patch)
treef5edbccb3ffda2573d70a6e291e7157f290e0ae0 /deps/v8/src/execution/arm64/simulator-arm64.h
parentffd22e81983056d09c064c59343a0e488236272d (diff)
downloadandroid-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.gz
android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.bz2
android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.zip
deps: update V8 to 7.8.279.9
PR-URL: https://github.com/nodejs/node/pull/29694 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Diffstat (limited to 'deps/v8/src/execution/arm64/simulator-arm64.h')
-rw-r--r--deps/v8/src/execution/arm64/simulator-arm64.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/deps/v8/src/execution/arm64/simulator-arm64.h b/deps/v8/src/execution/arm64/simulator-arm64.h
index ca1cef61ae..4a493ec696 100644
--- a/deps/v8/src/execution/arm64/simulator-arm64.h
+++ b/deps/v8/src/execution/arm64/simulator-arm64.h
@@ -1273,6 +1273,45 @@ class Simulator : public DecoderVisitor, public SimulatorBase {
static inline const char* VRegNameForCode(unsigned code);
static inline int CodeFromName(const char* name);
+ enum PointerType { kDataPointer, kInstructionPointer };
+
+ struct PACKey {
+ uint64_t high;
+ uint64_t low;
+ int number;
+ };
+
+ static const PACKey kPACKeyIA;
+
+ // Current implementation is that all pointers are tagged.
+ static bool HasTBI(uint64_t ptr, PointerType type) {
+ USE(ptr, type);
+ return true;
+ }
+
+ // Current implementation uses 48-bit virtual addresses.
+ static int GetBottomPACBit(uint64_t ptr, int ttbr) {
+ USE(ptr, ttbr);
+ DCHECK((ttbr == 0) || (ttbr == 1));
+ return 48;
+ }
+
+ // The top PAC bit is 55 for the purposes of relative bit fields with TBI,
+ // however bit 55 is the TTBR bit regardless of TBI so isn't part of the PAC
+ // codes in pointers.
+ static int GetTopPACBit(uint64_t ptr, PointerType type) {
+ return HasTBI(ptr, type) ? 55 : 63;
+ }
+
+ // Armv8.3 Pointer authentication helpers.
+ static uint64_t CalculatePACMask(uint64_t ptr, PointerType type, int ext_bit);
+ static uint64_t ComputePAC(uint64_t data, uint64_t context, PACKey key);
+ static uint64_t AuthPAC(uint64_t ptr, uint64_t context, PACKey key,
+ PointerType type);
+ static uint64_t AddPAC(uint64_t ptr, uint64_t context, PACKey key,
+ PointerType type);
+ static uint64_t StripPAC(uint64_t ptr, PointerType type);
+
protected:
// Simulation helpers ------------------------------------
bool ConditionPassed(Condition cond) {