Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/objects.h" | 5 #include "src/objects.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1598 Simd128Value* a = Simd128Value::cast(this); | 1598 Simd128Value* a = Simd128Value::cast(this); |
| 1599 Simd128Value* b = Simd128Value::cast(other); | 1599 Simd128Value* b = Simd128Value::cast(other); |
| 1600 return a->map()->instance_type() == b->map()->instance_type() && | 1600 return a->map()->instance_type() == b->map()->instance_type() && |
| 1601 a->BitwiseEquals(b); | 1601 a->BitwiseEquals(b); |
| 1602 } | 1602 } |
| 1603 } | 1603 } |
| 1604 return false; | 1604 return false; |
| 1605 } | 1605 } |
| 1606 | 1606 |
| 1607 | 1607 |
| 1608 MaybeHandle<Object> Object::ArraySpeciesConstructor( | |
| 1609 Isolate* isolate, Handle<Object> originalArray) { | |
|
adamk
2016/01/06 00:10:12
original_array
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1610 Context* native_context = isolate->context()->native_context(); | |
|
adamk
2016/01/06 00:10:12
Please stuff this in a handle immediately; raw poi
Dan Ehrenberg
2016/01/07 00:42:58
Oops, fixed (turns out the Handle API is more ergo
| |
| 1611 if (!FLAG_harmony_species) { | |
| 1612 return Handle<Object>(native_context->array_function(), isolate); | |
| 1613 } | |
| 1614 Handle<Object> constructor(isolate->heap()->undefined_value(), isolate); | |
|
adamk
2016/01/06 00:10:12
isolate->factory()->undefined_value() will hand yo
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1615 Maybe<bool> is_array = Object::IsArray(originalArray); | |
| 1616 MAYBE_RETURN_NULL(is_array); | |
| 1617 if (is_array.FromJust()) { | |
| 1618 ASSIGN_RETURN_ON_EXCEPTION( | |
| 1619 isolate, constructor, | |
| 1620 Object::GetProperty(isolate, originalArray, "constructor", STRICT), | |
|
adamk
2016/01/06 00:10:12
You can make this slightly faster by using a diffe
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1621 Object); | |
| 1622 if (constructor->IsConstructor()) { | |
| 1623 Context* constructor_context = | |
|
adamk
2016/01/06 00:10:12
Again, please store in a handle.
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1624 JSFunction::cast(*constructor)->context()->native_context(); | |
| 1625 if (constructor_context != native_context && | |
| 1626 *constructor == constructor_context->array_function()) { | |
| 1627 constructor = | |
| 1628 Handle<Object>(isolate->heap()->undefined_value(), isolate); | |
|
adamk
2016/01/06 00:10:12
isolate->factory()->undefined_value()
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1629 } | |
| 1630 } | |
| 1631 if (constructor->IsJSReceiver()) { | |
| 1632 ASSIGN_RETURN_ON_EXCEPTION( | |
| 1633 isolate, constructor, | |
| 1634 Object::GetProperty(constructor, | |
| 1635 Handle<Name>(isolate->heap()->species_symbol())), | |
|
adamk
2016/01/06 00:10:12
isolate->factory()->species_symbol()
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1636 Object); | |
| 1637 if (constructor->IsNull()) { | |
| 1638 constructor = | |
| 1639 Handle<Object>(isolate->heap()->undefined_value(), isolate); | |
|
adamk
2016/01/06 00:10:12
factory version
Dan Ehrenberg
2016/01/07 00:42:58
Done
| |
| 1640 } | |
| 1641 } | |
| 1642 } | |
| 1643 if (constructor->IsUndefined()) { | |
| 1644 return Handle<Object>(native_context->array_function(), isolate); | |
| 1645 } else { | |
| 1646 if (!constructor->IsConstructor()) { | |
| 1647 isolate->Throw(*isolate->factory()->NewTypeError( | |
|
adamk
2016/01/06 00:10:12
I think you want to return what Throw() returns. A
Dan Ehrenberg
2016/01/07 00:42:57
Fixed
| |
| 1648 MessageTemplate::kSpeciesNotConstructor)); | |
| 1649 return MaybeHandle<Object>(); | |
| 1650 } | |
| 1651 return constructor; | |
| 1652 } | |
| 1653 } | |
| 1654 | |
| 1655 | |
| 1608 void Object::ShortPrint(FILE* out) { | 1656 void Object::ShortPrint(FILE* out) { |
| 1609 OFStream os(out); | 1657 OFStream os(out); |
| 1610 os << Brief(this); | 1658 os << Brief(this); |
| 1611 } | 1659 } |
| 1612 | 1660 |
| 1613 | 1661 |
| 1614 void Object::ShortPrint(StringStream* accumulator) { | 1662 void Object::ShortPrint(StringStream* accumulator) { |
| 1615 std::ostringstream os; | 1663 std::ostringstream os; |
| 1616 os << Brief(this); | 1664 os << Brief(this); |
| 1617 accumulator->Add(os.str().c_str()); | 1665 accumulator->Add(os.str().c_str()); |
| (...skipping 17927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 19545 if (cell->value() != *new_value) { | 19593 if (cell->value() != *new_value) { |
| 19546 cell->set_value(*new_value); | 19594 cell->set_value(*new_value); |
| 19547 Isolate* isolate = cell->GetIsolate(); | 19595 Isolate* isolate = cell->GetIsolate(); |
| 19548 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19596 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19549 isolate, DependentCode::kPropertyCellChangedGroup); | 19597 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19550 } | 19598 } |
| 19551 } | 19599 } |
| 19552 | 19600 |
| 19553 } // namespace internal | 19601 } // namespace internal |
| 19554 } // namespace v8 | 19602 } // namespace v8 |
| OLD | NEW |