Skip to content

Commit 3c50350

Browse files
targosMyles Borins
authored and
Myles Borins
committed
deps: fix null pointer checks in v8
fix null pointer checks in V8's FrameStateDescriptor PR-URL: #6669 Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent a40730b commit 3c50350

File tree

5 files changed

+19
-14
lines changed

5 files changed

+19
-14
lines changed

deps/v8/src/compiler/code-generator.cc

+6-3
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,8 @@ void CodeGenerator::BuildTranslationForFrameStateDescriptor(
524524
translation, frame_state_offset,
525525
OutputFrameStateCombine::Ignore());
526526
}
527-
frame_state_offset += descriptor->outer_state()->GetTotalSize();
527+
frame_state_offset +=
528+
FrameStateDescriptor::GetTotalSize(descriptor->outer_state());
528529

529530
Handle<SharedFunctionInfo> shared_info;
530531
if (!descriptor->shared_info().ToHandle(&shared_info)) {
@@ -562,8 +563,10 @@ int CodeGenerator::BuildTranslation(Instruction* instr, int pc_offset,
562563
frame_state_offset++;
563564

564565
Translation translation(
565-
&translations_, static_cast<int>(descriptor->GetFrameCount()),
566-
static_cast<int>(descriptor->GetJSFrameCount()), zone());
566+
&translations_,
567+
static_cast<int>(FrameStateDescriptor::GetFrameCount(descriptor)),
568+
static_cast<int>(FrameStateDescriptor::GetJSFrameCount(descriptor)),
569+
zone());
567570
BuildTranslationForFrameStateDescriptor(descriptor, instr, &translation,
568571
frame_state_offset, state_combine);
569572

deps/v8/src/compiler/instruction-selector-impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ struct CallBuffer {
374374
size_t frame_state_value_count() const {
375375
return (frame_state_descriptor == NULL)
376376
? 0
377-
: (frame_state_descriptor->GetTotalSize() +
377+
: (FrameStateDescriptor::GetTotalSize(frame_state_descriptor) +
378378
1); // Include deopt id.
379379
}
380380
};

deps/v8/src/compiler/instruction-selector.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,8 @@ void InstructionSelector::VisitDeoptimize(Node* value) {
10071007
OperandGenerator g(this);
10081008

10091009
FrameStateDescriptor* desc = GetFrameStateDescriptor(value);
1010-
size_t arg_count = desc->GetTotalSize() + 1; // Include deopt id.
1010+
size_t arg_count =
1011+
FrameStateDescriptor::GetTotalSize(desc) + 1; // Include deopt id.
10111012

10121013
InstructionOperandVector args(instruction_zone());
10131014
args.reserve(arg_count);

deps/v8/src/compiler/instruction.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -697,29 +697,29 @@ size_t FrameStateDescriptor::GetSize(OutputFrameStateCombine combine) const {
697697
}
698698

699699

700-
size_t FrameStateDescriptor::GetTotalSize() const {
700+
size_t FrameStateDescriptor::GetTotalSize(const FrameStateDescriptor* desc) {
701701
size_t total_size = 0;
702-
for (const FrameStateDescriptor* iter = this; iter != NULL;
702+
for (const FrameStateDescriptor* iter = desc; iter != NULL;
703703
iter = iter->outer_state_) {
704704
total_size += iter->GetSize();
705705
}
706706
return total_size;
707707
}
708708

709709

710-
size_t FrameStateDescriptor::GetFrameCount() const {
710+
size_t FrameStateDescriptor::GetFrameCount(const FrameStateDescriptor* desc) {
711711
size_t count = 0;
712-
for (const FrameStateDescriptor* iter = this; iter != NULL;
712+
for (const FrameStateDescriptor* iter = desc; iter != NULL;
713713
iter = iter->outer_state_) {
714714
++count;
715715
}
716716
return count;
717717
}
718718

719719

720-
size_t FrameStateDescriptor::GetJSFrameCount() const {
720+
size_t FrameStateDescriptor::GetJSFrameCount(const FrameStateDescriptor* desc) {
721721
size_t count = 0;
722-
for (const FrameStateDescriptor* iter = this; iter != NULL;
722+
for (const FrameStateDescriptor* iter = desc; iter != NULL;
723723
iter = iter->outer_state_) {
724724
if (iter->type_ == FrameStateType::kJavaScriptFunction) {
725725
++count;

deps/v8/src/compiler/instruction.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,10 @@ class FrameStateDescriptor : public ZoneObject {
869869
MaybeHandle<SharedFunctionInfo> shared_info,
870870
FrameStateDescriptor* outer_state = nullptr);
871871

872+
static size_t GetTotalSize(const FrameStateDescriptor* desc);
873+
static size_t GetFrameCount(const FrameStateDescriptor* desc);
874+
static size_t GetJSFrameCount(const FrameStateDescriptor* desc);
875+
872876
FrameStateType type() const { return type_; }
873877
BailoutId bailout_id() const { return bailout_id_; }
874878
OutputFrameStateCombine state_combine() const { return frame_state_combine_; }
@@ -883,9 +887,6 @@ class FrameStateDescriptor : public ZoneObject {
883887

884888
size_t GetSize(OutputFrameStateCombine combine =
885889
OutputFrameStateCombine::Ignore()) const;
886-
size_t GetTotalSize() const;
887-
size_t GetFrameCount() const;
888-
size_t GetJSFrameCount() const;
889890

890891
MachineType GetType(size_t index) const;
891892
void SetType(size_t index, MachineType type);

0 commit comments

Comments
 (0)