Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index 99113f6fcfe08f43907cbb5d284931592af230c1..3729118c38a975df6fa2e98bff74563b89eb9242 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -782,6 +782,10 @@ bool JSObject::IsDirty() { |
| } |
| +#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ <= 4) |
| +// Work around bad optimization by GCC 4.4.6 on PPC Linux |
| +#pragma GCC optimize "O0" |
|
danno
2014/07/29 13:24:08
Please use this style of guard with the GCC detect
|
| +#endif |
| MaybeHandle<Object> Object::GetElementWithReceiver(Isolate* isolate, |
| Handle<Object> object, |
| Handle<Object> receiver, |
| @@ -836,6 +840,9 @@ MaybeHandle<Object> Object::GetElementWithReceiver(Isolate* isolate, |
| return isolate->factory()->undefined_value(); |
| } |
| +#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ <= 4) |
| +#pragma GCC reset_options |
| +#endif |
| Map* Object::GetRootMap(Isolate* isolate) { |
| @@ -9671,6 +9678,7 @@ void ConstantPoolArray::ConstantPoolIterateBody(ObjectVisitor* v) { |
| // Unfortunately the serializer relies on pointers within an object being |
| // visited in-order, so we have to iterate both the code and heap pointers in |
| // the small section before doing so in the extended section. |
| + WeakObjectState state = get_weak_object_state(); |
| for (int s = 0; s <= final_section(); ++s) { |
| LayoutSection section = static_cast<LayoutSection>(s); |
| ConstantPoolArray::Iterator code_iter(this, ConstantPoolArray::CODE_PTR, |
| @@ -9683,7 +9691,8 @@ void ConstantPoolArray::ConstantPoolIterateBody(ObjectVisitor* v) { |
| ConstantPoolArray::Iterator heap_iter(this, ConstantPoolArray::HEAP_PTR, |
| section); |
| while (!heap_iter.is_finished()) { |
| - v->VisitPointer(RawFieldOfElementAt(heap_iter.next_index())); |
| + v->VisitConstantPoolEmbeddedPointer( |
| + RawFieldOfElementAt(heap_iter.next_index()), state); |
| } |
| } |
| } |
| @@ -11529,6 +11538,15 @@ void Code::Disassemble(const char* name, OStream& os) { // NOLINT |
| it.rinfo()->Print(GetIsolate(), os); |
| } |
| os << "\n"; |
| + |
| + if (FLAG_enable_ool_constant_pool) { |
| + ConstantPoolArray *pool = constant_pool(); |
| + if (pool->length()) { |
| + os << "Constant Pool\n"; |
| + pool->Print(os); |
| + os << "\n"; |
| + } |
| + } |
| } |
| #endif // ENABLE_DISASSEMBLER |