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 |