Skip to content

Commit 8e2a55c

Browse files
committed
src: update SFI script accessor for V8 8.1
The metadata used to access the script field from an SFI changed on V8 8.1. The field is still the same, so no other changes are necessary. This fixes `v8 bt` on 8.1, as well as `stack-test` suite. PR-URL: #352
1 parent 364e034 commit 8e2a55c

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

src/llv8-constants.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,9 @@ void SharedInfo::Load() {
197197
LoadConstant("class_SharedFunctionInfo__inferred_name__String",
198198
"class_SharedFunctionInfo__function_identifier__Object");
199199
kScriptOffset = LoadConstant("class_SharedFunctionInfo__script__Object");
200-
kScriptOrDebugInfoOffset =
201-
LoadConstant("class_SharedFunctionInfo__script_or_debug_info__Object");
200+
kScriptOrDebugInfoOffset = LoadConstant(
201+
{"class_SharedFunctionInfo__script_or_debug_info__Object",
202+
"class_SharedFunctionInfo__script_or_debug_info__HeapObject"});
202203
kStartPositionOffset =
203204
LoadConstant("class_SharedFunctionInfo__start_position_and_type__int",
204205
"class_SharedFunctionInfo__start_position_and_type__SMI");

src/llv8-constants.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class SharedInfo : public Module {
157157
int64_t kNameOffset;
158158
int64_t kInferredNameOffset;
159159
int64_t kScriptOffset;
160-
int64_t kScriptOrDebugInfoOffset;
160+
Constant<int64_t> kScriptOrDebugInfoOffset;
161161
int64_t kStartPositionOffset;
162162
int64_t kEndPositionOffset;
163163
int64_t kParameterCountOffset;

src/llv8-inl.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -450,8 +450,8 @@ ACCESSOR(SharedFunctionInfo, name, shared_info()->kNameOffset, String)
450450
ACCESSOR(SharedFunctionInfo, inferred_name, shared_info()->kInferredNameOffset,
451451
Value)
452452
ACCESSOR(SharedFunctionInfo, script, shared_info()->kScriptOffset, Script)
453-
ACCESSOR(SharedFunctionInfo, script_or_debug_info,
454-
shared_info()->kScriptOrDebugInfoOffset, HeapObject)
453+
SAFE_ACCESSOR(SharedFunctionInfo, script_or_debug_info,
454+
shared_info()->kScriptOrDebugInfoOffset, HeapObject)
455455
ACCESSOR(SharedFunctionInfo, scope_info, shared_info()->kScopeInfoOffset,
456456
HeapObject)
457457
ACCESSOR(SharedFunctionInfo, name_or_scope_info,
@@ -499,7 +499,9 @@ HeapObject SharedFunctionInfo::GetScopeInfo(Error& err) {
499499
}
500500

501501
Script SharedFunctionInfo::GetScript(Error& err) {
502-
if (v8()->shared_info()->kScriptOrDebugInfoOffset == -1) return script(err);
502+
if (!v8()->shared_info()->kScriptOrDebugInfoOffset.Loaded()) {
503+
return script(err);
504+
}
503505

504506
HeapObject maybe_script = script_or_debug_info(err);
505507
if (maybe_script.IsScript(err)) return maybe_script;

0 commit comments

Comments
 (0)