165a89c29ac6da09f5726f48f68eae9587b0e562aulan@chromium.org// Copyright 2012 the V8 project authors. All rights reserved. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Redistribution and use in source and binary forms, with or without 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// modification, are permitted provided that the following conditions are 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// met: 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions of source code must retain the above copyright 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// notice, this list of conditions and the following disclaimer. 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions in binary form must reproduce the above 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// copyright notice, this list of conditions and the following 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// disclaimer in the documentation and/or other materials provided 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// with the distribution. 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Neither the name of Google Inc. nor the names of its 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// contributors may be used to endorse or promote products derived 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// from this software without specific prior written permission. 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "v8.h" 2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "disassembler.h" 3143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "disasm.h" 32bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org#include "jsregexp.h" 3394b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org#include "macro-assembler.h" 3465fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org#include "objects-visiting.h" 3543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3671affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 3771affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#ifdef VERIFY_HEAP 409e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 41303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.orgvoid MaybeObject::Verify() { 42303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org Object* this_as_object; 43303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org if (ToObject(&this_as_object)) { 44303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org if (this_as_object->IsSmi()) { 45303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org Smi::cast(this_as_object)->SmiVerify(); 46303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org } else { 47303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org HeapObject::cast(this_as_object)->HeapObjectVerify(); 48303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org } 4943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 50303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org Failure::cast(this)->FailureVerify(); 5143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 5243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 5343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Object::VerifyPointer(Object* p) { 5643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (p->IsHeapObject()) { 5743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen HeapObject::VerifyHeapPointer(p); 5843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 59c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(p->IsSmi()); 6043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 6143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 6243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Smi::SmiVerify() { 65c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsSmi()); 6643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 6743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Failure::FailureVerify() { 70c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsFailure()); 7143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 7243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapObject::HeapObjectVerify() { 7543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen InstanceType instance_type = map()->instance_type(); 7643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (instance_type < FIRST_NONSTRING_TYPE) { 7843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen String::cast(this)->StringVerify(); 7943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return; 8043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 8143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen switch (instance_type) { 834a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org case SYMBOL_TYPE: 844a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org Symbol::cast(this)->SymbolVerify(); 854a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org break; 8643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case MAP_TYPE: 8743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Map::cast(this)->MapVerify(); 8843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case HEAP_NUMBER_TYPE: 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen HeapNumber::cast(this)->HeapNumberVerify(); 9143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 9243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case FIXED_ARRAY_TYPE: 9343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen FixedArray::cast(this)->FixedArrayVerify(); 9443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 956d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org case FIXED_DOUBLE_ARRAY_TYPE: 966d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org FixedDoubleArray::cast(this)->FixedDoubleArrayVerify(); 976d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org break; 98a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org case CONSTANT_POOL_ARRAY_TYPE: 99a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org ConstantPoolArray::cast(this)->ConstantPoolArrayVerify(); 100a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org break; 10143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case BYTE_ARRAY_TYPE: 10243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ByteArray::cast(this)->ByteArrayVerify(); 10343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 104c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com case FREE_SPACE_TYPE: 105c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com FreeSpace::cast(this)->FreeSpaceVerify(); 106c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com break; 1074d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org case EXTERNAL_PIXEL_ARRAY_TYPE: 1084d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org ExternalPixelArray::cast(this)->ExternalPixelArrayVerify(); 1090b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 1103811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_BYTE_ARRAY_TYPE: 1113811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalByteArray::cast(this)->ExternalByteArrayVerify(); 1123811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1133811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 1143811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalUnsignedByteArray::cast(this)->ExternalUnsignedByteArrayVerify(); 1153811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1163811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_SHORT_ARRAY_TYPE: 1173811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalShortArray::cast(this)->ExternalShortArrayVerify(); 1183811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1193811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 1203811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalUnsignedShortArray::cast(this)-> 1213811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalUnsignedShortArrayVerify(); 1223811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1233811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_INT_ARRAY_TYPE: 1243811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalIntArray::cast(this)->ExternalIntArrayVerify(); 1253811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1263811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 1273811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalUnsignedIntArray::cast(this)->ExternalUnsignedIntArrayVerify(); 1283811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1293811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org case EXTERNAL_FLOAT_ARRAY_TYPE: 1303811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org ExternalFloatArray::cast(this)->ExternalFloatArrayVerify(); 1313811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org break; 1323847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com case EXTERNAL_DOUBLE_ARRAY_TYPE: 1333847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com ExternalDoubleArray::cast(this)->ExternalDoubleArrayVerify(); 1343847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com break; 13543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case CODE_TYPE: 13643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Code::cast(this)->CodeVerify(); 13743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 13843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case ODDBALL_TYPE: 13943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Oddball::cast(this)->OddballVerify(); 14043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 14143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_OBJECT_TYPE: 1423291210ab99f306b74430ebbc4b7d939629e699fager@chromium.org case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 14343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObject::cast(this)->JSObjectVerify(); 14443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 145e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org case JS_GENERATOR_OBJECT_TYPE: 146e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org JSGeneratorObject::cast(this)->JSGeneratorObjectVerify(); 147e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org break; 148ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com case JS_MODULE_TYPE: 149ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com JSModule::cast(this)->JSModuleVerify(); 150ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com break; 15143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_VALUE_TYPE: 15243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSValue::cast(this)->JSValueVerify(); 15343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1544efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org case JS_DATE_TYPE: 1554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org JSDate::cast(this)->JSDateVerify(); 1564efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org break; 15743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_FUNCTION_TYPE: 15843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSFunction::cast(this)->JSFunctionVerify(); 15943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1605a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org case JS_GLOBAL_PROXY_TYPE: 1615a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org JSGlobalProxy::cast(this)->JSGlobalProxyVerify(); 1625a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org break; 16343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_GLOBAL_OBJECT_TYPE: 16443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSGlobalObject::cast(this)->JSGlobalObjectVerify(); 16543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 16643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_BUILTINS_OBJECT_TYPE: 16743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSBuiltinsObject::cast(this)->JSBuiltinsObjectVerify(); 16843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 16941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org case CELL_TYPE: 17041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org Cell::cast(this)->CellVerify(); 17141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org break; 17241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org case PROPERTY_CELL_TYPE: 173b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.org PropertyCell::cast(this)->PropertyCellVerify(); 1742abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org break; 17543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_ARRAY_TYPE: 17643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSArray::cast(this)->JSArrayVerify(); 17743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 178394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com case JS_SET_TYPE: 179394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSSet::cast(this)->JSSetVerify(); 180394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com break; 181394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com case JS_MAP_TYPE: 182394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSMap::cast(this)->JSMapVerify(); 183394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com break; 1847c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org case JS_WEAK_MAP_TYPE: 1857c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org JSWeakMap::cast(this)->JSWeakMapVerify(); 1867c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org break; 187ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org case JS_WEAK_SET_TYPE: 188ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org JSWeakSet::cast(this)->JSWeakSetVerify(); 189ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org break; 190236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org case JS_REGEXP_TYPE: 191236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org JSRegExp::cast(this)->JSRegExpVerify(); 192236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org break; 19343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case FILLER_TYPE: 19443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1957304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org case JS_PROXY_TYPE: 1967304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org JSProxy::cast(this)->JSProxyVerify(); 1977304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org break; 19834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org case JS_FUNCTION_PROXY_TYPE: 19934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org JSFunctionProxy::cast(this)->JSFunctionProxyVerify(); 20034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org break; 201ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org case FOREIGN_TYPE: 202ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org Foreign::cast(this)->ForeignVerify(); 20343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 20443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case SHARED_FUNCTION_INFO_TYPE: 20543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen SharedFunctionInfo::cast(this)->SharedFunctionInfoVerify(); 20643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 20731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org case JS_MESSAGE_OBJECT_TYPE: 20831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org JSMessageObject::cast(this)->JSMessageObjectVerify(); 20931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org break; 210f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org case JS_ARRAY_BUFFER_TYPE: 211f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org JSArrayBuffer::cast(this)->JSArrayBufferVerify(); 212f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org break; 213e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org case JS_TYPED_ARRAY_TYPE: 214e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org JSTypedArray::cast(this)->JSTypedArrayVerify(); 215e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org break; 2161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case JS_DATA_VIEW_TYPE: 2171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSDataView::cast(this)->JSDataViewVerify(); 2181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org break; 21943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 22043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#define MAKE_STRUCT_CASE(NAME, Name, name) \ 22143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case NAME##_TYPE: \ 22243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Name::cast(this)->Name##Verify(); \ 22343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 22443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen STRUCT_LIST(MAKE_STRUCT_CASE) 22543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#undef MAKE_STRUCT_CASE 22643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 22743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen default: 22843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen UNREACHABLE(); 22943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 23043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 23143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 23243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 23343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 23443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapObject::VerifyHeapPointer(Object* p) { 235c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(p->IsHeapObject()); 236c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org HeapObject* ho = HeapObject::cast(p); 237c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(ho->GetHeap()->Contains(ho)); 23843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 23943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 24043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2414a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.orgvoid Symbol::SymbolVerify() { 2424a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK(IsSymbol()); 2434a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK(HasHashCode()); 2444a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK_GT(Hash(), 0); 245f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org CHECK(name()->IsUndefined() || name()->IsString()); 2460cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.org CHECK(flags()->IsSmi()); 2474a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org} 2484a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org 2494a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org 25043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapNumber::HeapNumberVerify() { 251c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsHeapNumber()); 25243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 2533811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2543811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 25543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid ByteArray::ByteArrayVerify() { 256c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsByteArray()); 25743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 25843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 25943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 260c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.comvoid FreeSpace::FreeSpaceVerify() { 261c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsFreeSpace()); 262c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com} 263c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 264c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 2654d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.orgvoid ExternalPixelArray::ExternalPixelArrayVerify() { 266c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalPixelArray()); 2670b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org} 2680b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org 2690b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org 2703811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalByteArray::ExternalByteArrayVerify() { 271c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalByteArray()); 2723811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2733811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2743811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2753811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalUnsignedByteArray::ExternalUnsignedByteArrayVerify() { 276c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalUnsignedByteArray()); 2773811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2783811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2793811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2803811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalShortArray::ExternalShortArrayVerify() { 281c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalShortArray()); 2823811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2833811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2843811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2853811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalUnsignedShortArray::ExternalUnsignedShortArrayVerify() { 286c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalUnsignedShortArray()); 2873811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2883811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2893811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2903811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalIntArray::ExternalIntArrayVerify() { 291c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalIntArray()); 2923811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2933811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2943811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2953811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalUnsignedIntArray::ExternalUnsignedIntArrayVerify() { 296c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalUnsignedIntArray()); 2973811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 2983811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2993811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 3003811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.orgvoid ExternalFloatArray::ExternalFloatArrayVerify() { 301c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalFloatArray()); 3023811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org} 3033811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 3043811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 3053847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.comvoid ExternalDoubleArray::ExternalDoubleArrayVerify() { 306c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsExternalDoubleArray()); 3073847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com} 3083847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com 3093847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com 310a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.orgbool JSObject::ElementsAreSafeToExamine() { 311a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org return (FLAG_use_gvn && FLAG_use_allocation_folding) || 312a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org reinterpret_cast<Map*>(elements()) != 313a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org GetHeap()->one_pointer_filler_map(); 314a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org} 315a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org 316a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org 31743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::JSObjectVerify() { 31843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(properties()); 31943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(elements()); 320394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 321394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com if (GetElementsKind() == NON_STRICT_ARGUMENTS_ELEMENTS) { 322c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(this->elements()->IsFixedArray()); 323c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_GE(this->elements()->length(), 2); 324394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com } 325394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 32643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (HasFastProperties()) { 327911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org CHECK_EQ(map()->unused_property_fields(), 328911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org (map()->inobject_properties() + properties()->length() - 329911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org map()->NextFreePropertyIndex())); 330bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org DescriptorArray* descriptors = map()->instance_descriptors(); 331bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { 332bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org if (descriptors->GetDetails(i).type() == FIELD) { 333bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org Representation r = descriptors->GetDetails(i).representation(); 334bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org int field = descriptors->GetFieldIndex(i); 335bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org Object* value = RawFastPropertyAt(field); 336bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org if (r.IsDouble()) ASSERT(value->IsHeapNumber()); 3371fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org if (value->IsUninitialized()) continue; 3381fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org if (r.IsSmi()) ASSERT(value->IsSmi()); 339bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org if (r.IsHeapObject()) ASSERT(value->IsHeapObject()); 340bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org } 341bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org } 34243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 343e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org 344528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // If a GC was caused while constructing this object, the elements 345528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // pointer may point to a one pointer filler map. 346ef33a5482a35a9a25f702f8e3f02bb6b49f3854cjkummerow@chromium.org if (ElementsAreSafeToExamine()) { 347e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK_EQ((map()->has_fast_smi_or_object_elements() || 348e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org (elements() == GetHeap()->empty_fixed_array())), 349e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org (elements()->map() == GetHeap()->fixed_array_map() || 350e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->map() == GetHeap()->fixed_cow_array_map())); 351e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK(map()->has_fast_object_elements() == HasFastObjectElements()); 352e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org } 35343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 35443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Map::MapVerify() { 357c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org Heap* heap = GetHeap(); 358c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(!heap->InNewSpace(this)); 359c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(FIRST_TYPE <= instance_type() && instance_type() <= LAST_TYPE); 360c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(instance_size() == kVariableSizeSentinel || 361145eff58d4f6ac0dcc53abb556dbf3cac6c3280aerik.corry@gmail.com (kPointerSize <= instance_size() && 362c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org instance_size() < heap->Capacity())); 36343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(prototype()); 36443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(instance_descriptors()); 365212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org SLOW_ASSERT(instance_descriptors()->IsSortedNoDuplicates()); 36699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (HasTransitionArray()) { 36799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org SLOW_ASSERT(transitions()->IsSortedNoDuplicates()); 36899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org SLOW_ASSERT(transitions()->IsConsistentWithBackPointers(this)); 36999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 37043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 37143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3734a1fe7d5e92fdb673d5f05d5ddf7b1ed703ba18dwhesse@chromium.orgvoid Map::SharedMapVerify() { 37465fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org MapVerify(); 375c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(is_shared()); 376c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(instance_descriptors()->IsEmpty()); 377c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, pre_allocated_property_fields()); 378c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, unused_property_fields()); 379c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(StaticVisitorBase::GetVisitorId(instance_type(), instance_size()), 38065fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org visitor_id()); 38165fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org} 38265fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org 38365fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org 384594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.orgvoid Map::VerifyOmittedMapChecks() { 385594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org if (!FLAG_omit_map_checks_for_leaf_maps) return; 386594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org if (!is_stable() || 387594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org is_deprecated() || 388594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org HasTransitionArray() || 389594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org is_dictionary_map()) { 3902e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org CHECK_EQ(0, dependent_code()->number_of_entries( 3912e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org DependentCode::kPrototypeCheckGroup)); 3922e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org } 3932e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org} 3942e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org 3952e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org 396ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgvoid CodeCache::CodeCacheVerify() { 397ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org VerifyHeapPointer(default_cache()); 398ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org VerifyHeapPointer(normal_type_cache()); 399c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(default_cache()->IsFixedArray()); 400c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(normal_type_cache()->IsUndefined() 401ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org || normal_type_cache()->IsCodeCacheHashTable()); 402ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org} 40343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 405e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid PolymorphicCodeCache::PolymorphicCodeCacheVerify() { 406e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org VerifyHeapPointer(cache()); 407c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(cache()->IsUndefined() || cache()->IsPolymorphicCodeCacheHashTable()); 408e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 409e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 410e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 411f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.orgvoid TypeFeedbackInfo::TypeFeedbackInfoVerify() { 41246839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(kStorage1Offset); 41346839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(kStorage2Offset); 414f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org VerifyHeapPointer(type_feedback_cells()); 415f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org} 416f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org 417f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org 418ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.orgvoid AliasedArgumentsEntry::AliasedArgumentsEntryVerify() { 419ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org VerifySmiField(kAliasedContextSlot); 420ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org} 421ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org 422ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org 42343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid FixedArray::FixedArrayVerify() { 42443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = 0; i < length(); i++) { 42543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* e = get(i); 42643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (e->IsHeapObject()) { 42743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(e); 42843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 42943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen e->Verify(); 43043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 43143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 43243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 43343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4356d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.orgvoid FixedDoubleArray::FixedDoubleArrayVerify() { 4366d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org for (int i = 0; i < length(); i++) { 4376d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org if (!is_the_hole(i)) { 4387c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org double value = get_scalar(i); 43977ca49ac05d25684c89442029c22f5b2bce94395ulan@chromium.org CHECK(!std::isnan(value) || 44084bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org (BitCast<uint64_t>(value) == 441c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com BitCast<uint64_t>(canonical_not_the_hole_nan_as_double())) || 442c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com ((BitCast<uint64_t>(value) & Double::kSignMask) != 0)); 4436d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org } 4446d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org } 4456d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org} 4466d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org 4476d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org 448a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.orgvoid ConstantPoolArray::ConstantPoolArrayVerify() { 449a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org CHECK(IsConstantPoolArray()); 450a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org} 451a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org 452a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org 453e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgvoid JSGeneratorObject::JSGeneratorObjectVerify() { 454e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // In an expression like "new g()", there can be a point where a generator 455e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // object is allocated but its fields are all undefined, as it hasn't yet been 456e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // initialized by the generator. Hence these weak checks. 457e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kFunctionOffset); 458e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kContextOffset); 459ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org VerifyObjectField(kReceiverOffset); 460e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kOperandStackOffset); 461e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kContinuationOffset); 46257ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org VerifyObjectField(kStackHandlerIndexOffset); 463e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 464e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 465e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 466ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.comvoid JSModule::JSModuleVerify() { 46781cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org VerifyObjectField(kContextOffset); 46881cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org VerifyObjectField(kScopeInfoOffset); 46946839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org CHECK(context()->IsUndefined() || 47046839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org Context::cast(context())->IsModuleContext()); 471ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com} 472ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 473ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 47443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSValue::JSValueVerify() { 47543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* v = value(); 47643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (v->IsHeapObject()) { 47743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(v); 47843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 47943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 48043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4824efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgvoid JSDate::JSDateVerify() { 4834efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (value()->IsHeapObject()) { 4844efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org VerifyHeapPointer(value()); 4854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4864efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(value()->IsUndefined() || value()->IsSmi() || value()->IsHeapNumber()); 4874efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(year()->IsUndefined() || year()->IsSmi() || year()->IsNaN()); 4884efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(month()->IsUndefined() || month()->IsSmi() || month()->IsNaN()); 4894efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(day()->IsUndefined() || day()->IsSmi() || day()->IsNaN()); 4904efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(weekday()->IsUndefined() || weekday()->IsSmi() || weekday()->IsNaN()); 4914efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(hour()->IsUndefined() || hour()->IsSmi() || hour()->IsNaN()); 4924efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(min()->IsUndefined() || min()->IsSmi() || min()->IsNaN()); 4934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(sec()->IsUndefined() || sec()->IsSmi() || sec()->IsNaN()); 4944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(cache_stamp()->IsUndefined() || 4954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org cache_stamp()->IsSmi() || 4964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org cache_stamp()->IsNaN()); 4974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 4984efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (month()->IsSmi()) { 4994efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int month = Smi::cast(this->month())->value(); 5004efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= month && month <= 11); 5014efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5024efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (day()->IsSmi()) { 5034efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int day = Smi::cast(this->day())->value(); 5044efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(1 <= day && day <= 31); 5054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5064efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (hour()->IsSmi()) { 5074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int hour = Smi::cast(this->hour())->value(); 5084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= hour && hour <= 23); 5094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5104efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (min()->IsSmi()) { 5114efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int min = Smi::cast(this->min())->value(); 5124efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= min && min <= 59); 5134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (sec()->IsSmi()) { 5154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int sec = Smi::cast(this->sec())->value(); 5164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= sec && sec <= 59); 5174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5184efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (weekday()->IsSmi()) { 5194efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int weekday = Smi::cast(this->weekday())->value(); 5204efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= weekday && weekday <= 6); 5214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (cache_stamp()->IsSmi()) { 5234efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(Smi::cast(cache_stamp())->value() <= 5243d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.org Smi::cast(GetIsolate()->date_cache()->stamp())->value()); 5254efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 5264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org} 5274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 5284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 52931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.orgvoid JSMessageObject::JSMessageObjectVerify() { 53031b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(IsJSMessageObject()); 53131b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(type()->IsString()); 53231b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(arguments()->IsJSArray()); 53331b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kStartPositionOffset); 53431b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kEndPositionOffset); 53531b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kArgumentsOffset); 53631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kScriptOffset); 53731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kStackTraceOffset); 53831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kStackFramesOffset); 53931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org} 54031b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org 54131b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org 54243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid String::StringVerify() { 54343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsString()); 54443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(length() >= 0 && length() <= Smi::kMaxValue); 5454a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org if (IsInternalizedString()) { 546c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(!GetHeap()->InNewSpace(this)); 54743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 5484668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org if (IsConsString()) { 5494668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org ConsString::cast(this)->ConsStringVerify(); 5504668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } else if (IsSlicedString()) { 5514668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org SlicedString::cast(this)->SlicedStringVerify(); 5524668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } 5534668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org} 5544668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5554668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5564668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.orgvoid ConsString::ConsStringVerify() { 5574668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->first()->IsString()); 5584668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->second() == GetHeap()->empty_string() || 5594668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org this->second()->IsString()); 5602efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org CHECK(this->length() >= ConsString::kMinLength); 5614668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org if (this->IsFlat()) { 5624668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org // A flat cons can only be created by String::SlowTryFlatten. 5634668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org // Afterwards, the first part may be externalized. 5644668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->first()->IsSeqString() || this->first()->IsExternalString()); 5654668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } 5664668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org} 5674668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5684668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5694668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.orgvoid SlicedString::SlicedStringVerify() { 5704668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(!this->parent()->IsConsString()); 5714668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(!this->parent()->IsSlicedString()); 5724668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->length() >= SlicedString::kMinLength); 57343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 57443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSFunction::JSFunctionVerify() { 57743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSFunction()); 57843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kPrototypeOrInitialMapOffset); 579a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org VerifyObjectField(kNextFunctionLinkOffset); 580c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com CHECK(code()->IsCode()); 581e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org CHECK(next_function_link() == NULL || 582e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org next_function_link()->IsUndefined() || 583a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org next_function_link()->IsJSFunction()); 58443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 58543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 586023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 58743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid SharedFunctionInfo::SharedFunctionInfoVerify() { 58843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsSharedFunctionInfo()); 58943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kNameOffset); 59043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kCodeOffset); 5915a11aaf63fdb7843c9b116fdb84ee35b0a980ea6yangguo@chromium.org VerifyObjectField(kOptimizedCodeMapOffset); 5926a2b0aa331a1ae1829a9b9637ad18cfc7ec9d840ager@chromium.org VerifyObjectField(kScopeInfoOffset); 59343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kInstanceClassNameOffset); 594f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org VerifyObjectField(kFunctionDataOffset); 59543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kScriptOffset); 59643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kDebugInfoOffset); 59743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 5985a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 5995a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 6005a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.orgvoid JSGlobalProxy::JSGlobalProxyVerify() { 6015a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org CHECK(IsJSGlobalProxy()); 6025a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org JSObjectVerify(); 60346839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(JSGlobalProxy::kNativeContextOffset); 6045a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org // Make sure that this object has no properties, elements. 6055a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org CHECK_EQ(0, properties()->length()); 606830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org CHECK(HasFastObjectElements()); 60730ce411529579186181838984710b0b0980857aaricow@chromium.org CHECK_EQ(0, FixedArray::cast(elements())->length()); 6085a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org} 60943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSGlobalObject::JSGlobalObjectVerify() { 61243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSGlobalObject()); 61343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 61443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = GlobalObject::kBuiltinsOffset; 61543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i < JSGlobalObject::kSize; 61643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i += kPointerSize) { 61743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(i); 61843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 61943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 62043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 62143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 62243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSBuiltinsObject::JSBuiltinsObjectVerify() { 62343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSBuiltinsObject()); 62443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 62543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = GlobalObject::kBuiltinsOffset; 62643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i < JSBuiltinsObject::kSize; 62743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i += kPointerSize) { 62843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(i); 62943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 63043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 63143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 63243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 63343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Oddball::OddballVerify() { 63443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsOddball()); 63543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(to_string()); 63643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* number = to_number(); 63743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (number->IsHeapObject()) { 638c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(number == HeapObject::cast(number)->GetHeap()->nan_value()); 63943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 640c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(number->IsSmi()); 64143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen int value = Smi::cast(number)->value(); 642c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com // Hidden oddballs have negative smis. 6432c067b150f65db3e076b6b5a813e7f6f2492f770rossberg@chromium.org const int kLeastHiddenOddballNumber = -4; 644c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_LE(value, 1); 645c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(value >= kLeastHiddenOddballNumber); 64643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 64743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 64843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 65041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgvoid Cell::CellVerify() { 65141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org CHECK(IsCell()); 65241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org VerifyObjectField(kValueOffset); 65341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 65441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 65541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 656b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.orgvoid PropertyCell::PropertyCellVerify() { 657b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.org CHECK(IsPropertyCell()); 6582abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org VerifyObjectField(kValueOffset); 65941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org VerifyObjectField(kTypeOffset); 6602abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org} 6612abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 6622abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 66343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Code::CodeVerify() { 664061ef74c9b8acd038edf4b4355c50d097c8a9683kasperl@chromium.org CHECK(IsAligned(reinterpret_cast<intptr_t>(instruction_start()), 6654a1fe7d5e92fdb673d5f05d5ddf7b1ed703ba18dwhesse@chromium.org kCodeAlignment)); 666c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com relocation_info()->Verify(); 6677276f14ca716596e0a0d17539516370c1f453847kasper.lund Address last_gc_pc = NULL; 66843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (RelocIterator it(this); !it.done(); it.next()) { 66943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen it.rinfo()->Verify(); 6707276f14ca716596e0a0d17539516370c1f453847kasper.lund // Ensure that GC will not iterate twice over the same pointer. 671236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org if (RelocInfo::IsGCRelocMode(it.rinfo()->rmode())) { 6727276f14ca716596e0a0d17539516370c1f453847kasper.lund CHECK(it.rinfo()->pc() != last_gc_pc); 6737276f14ca716596e0a0d17539516370c1f453847kasper.lund last_gc_pc = it.rinfo()->pc(); 6747276f14ca716596e0a0d17539516370c1f453847kasper.lund } 67543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 67643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 67743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 67843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 67925b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.orgvoid Code::VerifyEmbeddedObjectsDependency() { 68094b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT); 68194b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { 68225b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Object* obj = it.rinfo()->target_object(); 68325b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org if (IsWeakEmbeddedObject(kind(), obj)) { 68425b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org if (obj->IsMap()) { 68525b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Map* map = Map::cast(obj); 6862e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org CHECK(map->dependent_code()->Contains( 6872e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org DependentCode::kWeaklyEmbeddedGroup, this)); 68825b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org } else if (obj->IsJSObject()) { 68925b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Object* raw_table = GetIsolate()->heap()->weak_object_to_code_table(); 69025b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org WeakHashTable* table = WeakHashTable::cast(raw_table); 69125b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org CHECK(DependentCode::cast(table->Lookup(obj))->Contains( 69225b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org DependentCode::kWeaklyEmbeddedGroup, this)); 69394b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 69494b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 69594b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 69694b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org} 69794b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org 69894b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org 69943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSArray::JSArrayVerify() { 70043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 701c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(length()->IsNumber() || length()->IsUndefined()); 702528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // If a GC was caused while constructing this array, the elements 703528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // pointer may point to a one pointer filler map. 704ef33a5482a35a9a25f702f8e3f02bb6b49f3854cjkummerow@chromium.org if (ElementsAreSafeToExamine()) { 705e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK(elements()->IsUndefined() || 706e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->IsFixedArray() || 707e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->IsFixedDoubleArray()); 708e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org } 70943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 71043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 71143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 712394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid JSSet::JSSetVerify() { 713394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com CHECK(IsJSSet()); 714394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSObjectVerify(); 715394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com VerifyHeapPointer(table()); 716c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 717394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 718394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 719394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 720394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid JSMap::JSMapVerify() { 721394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com CHECK(IsJSMap()); 722394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSObjectVerify(); 723394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com VerifyHeapPointer(table()); 724c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 725394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 726394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 727394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 7287c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.orgvoid JSWeakMap::JSWeakMapVerify() { 7297c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org CHECK(IsJSWeakMap()); 7307c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org JSObjectVerify(); 7317c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org VerifyHeapPointer(table()); 732c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 7337c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org} 7347c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org 7357c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org 736ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.orgvoid JSWeakSet::JSWeakSetVerify() { 737ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org CHECK(IsJSWeakSet()); 738ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org JSObjectVerify(); 739ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org VerifyHeapPointer(table()); 740ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 741ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org} 742ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 743ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 744236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.orgvoid JSRegExp::JSRegExpVerify() { 745236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org JSObjectVerify(); 746c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(data()->IsUndefined() || data()->IsFixedArray()); 7479fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org switch (TypeTag()) { 7489fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org case JSRegExp::ATOM: { 7499fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org FixedArray* arr = FixedArray::cast(data()); 750c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(arr->get(JSRegExp::kAtomPatternIndex)->IsString()); 7519fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org break; 75241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org } 753a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org case JSRegExp::IRREGEXP: { 75468ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org bool is_native = RegExpImpl::UsesNativeRegExp(); 755bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org 756a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org FixedArray* arr = FixedArray::cast(data()); 7577be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org Object* ascii_data = arr->get(JSRegExp::kIrregexpASCIICodeIndex); 758ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org // Smi : Not compiled yet (-1) or code prepared for flushing. 759a1645e29968e70a41226edda2c49788fcea48b74ager@chromium.org // JSObject: Compilation error. 760a1645e29968e70a41226edda2c49788fcea48b74ager@chromium.org // Code/ByteArray: Compiled code. 761c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(ascii_data->IsSmi() || 762ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org (is_native ? ascii_data->IsCode() : ascii_data->IsByteArray())); 7637be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org Object* uc16_data = arr->get(JSRegExp::kIrregexpUC16CodeIndex); 764c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(uc16_data->IsSmi() || 765ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org (is_native ? uc16_data->IsCode() : uc16_data->IsByteArray())); 766ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org 767ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org Object* ascii_saved = arr->get(JSRegExp::kIrregexpASCIICodeSavedIndex); 768c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(ascii_saved->IsSmi() || ascii_saved->IsString() || 769ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org ascii_saved->IsCode()); 770ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org Object* uc16_saved = arr->get(JSRegExp::kIrregexpUC16CodeSavedIndex); 771c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(uc16_saved->IsSmi() || uc16_saved->IsString() || 772ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org uc16_saved->IsCode()); 773ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org 774c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(arr->get(JSRegExp::kIrregexpCaptureCountIndex)->IsSmi()); 775c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(arr->get(JSRegExp::kIrregexpMaxRegisterCountIndex)->IsSmi()); 7769fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org break; 7779fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org } 7789fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org default: 779c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(JSRegExp::NOT_COMPILED, TypeTag()); 780c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(data()->IsUndefined()); 7819fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org break; 78241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org } 783236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org} 784236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org 785236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org 7867304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.orgvoid JSProxy::JSProxyVerify() { 787c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com CHECK(IsJSProxy()); 7887304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org VerifyPointer(handler()); 789c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(hash()->IsSmi() || hash()->IsUndefined()); 7907304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org} 7917304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org 79234e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 79334e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.orgvoid JSFunctionProxy::JSFunctionProxyVerify() { 794c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com CHECK(IsJSFunctionProxy()); 79534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org JSProxyVerify(); 79634e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org VerifyPointer(call_trap()); 79734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org VerifyPointer(construct_trap()); 79834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org} 79934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 800e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 801f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.orgvoid JSArrayBuffer::JSArrayBufferVerify() { 802f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org CHECK(IsJSArrayBuffer()); 803f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org JSObjectVerify(); 804f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org VerifyPointer(byte_length()); 805f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber() 806f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org || byte_length()->IsUndefined()); 807f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org} 808f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org 80934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 8101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid JSArrayBufferView::JSArrayBufferViewVerify() { 8111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CHECK(IsJSArrayBufferView()); 812e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org JSObjectVerify(); 813e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(buffer()); 814e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(buffer()->IsJSArrayBuffer() || buffer()->IsUndefined()); 815e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 816e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(byte_offset()); 817e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(byte_offset()->IsSmi() || byte_offset()->IsHeapNumber() 818e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || byte_offset()->IsUndefined()); 819e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 820e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(byte_length()); 821e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber() 822e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || byte_length()->IsUndefined()); 8231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 8241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 825e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 8261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid JSTypedArray::JSTypedArrayVerify() { 8271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CHECK(IsJSTypedArray()); 8281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSArrayBufferViewVerify(); 829e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(length()); 830e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(length()->IsSmi() || length()->IsHeapNumber() 831e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || length()->IsUndefined()); 832e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 833e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(elements()); 834e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 835e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 836e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 8371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid JSDataView::JSDataViewVerify() { 8381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CHECK(IsJSDataView()); 8391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSArrayBufferViewVerify(); 8401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 8411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 8421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 843ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.orgvoid Foreign::ForeignVerify() { 844c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsForeign()); 84543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 84643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 84743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8481fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.orgvoid Box::BoxVerify() { 8491fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org CHECK(IsBox()); 8501fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org value()->Verify(); 8511fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org} 8521fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org 8531fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org 85443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid AccessorInfo::AccessorInfoVerify() { 85543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(name()); 85643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(flag()); 8577028c05c1c71b9d5c5fe1bca01f2461d17a2dda7mmassi@chromium.org VerifyPointer(expected_receiver_type()); 85843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 859023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 86043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8617c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid ExecutableAccessorInfo::ExecutableAccessorInfoVerify() { 8627c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsExecutableAccessorInfo()); 8637c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org AccessorInfoVerify(); 8647c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(getter()); 8657c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(setter()); 8667c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(data()); 8677c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8687c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8697c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8707c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid DeclaredAccessorDescriptor::DeclaredAccessorDescriptorVerify() { 8717c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsDeclaredAccessorDescriptor()); 872750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org VerifyPointer(serialized_data()); 8737c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8747c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8757c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8767c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid DeclaredAccessorInfo::DeclaredAccessorInfoVerify() { 8777c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsDeclaredAccessorInfo()); 8787c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org AccessorInfoVerify(); 8797c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(descriptor()); 8807c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8817c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8827c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 883f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvoid AccessorPair::AccessorPairVerify() { 884f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com CHECK(IsAccessorPair()); 885f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com VerifyPointer(getter()); 886f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com VerifyPointer(setter()); 8871e8da746019f818a22dfdc6f691dbc0447048cadjkummerow@chromium.org VerifySmiField(kAccessFlagsOffset); 888f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com} 889f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com 890f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com 89143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid AccessCheckInfo::AccessCheckInfoVerify() { 89243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsAccessCheckInfo()); 89343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(named_callback()); 89443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(indexed_callback()); 89543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(data()); 89643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 89743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 898023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 89943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid InterceptorInfo::InterceptorInfoVerify() { 90043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsInterceptorInfo()); 90143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(getter()); 90243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(setter()); 90343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(query()); 90443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(deleter()); 90543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(enumerator()); 90643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(data()); 90743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 908023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 90943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 91043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid CallHandlerInfo::CallHandlerInfoVerify() { 91143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsCallHandlerInfo()); 91243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(callback()); 91343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(data()); 91443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 91543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 916023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 91743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid TemplateInfo::TemplateInfoVerify() { 91843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(tag()); 91943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(property_list()); 9203d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.org VerifyPointer(property_accessors()); 92143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 92243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 923e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 92443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid FunctionTemplateInfo::FunctionTemplateInfoVerify() { 92543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsFunctionTemplateInfo()); 92643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen TemplateInfoVerify(); 92743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(serial_number()); 92843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(call_code()); 92943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(prototype_template()); 93043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(parent_template()); 93143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(named_property_handler()); 93243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(indexed_property_handler()); 93343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(instance_template()); 93443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(signature()); 93543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(access_check_info()); 93643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 93743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 93843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 93943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid ObjectTemplateInfo::ObjectTemplateInfoVerify() { 94043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsObjectTemplateInfo()); 94143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen TemplateInfoVerify(); 94243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(constructor()); 943212ac23f8231d169b4aa6737d762099993020826kasper.lund VerifyPointer(internal_field_count()); 94443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 94543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 946023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 94743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid SignatureInfo::SignatureInfoVerify() { 94843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsSignatureInfo()); 94943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(receiver()); 95043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(args()); 95143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 95243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 953023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 95443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid TypeSwitchInfo::TypeSwitchInfoVerify() { 95543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsTypeSwitchInfo()); 95643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(types()); 95743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 95843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 95943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 960bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.orgvoid AllocationSite::AllocationSiteVerify() { 961bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHECK(IsAllocationSite()); 962bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org} 963bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 964bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 965ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.orgvoid AllocationMemento::AllocationMementoVerify() { 966ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org CHECK(IsAllocationMemento()); 967bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org VerifyHeapPointer(allocation_site()); 968bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHECK(!IsValid() || GetAllocationSite()->IsAllocationSite()); 96959297c735ad2a41156ae9c723a39ff259ad061e0jkummerow@chromium.org} 97059297c735ad2a41156ae9c723a39ff259ad061e0jkummerow@chromium.org 97159297c735ad2a41156ae9c723a39ff259ad061e0jkummerow@chromium.org 97243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Script::ScriptVerify() { 97343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsScript()); 97443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(source()); 97543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(name()); 97643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen line_offset()->SmiVerify(); 97743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen column_offset()->SmiVerify(); 97865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org VerifyPointer(data()); 97965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org VerifyPointer(wrapper()); 98043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen type()->SmiVerify(); 981499aaa52a876ef8e8b81ac115cafb969eb585c96sgjesse@chromium.org VerifyPointer(line_ends()); 98265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org VerifyPointer(id()); 98343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 98443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 98543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 986c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.orgvoid JSFunctionResultCache::JSFunctionResultCacheVerify() { 987c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org JSFunction::cast(get(kFactoryIndex))->Verify(); 988c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 989c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org int size = Smi::cast(get(kCacheSizeIndex))->value(); 990c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(kEntriesIndex <= size); 991c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(size <= length()); 992c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, size % kEntrySize); 993c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 994c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org int finger = Smi::cast(get(kFingerIndex))->value(); 995c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(kEntriesIndex <= finger); 996c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK((finger < size) || (finger == kEntriesIndex && finger == size)); 997c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, finger % kEntrySize); 998c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 999c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (FLAG_enable_slow_asserts) { 1000c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = kEntriesIndex; i < size; i++) { 1001c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(!get(i)->IsTheHole()); 1002c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org get(i)->Verify(); 1003c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1004c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = size; i < length(); i++) { 1005c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(get(i)->IsTheHole()); 1006c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org get(i)->Verify(); 1007c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1008c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1009c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org} 1010c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1011c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1012c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.orgvoid NormalizedMapCache::NormalizedMapCacheVerify() { 1013c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org FixedArray::cast(this)->Verify(); 1014c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (FLAG_enable_slow_asserts) { 1015c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = 0; i < length(); i++) { 1016c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org Object* e = get(i); 1017c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (e->IsMap()) { 1018c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org Map::cast(e)->SharedMapVerify(); 1019c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } else { 1020c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(e->IsUndefined()); 1021c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1022c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1023c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1024c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org} 1025c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1026c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1027e959c18cf7193e2f021245584a3c8f1f32f82c92kasperl@chromium.org#ifdef ENABLE_DEBUGGER_SUPPORT 102843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid DebugInfo::DebugInfoVerify() { 102943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsDebugInfo()); 103043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(shared()); 103143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(original_code()); 103243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(code()); 103343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(break_points()); 103443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 103543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 103643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 103743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid BreakPointInfo::BreakPointInfoVerify() { 103843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsBreakPointInfo()); 103943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen code_position()->SmiVerify(); 104043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen source_position()->SmiVerify(); 104143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen statement_position()->SmiVerify(); 104243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(break_point_objects()); 104343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 1044023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org#endif // ENABLE_DEBUGGER_SUPPORT 1045c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#endif // VERIFY_HEAP 104643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1047c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#ifdef DEBUG 104843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 104943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::IncrementSpillStatistics(SpillInformation* info) { 105043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_objects_++; 105143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Named properties 105243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (HasFastProperties()) { 105343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_objects_with_fast_properties_++; 105443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_fast_used_fields_ += map()->NextFreePropertyIndex(); 105543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_fast_unused_fields_ += map()->unused_property_fields(); 105643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 1057750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org NameDictionary* dict = property_dictionary(); 105843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_slow_used_properties_ += dict->NumberOfElements(); 105943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_slow_unused_properties_ += 106043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen dict->Capacity() - dict->NumberOfElements(); 106143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 106243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Indexed properties 10630b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org switch (GetElementsKind()) { 1064830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_SMI_ELEMENTS: 1065830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_SMI_ELEMENTS: 1066830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_DOUBLE_ELEMENTS: 1067830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_DOUBLE_ELEMENTS: 1068830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_ELEMENTS: 10690b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org case FAST_ELEMENTS: { 10700b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_objects_with_fast_elements_++; 10710b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org int holes = 0; 10720b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org FixedArray* e = FixedArray::cast(elements()); 10730b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org int len = e->length(); 1074c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org Heap* heap = GetHeap(); 10750b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org for (int i = 0; i < len; i++) { 1076ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org if (e->get(i) == heap->the_hole_value()) holes++; 10770b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 10780b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_used_elements_ += len - holes; 10790b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_unused_elements_ += holes; 10800b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 108143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 1082830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_BYTE_ELEMENTS: 1083830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 1084830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_SHORT_ELEMENTS: 1085830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 1086830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_INT_ELEMENTS: 1087830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_UNSIGNED_INT_ELEMENTS: 1088830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_FLOAT_ELEMENTS: 1089830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case EXTERNAL_DOUBLE_ELEMENTS: 10904d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org case EXTERNAL_PIXEL_ELEMENTS: { 10910b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_objects_with_fast_elements_++; 10924d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org ExternalPixelArray* e = ExternalPixelArray::cast(elements()); 10930b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_used_elements_ += e->length(); 10940b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 10950b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 10960b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org case DICTIONARY_ELEMENTS: { 1097f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com SeededNumberDictionary* dict = element_dictionary(); 10980b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_slow_used_elements_ += dict->NumberOfElements(); 10990b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_slow_unused_elements_ += 11000b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org dict->Capacity() - dict->NumberOfElements(); 11010b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 11020b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 1103830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case NON_STRICT_ARGUMENTS_ELEMENTS: 11040b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 110543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 110643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 110743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 110843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 110943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::SpillInformation::Clear() { 111043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ = 0; 111143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_properties_ = 0; 111243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_elements_ = 0; 111343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_fields_ = 0; 111443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_unused_fields_ = 0; 111543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_properties_ = 0; 111643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_unused_properties_ = 0; 111743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_elements_ = 0; 111843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_unused_elements_ = 0; 111943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_elements_ = 0; 112043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_unused_elements_ = 0; 112143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 112243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1123e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 112443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::SpillInformation::Print() { 112543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF("\n JSObject Spill Statistics (#%d):\n", number_of_objects_); 112643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 112743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - fast properties (#%d): %d (used) %d (unused)\n", 112843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_properties_, 112943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_fields_, number_of_fast_unused_fields_); 113043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - slow properties (#%d): %d (used) %d (unused)\n", 113243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ - number_of_objects_with_fast_properties_, 113343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_properties_, number_of_slow_unused_properties_); 113443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - fast elements (#%d): %d (used) %d (unused)\n", 113643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_elements_, 113743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_elements_, number_of_fast_unused_elements_); 113843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - slow elements (#%d): %d (used) %d (unused)\n", 114043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ - number_of_objects_with_fast_elements_, 114143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_elements_, number_of_slow_unused_elements_); 114243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 114343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF("\n"); 114443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 114543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 114643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 114706ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.orgbool DescriptorArray::IsSortedNoDuplicates(int valid_entries) { 114806ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.org if (valid_entries == -1) valid_entries = number_of_descriptors(); 1149750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* current_key = NULL; 1150769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com uint32_t current = 0; 115133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org for (int i = 0; i < number_of_descriptors(); i++) { 1152750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* key = GetSortedKey(i); 1153769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com if (key == current_key) { 1154769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com PrintDescriptors(); 1155769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return false; 1156769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1157769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com current_key = key; 115846839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org uint32_t hash = GetSortedKey(i)->Hash(); 1159769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com if (hash < current) { 1160769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com PrintDescriptors(); 1161769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return false; 1162769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1163769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com current = hash; 1164769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1165769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return true; 1166769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com} 1167769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com 1168769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com 116906ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.orgbool TransitionArray::IsSortedNoDuplicates(int valid_entries) { 117006ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.org ASSERT(valid_entries == -1); 1171750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* current_key = NULL; 117299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org uint32_t current = 0; 117399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org for (int i = 0; i < number_of_transitions(); i++) { 1174750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* key = GetSortedKey(i); 117599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (key == current_key) { 117699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintTransitions(); 117799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return false; 117899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 117999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org current_key = key; 118046839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org uint32_t hash = GetSortedKey(i)->Hash(); 118199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (hash < current) { 118299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintTransitions(); 118399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return false; 118499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 118599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org current = hash; 118699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 118799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return true; 118899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org} 118999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 119099aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 1191212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.orgstatic bool CheckOneBackPointer(Map* current_map, Object* target) { 1192212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org return !target->IsMap() || Map::cast(target)->GetBackPointer() == current_map; 1193212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org} 1194212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 1195212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 119699aa490225c81012235659d9a183226b286178c8yangguo@chromium.orgbool TransitionArray::IsConsistentWithBackPointers(Map* current_map) { 119799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org for (int i = 0; i < number_of_transitions(); ++i) { 1198753aee4dcf0868130789b5af7c1eeb6ab2ab24f9verwaest@chromium.org if (!CheckOneBackPointer(current_map, GetTarget(i))) return false; 1199212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org } 1200212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org return true; 1201212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org} 1202212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 1203212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 120443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#endif // DEBUG 120543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 120643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} } // namespace v8::internal 1207