// Copyright 2018 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. #ifndef V8_COMPILER_FUNCTIONAL_LIST_H_ #define V8_COMPILER_FUNCTIONAL_LIST_H_ #include "src/base/iterator.h" #include "src/zone/zone.h" namespace v8 { namespace internal { namespace compiler { // A generic stack implemented with a singly-linked list, which results in an // O(1) copy operation. It can be used to model immutable lists like those in // functional languages. Compared to typical functional lists, this also caches // the length of the list in each node. // Note: The underlying implementation is mutable, so if you want to use this as // an immutable list, make sure to create a copy by passing it by value and // operate on the copy. // TODO(turbofan): Use this implementation also for RedundancyElimination. template <class A> class FunctionalList { … }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_FUNCTIONAL_LIST_H_