// Copyright 2020 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. class State { _timeSelection = {start: 0, end: Infinity}; _map; _ic; _selectedMapLogEntries; _selectedIcLogEntries; _selectedDeoptLogEntries; _selectedSourcePositions; _nofChunks; _chunks; _icTimeline; _mapTimeline; _deoptTimeline; _minStartTime = Number.POSITIVE_INFINITY; _maxEndTime = Number.NEGATIVE_INFINITY; get minStartTime() { return this._minStartTime; } get maxEndTime() { return this._maxEndTime; } selectTimeRange(start, end) { this.timeSelection.start = start; this.timeSelection.end = end; this._icTimeline.selectTimeRange(start, end); this._mapTimeline.selectTimeRange(start, end); this._deoptTimeline.selectTimeRange(start, end); } _updateTimeRange(timeline) { this._minStartTime = Math.min(this._minStartTime, timeline.startTime); this._maxEndTime = Math.max(this._maxEndTime, timeline.endTime); timeline.startTime = this._minStartTime; timeline.endTime = this._maxEndTime; } get mapTimeline() { return this._mapTimeline; } set mapTimeline(timeline) { this._updateTimeRange(timeline); this._mapTimeline = timeline; } get icTimeline() { return this._icTimeline; } set icTimeline(timeline) { this._updateTimeRange(timeline); this._icTimeline = timeline; } get deoptTimeline() { return this._deoptTimeline; } set deoptTimeline(timeline) { this._updateTimeRange(timeline); this._deoptTimeline = timeline; } set chunks(value) { // TODO(zcankara) split up between maps and ics, and every timeline track this._chunks = value; } get chunks() { // TODO(zcankara) split up between maps and ics, and every timeline track return this._chunks; } get nofChunks() { return this._nofChunks; } set nofChunks(count) { this._nofChunks = count; } get map() { // TODO(zcankara) rename as selectedMapEvents, array of selected events return this._map; } set map(value) { // TODO(zcankara) rename as selectedMapEvents, array of selected events if (!value) return; this._map = value; } get ic() { // TODO(zcankara) rename selectedICEvents, array of selected events return this._ic; } set ic(value) { // TODO(zcankara) rename selectedIcEvents, array of selected events if (!value) return; this._ic = value; } get selectedMapLogEntries() { return this._selectedMapLogEntries; } set selectedMapLogEntries(value) { if (!value) return; this._selectedMapLogEntries = value; } get selectedSourcePositions() { return this._selectedSourcePositions; } set selectedSourcePositions(value) { this._selectedSourcePositions = value; } get selectedIcLogEntries() { return this._selectedIcLogEntries; } set selectedIcLogEntries(value) { if (!value) return; this._selectedIcLogEntries = value; } get timeSelection() { return this._timeSelection; } get entries() { if (!this.map) return {}; return { map: this.map.id, time: this.map.time } } } export {State};