| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 the V8 project authors. All rights reserved. | 
|     2  |     2  | 
|     3 #include <stdlib.h> |     3 #include <stdlib.h> | 
|     4  |     4  | 
|     5 #include "v8.h" |     5 #include "v8.h" | 
|     6  |     6  | 
|     7 #include "execution.h" |     7 #include "execution.h" | 
|     8 #include "factory.h" |     8 #include "factory.h" | 
|     9 #include "macro-assembler.h" |     9 #include "macro-assembler.h" | 
|    10 #include "global-handles.h" |    10 #include "global-handles.h" | 
| (...skipping 1966 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1977   CompileRun(source); |  1977   CompileRun(source); | 
|  1978   Handle<JSFunction> g = |  1978   Handle<JSFunction> g = | 
|  1979       v8::Utils::OpenHandle( |  1979       v8::Utils::OpenHandle( | 
|  1980           *v8::Handle<v8::Function>::Cast( |  1980           *v8::Handle<v8::Function>::Cast( | 
|  1981               v8::Context::GetCurrent()->Global()->Get(v8_str("g")))); |  1981               v8::Context::GetCurrent()->Global()->Get(v8_str("g")))); | 
|  1982  |  1982  | 
|  1983   AssertNoAllocation no_alloc; |  1983   AssertNoAllocation no_alloc; | 
|  1984   g->shared()->PrintLn(); |  1984   g->shared()->PrintLn(); | 
|  1985 } |  1985 } | 
|  1986 #endif  // OBJECT_PRINT |  1986 #endif  // OBJECT_PRINT | 
 |  1987  | 
 |  1988  | 
 |  1989 TEST(Regress2211) { | 
 |  1990   InitializeVM(); | 
 |  1991   v8::HandleScope scope; | 
 |  1992  | 
 |  1993   v8::Handle<v8::String> value = v8_str("val string"); | 
 |  1994   Smi* hash = Smi::FromInt(321); | 
 |  1995   Heap* heap = Isolate::Current()->heap(); | 
 |  1996  | 
 |  1997   for (int i = 0; i < 2; i++) { | 
 |  1998     // Store identity hash first and common hidden property second. | 
 |  1999     v8::Handle<v8::Object> obj = v8::Object::New(); | 
 |  2000     Handle<JSObject> internal_obj = v8::Utils::OpenHandle(*obj); | 
 |  2001     CHECK(internal_obj->HasFastProperties()); | 
 |  2002  | 
 |  2003     // In the first iteration, set hidden value first and identity hash second. | 
 |  2004     // In the second iteration, reverse the order. | 
 |  2005     if (i == 0) obj->SetHiddenValue(v8_str("key string"), value); | 
 |  2006     MaybeObject* maybe_obj = internal_obj->SetIdentityHash(hash, | 
 |  2007                                                            ALLOW_CREATION); | 
 |  2008     CHECK(!maybe_obj->IsFailure()); | 
 |  2009     if (i == 1) obj->SetHiddenValue(v8_str("key string"), value); | 
 |  2010  | 
 |  2011     // Check values. | 
 |  2012     CHECK_EQ(hash, | 
 |  2013              internal_obj->GetHiddenProperty(heap->identity_hash_symbol())); | 
 |  2014     CHECK(value->Equals(obj->GetHiddenValue(v8_str("key string")))); | 
 |  2015  | 
 |  2016     // Check size. | 
 |  2017     DescriptorArray* descriptors = internal_obj->map()->instance_descriptors(); | 
 |  2018     ObjectHashTable* hashtable = ObjectHashTable::cast( | 
 |  2019         internal_obj->FastPropertyAt(descriptors->GetFieldIndex(0))); | 
 |  2020     CHECK_LE(hashtable->SizeFor(hashtable->length()), 52); | 
 |  2021   } | 
 |  2022 } | 
| OLD | NEW |