Skip to content

Commit 5a94ecf

Browse files
committed
src: handle String__FIELD_offset__int
Some Node.js v12 versions will have String postmortem metadata as `String__FIELD_offset__int` instead of `String__FIELD_offset__TYPE`. Handle both cases so llnode can work on more versions. PR-URL: #330 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
1 parent f8eebcc commit 5a94ecf

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

src/llv8-constants.cc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,18 +323,22 @@ void TwoByteString::Load() {
323323

324324

325325
void ConsString::Load() {
326-
kFirstOffset = LoadConstant("class_ConsString__first__String");
327-
kSecondOffset = LoadConstant("class_ConsString__second__String");
326+
kFirstOffset = LoadConstant({"class_ConsString__first__String",
327+
"class_ConsString__first_offset__int"});
328+
kSecondOffset = LoadConstant({"class_ConsString__second__String",
329+
"class_ConsString__second_offset__int"});
328330
}
329331

330332

331333
void SlicedString::Load() {
332334
kParentOffset = LoadConstant("class_SlicedString__parent__String");
333-
kOffsetOffset = LoadConstant("class_SlicedString__offset__SMI");
335+
kOffsetOffset = LoadConstant({"class_SlicedString__offset__SMI",
336+
"class_SlicedString__offset_offset__int"});
334337
}
335338

336339
void ThinString::Load() {
337-
kActualOffset = LoadConstant("class_ThinString__actual__String");
340+
kActualOffset = LoadConstant({"class_ThinString__actual__String",
341+
"class_ThinString__actual_offset__int"});
338342
}
339343

340344
void FixedArrayBase::Load() {

src/llv8-constants.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,8 @@ class ConsString : public Module {
296296
public:
297297
CONSTANTS_DEFAULT_METHODS(ConsString);
298298

299-
int64_t kFirstOffset;
300-
int64_t kSecondOffset;
299+
Constant<int64_t> kFirstOffset;
300+
Constant<int64_t> kSecondOffset;
301301

302302
protected:
303303
void Load();
@@ -308,7 +308,7 @@ class SlicedString : public Module {
308308
CONSTANTS_DEFAULT_METHODS(SlicedString);
309309

310310
int64_t kParentOffset;
311-
int64_t kOffsetOffset;
311+
Constant<int64_t> kOffsetOffset;
312312

313313
protected:
314314
void Load();
@@ -318,7 +318,7 @@ class ThinString : public Module {
318318
public:
319319
CONSTANTS_DEFAULT_METHODS(ThinString);
320320

321-
int64_t kActualOffset;
321+
Constant<int64_t> kActualOffset;
322322

323323
protected:
324324
void Load();

src/llv8-inl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -774,13 +774,13 @@ ACCESSOR(JSFunction, Info, js_function()->kSharedInfoOffset,
774774
SharedFunctionInfo);
775775
ACCESSOR(JSFunction, GetContext, js_function()->kContextOffset, HeapObject);
776776

777-
ACCESSOR(ConsString, First, cons_string()->kFirstOffset, String);
778-
ACCESSOR(ConsString, Second, cons_string()->kSecondOffset, String);
777+
SAFE_ACCESSOR(ConsString, First, cons_string()->kFirstOffset, String);
778+
SAFE_ACCESSOR(ConsString, Second, cons_string()->kSecondOffset, String);
779779

780780
ACCESSOR(SlicedString, Parent, sliced_string()->kParentOffset, String);
781-
ACCESSOR(SlicedString, Offset, sliced_string()->kOffsetOffset, Smi);
781+
SAFE_ACCESSOR(SlicedString, Offset, sliced_string()->kOffsetOffset, Smi);
782782

783-
ACCESSOR(ThinString, Actual, thin_string()->kActualOffset, String);
783+
SAFE_ACCESSOR(ThinString, Actual, thin_string()->kActualOffset, String);
784784

785785
ACCESSOR(FixedArrayBase, Length, fixed_array_base()->kLengthOffset, Smi);
786786

0 commit comments

Comments
 (0)