@@ -10322,7 +10322,7 @@ AccessorSignature* AccessorSignature::Cast(Data* data) {
1032210322}
1032310323
1032410324Local<Value> Object::GetInternalField (int index) {
10325- #if !defined( V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS)
10325+ #ifndef V8_ENABLE_CHECKS
1032610326 typedef internal::Address A;
1032710327 typedef internal::Internals I;
1032810328 A obj = *reinterpret_cast <A*>(this );
@@ -10333,7 +10333,12 @@ Local<Value> Object::GetInternalField(int index) {
1033310333 instance_type == I::kJSApiObjectType ||
1033410334 instance_type == I::kJSSpecialApiObjectType ) {
1033510335 int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index);
10336- A value = I::ReadTaggedAnyField (obj, offset);
10336+ A value = I::ReadRawField<A>(obj, offset);
10337+ #ifdef V8_COMPRESS_POINTERS
10338+ // We read the full pointer value and then decompress it in order to avoid
10339+ // dealing with potential endiannes issues.
10340+ value = I::DecompressTaggedAnyField (obj, static_cast <int32_t >(value));
10341+ #endif
1033710342 internal::Isolate* isolate =
1033810343 internal::IsolateFromNeverReadOnlySpaceObject (obj);
1033910344 A* result = HandleScope::CreateHandle (isolate, value);
@@ -10345,7 +10350,7 @@ Local<Value> Object::GetInternalField(int index) {
1034510350
1034610351
1034710352void * Object::GetAlignedPointerFromInternalField (int index) {
10348- #if !defined( V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS)
10353+ #ifndef V8_ENABLE_CHECKS
1034910354 typedef internal::Address A;
1035010355 typedef internal::Internals I;
1035110356 A obj = *reinterpret_cast <A*>(this );
@@ -10956,13 +10961,24 @@ int64_t Isolate::AdjustAmountOfExternalAllocatedMemory(
1095610961}
1095710962
1095810963Local<Value> Context::GetEmbedderData (int index) {
10959- #if !defined( V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS)
10964+ #ifndef V8_ENABLE_CHECKS
1096010965 typedef internal::Address A;
1096110966 typedef internal::Internals I;
10967+ A ctx = *reinterpret_cast <const A*>(this );
10968+ A embedder_data =
10969+ I::ReadTaggedPointerField (ctx, I::kNativeContextEmbedderDataOffset );
10970+ int value_offset =
10971+ I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
10972+ A value = I::ReadRawField<A>(embedder_data, value_offset);
10973+ #ifdef V8_COMPRESS_POINTERS
10974+ // We read the full pointer value and then decompress it in order to avoid
10975+ // dealing with potential endiannes issues.
10976+ value =
10977+ I::DecompressTaggedAnyField (embedder_data, static_cast <int32_t >(value));
10978+ #endif
1096210979 internal::Isolate* isolate = internal::IsolateFromNeverReadOnlySpaceObject (
1096310980 *reinterpret_cast <A*>(this ));
10964- A* result =
10965- HandleScope::CreateHandle (isolate, I::ReadEmbedderData<A>(this , index));
10981+ A* result = HandleScope::CreateHandle (isolate, value);
1096610982 return Local<Value>(reinterpret_cast <Value*>(result));
1096710983#else
1096810984 return SlowGetEmbedderData (index);
@@ -10971,9 +10987,15 @@ Local<Value> Context::GetEmbedderData(int index) {
1097110987
1097210988
1097310989void * Context::GetAlignedPointerFromEmbedderData (int index) {
10974- #if !defined(V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS)
10990+ #ifndef V8_ENABLE_CHECKS
10991+ typedef internal::Address A;
1097510992 typedef internal::Internals I;
10976- return I::ReadEmbedderData<void *>(this , index);
10993+ A ctx = *reinterpret_cast <const A*>(this );
10994+ A embedder_data =
10995+ I::ReadTaggedPointerField (ctx, I::kNativeContextEmbedderDataOffset );
10996+ int value_offset =
10997+ I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
10998+ return I::ReadRawField<void *>(embedder_data, value_offset);
1097710999#else
1097811000 return SlowGetAlignedPointerFromEmbedderData (index);
1097911001#endif
0 commit comments