Remove tebbi from OWNERS and TODOs
OWNERS files: removed tebbi's entry. TODOs: replaced with 'turbofan'. Change-Id: Ib7a90418b394f123b82051379f120f0323d04097 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639757 Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Michael Hablich <hablich@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#72223}
This commit is contained in:
parent
eacd5a31ba
commit
fa6b7a6970
@ -34,7 +34,6 @@ sigurds@chromium.org
|
||||
solanes@chromium.org
|
||||
syg@chromium.org
|
||||
szuend@chromium.org
|
||||
tebbi@chromium.org
|
||||
thibaudm@chromium.org
|
||||
ulan@chromium.org
|
||||
vahl@chromium.org
|
||||
|
@ -163,7 +163,7 @@ struct Buffer {
|
||||
const nofSeparatorsInt: intptr = nofSeparators;
|
||||
const sepsLen: intptr = separatorLength * nofSeparatorsInt;
|
||||
// Detect integer overflow
|
||||
// TODO(tebbi): Replace with overflow-checked multiplication.
|
||||
// TODO(turbofan): Replace with overflow-checked multiplication.
|
||||
if (sepsLen / separatorLength != nofSeparatorsInt) deferred {
|
||||
ThrowInvalidStringLength(context);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ macro HandleFastAliasedSloppyArgumentsSlice(
|
||||
unmappedElements.objects[current]);
|
||||
// It is safe to skip the write barrier here because resultElements was
|
||||
// allocated together with result in a folded allocation.
|
||||
// TODO(tebbi): The verification of this fails at the moment due to
|
||||
// TODO(turbofan): The verification of this fails at the moment due to
|
||||
// missing load elimination.
|
||||
StoreFixedArrayElement(
|
||||
resultElements, indexOut++, newElement, UNSAFE_SKIP_WRITE_BARRIER);
|
||||
|
@ -70,9 +70,9 @@ macro WeakToStrong<T: type>(x: Weak<T>): T labels ClearedWeakPointer {
|
||||
// Doesn't include PrivateSymbol.
|
||||
type PropertyKey = String|PublicSymbol;
|
||||
|
||||
// TODO(tebbi): PrivateSymbol is only exposed to JavaScript through the debugger
|
||||
// API. We should reconsider this and try not to expose it at all. Then JSAny
|
||||
// would not need to contain it.
|
||||
// TODO(turbofan): PrivateSymbol is only exposed to JavaScript through the
|
||||
// debugger API. We should reconsider this and try not to expose it at all. Then
|
||||
// JSAny would not need to contain it.
|
||||
|
||||
// A JavaScript primitive value as defined in
|
||||
// https://tc39.es/ecma262/#sec-primitive-value.
|
||||
@ -1301,7 +1301,7 @@ macro CheckIntegerIndexAdditionOverflow(
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(tebbi): Define enum here once they appear in Torque.
|
||||
// TODO(turbofan): Define enum here once they appear in Torque.
|
||||
//
|
||||
// The value is a SafeInteger that fits into uintptr range, so no bounds checks
|
||||
// are necessary.
|
||||
|
@ -178,7 +178,7 @@ void ArrayBuiltinsAssembler::GenerateIteratingTypedArrayBuiltinBody(
|
||||
BIND(&*it);
|
||||
Label done(this);
|
||||
source_elements_kind_ = static_cast<ElementsKind>(elements_kinds[i]);
|
||||
// TODO(tebbi): Silently cancelling the loop on buffer detachment is a
|
||||
// TODO(turbofan): Silently cancelling the loop on buffer detachment is a
|
||||
// spec violation. Should go to &throw_detached and throw a TypeError
|
||||
// instead.
|
||||
VisitAllTypedArrayElements(array_buffer, processor, &done, direction,
|
||||
|
@ -119,7 +119,8 @@ TNode<JSRegExpResult> RegExpBuiltinsAssembler::AllocateRegExpResult(
|
||||
CodeAssembler::LoadRoot(RootIndex::kUndefinedValue));
|
||||
|
||||
StoreObjectFieldNoWriteBarrier(result, JSRegExpResult::kIndexOffset, index);
|
||||
// TODO(jgruber,tebbi): Could skip barrier but the MemoryOptimizer complains.
|
||||
// TODO(jgruber,turbofan): Could skip barrier but the MemoryOptimizer
|
||||
// complains.
|
||||
StoreObjectField(result, JSRegExpResult::kInputOffset, input);
|
||||
StoreObjectFieldNoWriteBarrier(result, JSRegExpResult::kGroupsOffset,
|
||||
undefined_value);
|
||||
|
@ -258,7 +258,7 @@ Cast<Boolean>(o: HeapObject): Boolean labels CastError {
|
||||
return Cast<Boolean>(o) otherwise CastError;
|
||||
}
|
||||
|
||||
// TODO(tebbi): These trivial casts for union types should be generated
|
||||
// TODO(turbofan): These trivial casts for union types should be generated
|
||||
// automatically.
|
||||
|
||||
Cast<JSPrimitive>(o: Object): JSPrimitive labels CastError {
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// TODO(tebbi): This could be replaced with a fast C-call to
|
||||
// TODO(turbofan): This could be replaced with a fast C-call to
|
||||
// CompareCharsUnsigned.
|
||||
macro IsSubstringAt<A: type, B: type>(
|
||||
string: ConstSlice<A>, searchStr: ConstSlice<B>, start: intptr): bool {
|
||||
|
@ -12,7 +12,7 @@ extern macro StringBuiltinsAssembler::GetSubstitution(
|
||||
extern builtin
|
||||
StringIndexOf(implicit context: Context)(String, String, Smi): Smi;
|
||||
|
||||
// TODO(tebbi): This could be replaced with a fast C-call to StringSearchRaw.
|
||||
// TODO(turbofan): This could be replaced with a fast C-call to StringSearchRaw.
|
||||
macro AbstractStringIndexOf<A: type, B: type>(
|
||||
string: ConstSlice<A>, searchString: ConstSlice<B>, fromIndex: Smi): Smi {
|
||||
for (let i: intptr = SmiUntag(fromIndex);
|
||||
|
@ -14,6 +14,5 @@ neis@chromium.org
|
||||
rmcilroy@chromium.org
|
||||
sigurds@chromium.org
|
||||
solanes@chromium.org
|
||||
tebbi@chromium.org
|
||||
titzer@chromium.org
|
||||
mythria@chromium.org
|
||||
|
@ -368,7 +368,7 @@ class TNode {
|
||||
// SloppyTNode<T> is a variant of TNode<T> and allows implicit casts from
|
||||
// Node*. It is intended for function arguments as long as some call sites
|
||||
// still use untyped Node* arguments.
|
||||
// TODO(tebbi): Delete this class once transition is finished.
|
||||
// TODO(turbofan): Delete this class once transition is finished.
|
||||
template <class T>
|
||||
class SloppyTNode : public TNode<T> {
|
||||
public:
|
||||
|
@ -3249,7 +3249,7 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) {
|
||||
}
|
||||
|
||||
void TurboAssembler::ResetSpeculationPoisonRegister() {
|
||||
// TODO(tebbi): Perhaps, we want to put an lfence here.
|
||||
// TODO(turbofan): Perhaps, we want to put an lfence here.
|
||||
Set(kSpeculationPoisonRegister, -1);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
bmeurer@chromium.org
|
||||
danno@chromium.org
|
||||
sigurds@chromium.org
|
||||
tebbi@chromium.org
|
||||
neis@chromium.org
|
||||
mvstanton@chromium.org
|
||||
mslekova@chromium.org
|
||||
|
@ -1048,7 +1048,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
||||
__ RequiredStackSizeForCallerSaved(fp_mode_, kReturnRegister0);
|
||||
frame_access_state()->IncreaseSPDelta(bytes / kSystemPointerSize);
|
||||
}
|
||||
// TODO(tebbi): Do we need an lfence here?
|
||||
// TODO(turbofan): Do we need an lfence here?
|
||||
break;
|
||||
}
|
||||
case kArchJmp:
|
||||
|
@ -133,7 +133,7 @@ class VariableTracker {
|
||||
Maybe<Node*> Get(Variable var) {
|
||||
Node* node = current_state_.Get(var);
|
||||
if (node && node->opcode() == IrOpcode::kDead) {
|
||||
// TODO(tebbi): We use {Dead} as a sentinel for uninitialized memory.
|
||||
// TODO(turbofan): We use {Dead} as a sentinel for uninitialized memory.
|
||||
// Reading uninitialized memory can only happen in unreachable code. In
|
||||
// this case, we have to mark the object as escaping to avoid dead nodes
|
||||
// in the graph. This is a workaround that should be removed once we can
|
||||
@ -479,8 +479,8 @@ VariableTracker::State VariableTracker::MergeInputs(Node* effect_phi) {
|
||||
Node* phi = graph_->graph()->NewNode(
|
||||
graph_->common()->Phi(MachineRepresentation::kTagged, arity),
|
||||
arity + 1, &buffer_.front());
|
||||
// TODO(tebbi): Computing precise types here is tricky, because of
|
||||
// the necessary revisitations. If we really need this, we should
|
||||
// TODO(turbofan): Computing precise types here is tricky, because
|
||||
// of the necessary revisitations. If we really need this, we should
|
||||
// probably do it afterwards.
|
||||
NodeProperties::SetType(phi, Type::Any());
|
||||
reducer_->AddRoot(phi);
|
||||
@ -711,7 +711,7 @@ void ReduceNode(const Operator* op, EscapeAnalysisTracker::Scope* current,
|
||||
} else if (right_object && !right_object->HasEscaped()) {
|
||||
replacement = jsgraph->FalseConstant();
|
||||
}
|
||||
// TODO(tebbi) This is a workaround for uninhabited types. If we
|
||||
// TODO(turbofan) This is a workaround for uninhabited types. If we
|
||||
// replaced a value of uninhabited type with a constant, we would
|
||||
// widen the type of the node. This could produce inconsistent
|
||||
// types (which might confuse representation selection). We get
|
||||
|
@ -131,7 +131,7 @@ class VirtualObject : public Dependable {
|
||||
CHECK(IsAligned(offset, kTaggedSize));
|
||||
CHECK(!HasEscaped());
|
||||
if (offset >= size()) {
|
||||
// TODO(tebbi): Reading out-of-bounds can only happen in unreachable
|
||||
// TODO(turbofan): Reading out-of-bounds can only happen in unreachable
|
||||
// code. In this case, we have to mark the object as escaping to avoid
|
||||
// dead nodes in the graph. This is a workaround that should be removed
|
||||
// once we can handle dead nodes everywhere.
|
||||
|
@ -16,7 +16,7 @@ namespace compiler {
|
||||
// results in an O(1) copy operation. It is the equivalent of functional lists
|
||||
// in ML-like languages, with the only difference that it also caches the length
|
||||
// of the list in each node.
|
||||
// TODO(tebbi): Use this implementation also for RedundancyElimination.
|
||||
// TODO(turbofan): Use this implementation also for RedundancyElimination.
|
||||
template <class A>
|
||||
class FunctionalList {
|
||||
private:
|
||||
|
@ -5339,7 +5339,7 @@ Reduction JSCallReducer::ReduceArrayPrototypePop(Node* node) {
|
||||
Node* efalse = effect;
|
||||
Node* vfalse;
|
||||
{
|
||||
// TODO(tebbi): We should trim the backing store if the capacity is too
|
||||
// TODO(turbofan): We should trim the backing store if the capacity is too
|
||||
// big, as implemented in elements.cc:ElementsAccessorBase::SetLengthImpl.
|
||||
|
||||
// Load the elements backing store from the {receiver}.
|
||||
|
@ -1081,8 +1081,9 @@ Reduction LoadElimination::ReduceLoadElement(Node* node) {
|
||||
// Make sure we don't resurrect dead {replacement} nodes.
|
||||
// Skip lowering if the type of the {replacement} node is not a subtype
|
||||
// of the original {node}'s type.
|
||||
// TODO(tebbi): We should insert a {TypeGuard} for the intersection of
|
||||
// these two types here once we properly handle {Type::None} everywhere.
|
||||
// TODO(turbofan): We should insert a {TypeGuard} for the intersection
|
||||
// of these two types here once we properly handle {Type::None}
|
||||
// everywhere.
|
||||
if (!replacement->IsDead() && NodeProperties::GetType(replacement)
|
||||
.Is(NodeProperties::GetType(node))) {
|
||||
ReplaceWithValue(node, replacement, effect);
|
||||
|
@ -977,7 +977,7 @@ class MachineRepresentationChecker {
|
||||
return IsAnyCompressed(actual);
|
||||
case MachineRepresentation::kTaggedSigned:
|
||||
case MachineRepresentation::kTaggedPointer:
|
||||
// TODO(tebbi): At the moment, the machine graph doesn't contain
|
||||
// TODO(turbofan): At the moment, the machine graph doesn't contain
|
||||
// reliable information if a node is kTaggedSigned, kTaggedPointer or
|
||||
// kTagged, and often this is context-dependent. We should at least
|
||||
// check for obvious violations: kTaggedSigned where we expect
|
||||
|
@ -41,7 +41,7 @@ bool CanAllocate(const Node* node) {
|
||||
case IrOpcode::kRetain:
|
||||
case IrOpcode::kStackPointerGreaterThan:
|
||||
case IrOpcode::kStaticAssert:
|
||||
// TODO(tebbi): Store nodes might do a bump-pointer allocation.
|
||||
// TODO(turbofan): Store nodes might do a bump-pointer allocation.
|
||||
// We should introduce a special bump-pointer store node to
|
||||
// differentiate that.
|
||||
case IrOpcode::kStore:
|
||||
|
@ -309,7 +309,7 @@ struct BinopMatcher : public NodeMatcher {
|
||||
protected:
|
||||
void SwapInputs() {
|
||||
std::swap(left_, right_);
|
||||
// TODO(tebbi): This modification should notify the reducers using
|
||||
// TODO(turbofan): This modification should notify the reducers using
|
||||
// BinopMatcher. Alternatively, all reducers (especially value numbering)
|
||||
// could ignore the ordering for commutative binops.
|
||||
node()->ReplaceInput(0, left().node());
|
||||
|
@ -28,8 +28,8 @@ namespace compiler {
|
||||
// - iteration: amortized O(1) per step
|
||||
// - Zip: O(n)
|
||||
// - equality check: O(n)
|
||||
// TODO(tebbi): Cache map transitions to avoid re-allocation of the same map.
|
||||
// TODO(tebbi): Implement an O(1) equality check based on hash consing or
|
||||
// TODO(turbofan): Cache map transitions to avoid re-allocation of the same map.
|
||||
// TODO(turbofan): Implement an O(1) equality check based on hash consing or
|
||||
// something similar.
|
||||
template <class Key, class Value, class Hasher = base::hash<Key>>
|
||||
class PersistentMap {
|
||||
|
@ -1698,7 +1698,8 @@ struct EscapeAnalysisPhase {
|
||||
UnparkedScopeIfNeeded scope(data->broker());
|
||||
|
||||
reducer.ReduceGraph();
|
||||
// TODO(tebbi): Turn this into a debug mode check once we have confidence.
|
||||
// TODO(turbofan): Turn this into a debug mode check once we have
|
||||
// confidence.
|
||||
escape_reducer.VerifyReplacement();
|
||||
}
|
||||
};
|
||||
|
@ -1053,7 +1053,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
|
||||
|
||||
// A post-processing pass to add effect and control edges so that the graph
|
||||
// can be optimized and re-scheduled.
|
||||
// TODO(tebbi): Move this to a separate class.
|
||||
// TODO(turbofan): Move this to a separate class.
|
||||
void MakeReschedulable();
|
||||
Node* CreateNodeFromPredecessors(const std::vector<BasicBlock*>& predecessors,
|
||||
const std::vector<Node*>& sidetable,
|
||||
|
@ -764,7 +764,7 @@ class RepresentationSelector {
|
||||
DCHECK(TypeOf(node).IsNone());
|
||||
// If the node is unreachable, insert an Unreachable node and mark the
|
||||
// value dead.
|
||||
// TODO(jarin,tebbi) Find a way to unify/merge this insertion with
|
||||
// TODO(jarin,turbofan) Find a way to unify/merge this insertion with
|
||||
// InsertUnreachableIfNecessary.
|
||||
Node* unreachable = effect =
|
||||
graph()->NewNode(jsgraph_->common()->Unreachable(), effect, control);
|
||||
|
@ -2,4 +2,3 @@ jgruber@chromium.org
|
||||
neis@chromium.org
|
||||
nicohartmann@chromium.org
|
||||
sigurds@chromium.org
|
||||
tebbi@chromium.org
|
||||
|
@ -912,18 +912,18 @@ void GlobalDictionary::GlobalDictionaryPrint(std::ostream& os) {
|
||||
|
||||
void SmallOrderedHashSet::SmallOrderedHashSetPrint(std::ostream& os) {
|
||||
PrintHeader(os, "SmallOrderedHashSet");
|
||||
// TODO(tebbi): Print all fields.
|
||||
// TODO(turbofan): Print all fields.
|
||||
}
|
||||
|
||||
void SmallOrderedHashMap::SmallOrderedHashMapPrint(std::ostream& os) {
|
||||
PrintHeader(os, "SmallOrderedHashMap");
|
||||
// TODO(tebbi): Print all fields.
|
||||
// TODO(turbofan): Print all fields.
|
||||
}
|
||||
|
||||
void SmallOrderedNameDictionary::SmallOrderedNameDictionaryPrint(
|
||||
std::ostream& os) {
|
||||
PrintHeader(os, "SmallOrderedNameDictionary");
|
||||
// TODO(tebbi): Print all fields.
|
||||
// TODO(turbofan): Print all fields.
|
||||
}
|
||||
|
||||
void OrderedHashSet::OrderedHashSetPrint(std::ostream& os) {
|
||||
|
@ -4468,7 +4468,7 @@ void BytecodeGenerator::VisitYieldStar(YieldStar* expr) {
|
||||
.SwitchOnSmiNoFeedback(switch_jump_table);
|
||||
|
||||
// Fallthrough to default case.
|
||||
// TODO(tebbi): Add debug code to check that {resume_mode} really is
|
||||
// TODO(ignition): Add debug code to check that {resume_mode} really is
|
||||
// {JSGeneratorObject::kNext} in this case.
|
||||
STATIC_ASSERT(JSGeneratorObject::kNext == 0);
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ extern macro CopyFixedArrayElements(
|
||||
macro ExtractFixedArray(
|
||||
source: FixedArray, first: intptr, count: intptr,
|
||||
capacity: intptr): FixedArray {
|
||||
// TODO(tebbi): This should be optimized to use memcpy for initialization.
|
||||
// TODO(turbofan): This should be optimized to use memcpy for initialization.
|
||||
return NewFixedArray(
|
||||
capacity,
|
||||
IteratorSequence<Object>(
|
||||
@ -135,7 +135,7 @@ macro ExtractFixedArray(
|
||||
macro ExtractFixedDoubleArray(
|
||||
source: FixedDoubleArray, first: intptr, count: intptr,
|
||||
capacity: intptr): FixedDoubleArray|EmptyFixedArray {
|
||||
// TODO(tebbi): This should be optimized to use memcpy for initialization.
|
||||
// TODO(turbofan): This should be optimized to use memcpy for initialization.
|
||||
return NewFixedDoubleArray(
|
||||
capacity,
|
||||
IteratorSequence<float64_or_hole>(
|
||||
|
@ -1092,7 +1092,8 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) {
|
||||
case SYNTHETIC_MODULE_TYPE:
|
||||
return Op::template apply<SyntheticModule::BodyDescriptor>(p1, p2, p3,
|
||||
p4);
|
||||
// TODO(tebbi): Avoid duplicated cases when the body descriptors are identical.
|
||||
// TODO(turbofan): Avoid duplicated cases when the body descriptors are
|
||||
// identical.
|
||||
#define MAKE_TORQUE_BODY_DESCRIPTOR_APPLY(TYPE, TypeName) \
|
||||
case TYPE: \
|
||||
return Op::template apply<TypeName::BodyDescriptor>(p1, p2, p3, p4);
|
||||
|
@ -1,3 +1,2 @@
|
||||
mvstanton@chromium.org
|
||||
nicohartmann@chromium.org
|
||||
tebbi@chromium.org
|
||||
|
@ -102,7 +102,7 @@ void CSAGenerator::EmitSourcePosition(SourcePosition pos, bool always_emit) {
|
||||
void CSAGenerator::EmitInstruction(
|
||||
const PushUninitializedInstruction& instruction,
|
||||
Stack<std::string>* stack) {
|
||||
// TODO(tebbi): This can trigger an error in CSA if it is used. Instead, we
|
||||
// TODO(turbofan): This can trigger an error in CSA if it is used. Instead, we
|
||||
// should prevent usage of uninitialized in the type system. This
|
||||
// requires "if constexpr" being evaluated at Torque time.
|
||||
const std::string str = "ca_.Uninitialized<" +
|
||||
|
@ -2848,7 +2848,7 @@ VisitResult ImplementationVisitor::GenerateCall(
|
||||
} else {
|
||||
size_t slot_count = LoweredSlotCount(return_type);
|
||||
DCHECK_LE(slot_count, 1);
|
||||
// TODO(tebbi): Actually, runtime functions have to return a value, so
|
||||
// TODO(turbofan): Actually, runtime functions have to return a value, so
|
||||
// we should assert slot_count == 1 here.
|
||||
return VisitResult(return_type, assembler().TopRange(slot_count));
|
||||
}
|
||||
@ -4479,7 +4479,7 @@ void GeneratePrintDefinitionsForClass(std::ostream& impl, const ClassType* type,
|
||||
!f.name_and_type.type->IsSubtypeOf(TypeOracle::GetTaggedType())) {
|
||||
impl << " os << \"\\n - " << f.name_and_type.name << ": \" << ";
|
||||
if (f.name_and_type.type->StructSupertype()) {
|
||||
// TODO(tebbi): Print struct fields too.
|
||||
// TODO(turbofan): Print struct fields too.
|
||||
impl << "\" <struct field printing still unimplemented>\";\n";
|
||||
} else {
|
||||
impl << "this->" << f.name_and_type.name << "();\n";
|
||||
|
@ -423,8 +423,8 @@ void CallBuiltinPointerInstruction::TypeInstruction(
|
||||
ReportError("wrong argument types");
|
||||
}
|
||||
DCHECK_EQ(type, f);
|
||||
// TODO(tebbi): Only invalidate transient types if the function pointer type
|
||||
// is transitioning.
|
||||
// TODO(turbofan): Only invalidate transient types if the function pointer
|
||||
// type is transitioning.
|
||||
InvalidateTransientTypes(stack);
|
||||
stack->PushMany(LowerType(f->return_type()));
|
||||
}
|
||||
|
@ -1830,7 +1830,7 @@ base::Optional<ParseResult> MakeAssignmentExpression(
|
||||
base::Optional<ParseResult> MakeNumberLiteralExpression(
|
||||
ParseResultIterator* child_results) {
|
||||
auto number = child_results->NextAs<std::string>();
|
||||
// TODO(tebbi): Support 64bit literals.
|
||||
// TODO(turbofan): Support 64bit literals.
|
||||
// Meanwhile, we type it as constexpr float64 when out of int32 range.
|
||||
double value = 0;
|
||||
try {
|
||||
|
@ -757,7 +757,7 @@ class ClassType final : public AggregateType {
|
||||
SourcePosition GetPosition() const { return decl_->pos; }
|
||||
SourceId AttributedToFile() const;
|
||||
|
||||
// TODO(tebbi): We should no longer pass around types as const pointers, so
|
||||
// TODO(turbofan): We should no longer pass around types as const pointers, so
|
||||
// that we can avoid mutable fields and const initializers for
|
||||
// late-initialized portions of types like this one.
|
||||
void InitializeInstanceTypes(base::Optional<int> own,
|
||||
|
1
third_party/v8/builtins/OWNERS
vendored
1
third_party/v8/builtins/OWNERS
vendored
@ -1,3 +1,2 @@
|
||||
jgruber@chromium.org
|
||||
szuend@chromium.org
|
||||
tebbi@chromium.org
|
||||
|
Loading…
Reference in New Issue
Block a user