Version 3.12.12

Added an option to the tickprocessor to specify the directory for lib lookup.

Fixed ICs for slow objects with native accessor (Chromium issue 137002).

Fixed transcendental cache on ARM in optimized code (issue 2234).

New heap inspection tools: counters for object sizes and counts, histograms for external fragmentation.

Incorporated constness into inferred interfaces (in preparation for handling imports) (issue 1569).

Performance and stability improvements on all platforms.

git-svn-id: http://v8.googlecode.com/svn/trunk@12091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
diff --git a/src/objects-inl.h b/src/objects-inl.h
index fbb0183..23fb213 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -2095,6 +2095,7 @@
                           const WhitenessWitness&) {
   // Range check.
   ASSERT(descriptor_number < number_of_descriptors());
+  ASSERT(desc->GetDetails().index() <= number_of_descriptors());
   ASSERT(desc->GetDetails().index() > 0);
 
   NoIncrementalWriteBarrierSet(this,
@@ -2109,6 +2110,16 @@
 }
 
 
+void DescriptorArray::Append(Descriptor* desc,
+                             const WhitenessWitness& witness) {
+  int descriptor_number = NumberOfSetDescriptors();
+  int enumeration_index = descriptor_number + 1;
+  desc->SetEnumerationIndex(enumeration_index);
+  Set(descriptor_number, desc, witness);
+  SetLastAdded(descriptor_number);
+}
+
+
 void DescriptorArray::NoIncrementalWriteBarrierSwapDescriptors(
     int first, int second) {
   NoIncrementalWriteBarrierSwap(this, ToKeyIndex(first), ToKeyIndex(second));
@@ -3528,6 +3539,10 @@
   return TransitionArray::NewWith(key, value);
 }
 
+void Map::SetTransition(int transition_index, Object* value) {
+  transitions()->SetValue(transition_index, value);
+}
+
 
 // If the map is using the empty descriptor array, install a new empty
 // descriptor array that will contain an elements transition.