Commit 14296d64 authored by titzer's avatar titzer Committed by Commit bot

[crankshaft] TODO bankruptcy.

R=verwaest@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1694643004

Cr-Commit-Position: refs/heads/master@{#33982}
parent 83f69507
...@@ -44,7 +44,6 @@ class HAliasAnalyzer : public ZoneObject { ...@@ -44,7 +44,6 @@ class HAliasAnalyzer : public ZoneObject {
// Constant objects can be distinguished statically. // Constant objects can be distinguished statically.
if (a->IsConstant()) { if (a->IsConstant()) {
// TODO(titzer): DataEquals() is more efficient, but that's protected.
return a->Equals(b) ? kMustAlias : kNoAlias; return a->Equals(b) ? kMustAlias : kNoAlias;
} }
return kMayAlias; return kMayAlias;
......
...@@ -765,7 +765,6 @@ void HInstruction::Verify() { ...@@ -765,7 +765,6 @@ void HInstruction::Verify() {
bool HInstruction::CanDeoptimize() { bool HInstruction::CanDeoptimize() {
// TODO(titzer): make this a virtual method?
switch (opcode()) { switch (opcode()) {
case HValue::kAbnormalExit: case HValue::kAbnormalExit:
case HValue::kAccessArgumentsAt: case HValue::kAccessArgumentsAt:
...@@ -2731,7 +2730,6 @@ HConstant::HConstant(Handle<Object> object, Representation r) ...@@ -2731,7 +2730,6 @@ HConstant::HConstant(Handle<Object> object, Representation r)
bit_field_, has_int32_value && Smi::IsValid(int32_value_)); bit_field_, has_int32_value && Smi::IsValid(int32_value_));
double_value_ = n; double_value_ = n;
bit_field_ = HasDoubleValueField::update(bit_field_, true); bit_field_ = HasDoubleValueField::update(bit_field_, true);
// TODO(titzer): if this heap number is new space, tenure a new one.
} }
Initialize(r); Initialize(r);
...@@ -2904,7 +2902,6 @@ bool HConstant::EmitAtUses() { ...@@ -2904,7 +2902,6 @@ bool HConstant::EmitAtUses() {
DCHECK(IsLinked()); DCHECK(IsLinked());
if (block()->graph()->has_osr() && if (block()->graph()->has_osr() &&
block()->graph()->IsStandardConstant(this)) { block()->graph()->IsStandardConstant(this)) {
// TODO(titzer): this seems like a hack that should be fixed by custom OSR.
return true; return true;
} }
if (HasNoUses()) return true; if (HasNoUses()) return true;
......
...@@ -2789,8 +2789,6 @@ class HCheckValue final : public HUnaryOperation { ...@@ -2789,8 +2789,6 @@ class HCheckValue final : public HUnaryOperation {
bool in_new_space = isolate->heap()->InNewSpace(*func); bool in_new_space = isolate->heap()->InNewSpace(*func);
// NOTE: We create an uninitialized Unique and initialize it later. // NOTE: We create an uninitialized Unique and initialize it later.
// This is because a JSFunction can move due to GC during graph creation. // This is because a JSFunction can move due to GC during graph creation.
// TODO(titzer): This is a migration crutch. Replace with some kind of
// Uniqueness scope later.
Unique<JSFunction> target = Unique<JSFunction>::CreateUninitialized(func); Unique<JSFunction> target = Unique<JSFunction>::CreateUninitialized(func);
HCheckValue* check = new(zone) HCheckValue(value, target, in_new_space); HCheckValue* check = new(zone) HCheckValue(value, target, in_new_space);
return check; return check;
...@@ -3320,7 +3318,6 @@ class HPhi final : public HValue { ...@@ -3320,7 +3318,6 @@ class HPhi final : public HValue {
Representation representation_from_non_phi_uses_ = Representation::None(); Representation representation_from_non_phi_uses_ = Representation::None();
bool has_type_feedback_from_uses_ = false; bool has_type_feedback_from_uses_ = false;
// TODO(titzer): we can't eliminate the receiver for generating backtraces
bool IsDeletable() const override { return !IsReceiver(); } bool IsDeletable() const override { return !IsReceiver(); }
}; };
......
...@@ -243,7 +243,6 @@ class HLoadEliminationTable : public ZoneObject { ...@@ -243,7 +243,6 @@ class HLoadEliminationTable : public ZoneObject {
if (instr->has_transition()) { if (instr->has_transition()) {
// A transition introduces a new field and alters the map of the object. // A transition introduces a new field and alters the map of the object.
// Since the field in the object is new, it cannot alias existing entries. // Since the field in the object is new, it cannot alias existing entries.
// TODO(titzer): introduce a constant for the new map and remember it.
KillFieldInternal(object, FieldOf(JSObject::kMapOffset), NULL); KillFieldInternal(object, FieldOf(JSObject::kMapOffset), NULL);
} else { } else {
// Kill non-equivalent may-alias entries. // Kill non-equivalent may-alias entries.
...@@ -402,7 +401,6 @@ class HLoadEliminationTable : public ZoneObject { ...@@ -402,7 +401,6 @@ class HLoadEliminationTable : public ZoneObject {
// Compute the field index for the given in-object offset; -1 if not tracked. // Compute the field index for the given in-object offset; -1 if not tracked.
int FieldOf(int offset) { int FieldOf(int offset) {
if (offset >= kMaxTrackedFields * kPointerSize) return -1; if (offset >= kMaxTrackedFields * kPointerSize) return -1;
// TODO(titzer): track misaligned loads in a separate list?
if ((offset % kPointerSize) != 0) return -1; // Ignore misaligned accesses. if ((offset % kPointerSize) != 0) return -1; // Ignore misaligned accesses.
return offset / kPointerSize; return offset / kPointerSize;
} }
......
...@@ -36,7 +36,6 @@ void HStoreEliminationPhase::Run() { ...@@ -36,7 +36,6 @@ void HStoreEliminationPhase::Run() {
HInstruction* instr = it.Current(); HInstruction* instr = it.Current();
if (instr->CheckFlag(HValue::kIsDead)) continue; if (instr->CheckFlag(HValue::kIsDead)) continue;
// TODO(titzer): eliminate unobserved HStoreKeyed instructions too.
switch (instr->opcode()) { switch (instr->opcode()) {
case HValue::kStoreNamedField: case HValue::kStoreNamedField:
// Remove any unobserved stores overwritten by this store. // Remove any unobserved stores overwritten by this store.
...@@ -68,7 +67,6 @@ void HStoreEliminationPhase::ProcessStore(HStoreNamedField* store) { ...@@ -68,7 +67,6 @@ void HStoreEliminationPhase::ProcessStore(HStoreNamedField* store) {
prev->id(), store->id())); prev->id(), store->id()));
unobserved_.Remove(i); unobserved_.Remove(i);
} else { } else {
// TODO(titzer): remove map word clearing from folded allocations.
i++; i++;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment