Skip to content

Commit cb9e8f9

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.
1 parent 1948512 commit cb9e8f9

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
@@ -444,8 +444,8 @@ ACCESSOR(SharedFunctionInfo, name, shared_info()->kNameOffset, String)
444444
ACCESSOR(SharedFunctionInfo, inferred_name, shared_info()->kInferredNameOffset,
445445
Value)
446446
ACCESSOR(SharedFunctionInfo, script, shared_info()->kScriptOffset, Script)
447-
ACCESSOR(SharedFunctionInfo, script_or_debug_info,
448-
shared_info()->kScriptOrDebugInfoOffset, HeapObject)
447+
SAFE_ACCESSOR(SharedFunctionInfo, script_or_debug_info,
448+
shared_info()->kScriptOrDebugInfoOffset, HeapObject)
449449
ACCESSOR(SharedFunctionInfo, scope_info, shared_info()->kScopeInfoOffset,
450450
HeapObject)
451451
ACCESSOR(SharedFunctionInfo, name_or_scope_info,
@@ -493,7 +493,9 @@ HeapObject SharedFunctionInfo::GetScopeInfo(Error& err) {
493493
}
494494

495495
Script SharedFunctionInfo::GetScript(Error& err) {
496-
if (v8()->shared_info()->kScriptOrDebugInfoOffset == -1) return script(err);
496+
if (!v8()->shared_info()->kScriptOrDebugInfoOffset.Loaded()) {
497+
return script(err);
498+
}
497499

498500
HeapObject maybe_script = script_or_debug_info(err);
499501
if (maybe_script.IsScript(err)) return maybe_script;

0 commit comments

Comments
 (0)