165a89c29ac6da09f5726f48f68eae9587b0e562aulan@chromium.org// Copyright 2012 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/disasm.h" 84b0feeef5d01dbc2948080b4f69daa37e1083461machenbach@chromium.org#include "src/disassembler.h" 98640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org#include "src/heap/objects-visiting.h" 10196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/jsregexp.h" 11196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/macro-assembler.h" 127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/ostreams.h" 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1471affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 1571affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 17c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#ifdef VERIFY_HEAP 189e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 19ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.orgvoid Object::ObjectVerify() { 20ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org if (IsSmi()) { 21ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org Smi::cast(this)->SmiVerify(); 22ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org } else { 23ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org HeapObject::cast(this)->HeapObjectVerify(); 24ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org } 25ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org} 26ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org 27ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Object::VerifyPointer(Object* p) { 2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (p->IsHeapObject()) { 3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen HeapObject::VerifyHeapPointer(p); 3143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 32c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(p->IsSmi()); 3343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 3543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Smi::SmiVerify() { 38c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsSmi()); 3943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 4043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapObject::HeapObjectVerify() { 4343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen InstanceType instance_type = map()->instance_type(); 4443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (instance_type < FIRST_NONSTRING_TYPE) { 4643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen String::cast(this)->StringVerify(); 4743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return; 4843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 4943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen switch (instance_type) { 514a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org case SYMBOL_TYPE: 524a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org Symbol::cast(this)->SymbolVerify(); 534a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org break; 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case MAP_TYPE: 5543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Map::cast(this)->MapVerify(); 5643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 5743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case HEAP_NUMBER_TYPE: 5858a725587734a6889c689668fd01f0157ed749a6machenbach@chromium.org case MUTABLE_HEAP_NUMBER_TYPE: 5943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen HeapNumber::cast(this)->HeapNumberVerify(); 6043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 6143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case FIXED_ARRAY_TYPE: 6243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen FixedArray::cast(this)->FixedArrayVerify(); 6343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 646d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org case FIXED_DOUBLE_ARRAY_TYPE: 656d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org FixedDoubleArray::cast(this)->FixedDoubleArrayVerify(); 666d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org break; 67a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org case CONSTANT_POOL_ARRAY_TYPE: 68a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org ConstantPoolArray::cast(this)->ConstantPoolArrayVerify(); 69a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org break; 7043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case BYTE_ARRAY_TYPE: 7143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ByteArray::cast(this)->ByteArrayVerify(); 7243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 73c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com case FREE_SPACE_TYPE: 74c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com FreeSpace::cast(this)->FreeSpaceVerify(); 75c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com break; 76af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 77af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#define VERIFY_TYPED_ARRAY(Type, type, TYPE, ctype, size) \ 78af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org case EXTERNAL_##TYPE##_ARRAY_TYPE: \ 79af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org External##Type##Array::cast(this)->External##Type##ArrayVerify(); \ 80af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org break; \ 81af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org case FIXED_##TYPE##_ARRAY_TYPE: \ 82af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org Fixed##Type##Array::cast(this)->FixedTypedArrayVerify(); \ 835c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org break; 84af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 85af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org TYPED_ARRAYS(VERIFY_TYPED_ARRAY) 86af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#undef VERIFY_TYPED_ARRAY 87af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 8843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case CODE_TYPE: 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Code::cast(this)->CodeVerify(); 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 9143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case ODDBALL_TYPE: 9243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Oddball::cast(this)->OddballVerify(); 9343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 9443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_OBJECT_TYPE: 953291210ab99f306b74430ebbc4b7d939629e699fager@chromium.org case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 9643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObject::cast(this)->JSObjectVerify(); 9743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 98e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org case JS_GENERATOR_OBJECT_TYPE: 99e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org JSGeneratorObject::cast(this)->JSGeneratorObjectVerify(); 100e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org break; 101ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com case JS_MODULE_TYPE: 102ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com JSModule::cast(this)->JSModuleVerify(); 103ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com break; 10443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_VALUE_TYPE: 10543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSValue::cast(this)->JSValueVerify(); 10643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org case JS_DATE_TYPE: 1084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org JSDate::cast(this)->JSDateVerify(); 1094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org break; 11043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_FUNCTION_TYPE: 11143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSFunction::cast(this)->JSFunctionVerify(); 11243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1135a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org case JS_GLOBAL_PROXY_TYPE: 1145a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org JSGlobalProxy::cast(this)->JSGlobalProxyVerify(); 1155a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org break; 11643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_GLOBAL_OBJECT_TYPE: 11743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSGlobalObject::cast(this)->JSGlobalObjectVerify(); 11843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 11943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_BUILTINS_OBJECT_TYPE: 12043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSBuiltinsObject::cast(this)->JSBuiltinsObjectVerify(); 12143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 12241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org case CELL_TYPE: 12341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org Cell::cast(this)->CellVerify(); 12441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org break; 12541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org case PROPERTY_CELL_TYPE: 126b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.org PropertyCell::cast(this)->PropertyCellVerify(); 1272abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org break; 12843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case JS_ARRAY_TYPE: 12943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSArray::cast(this)->JSArrayVerify(); 13043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 131394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com case JS_SET_TYPE: 132394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSSet::cast(this)->JSSetVerify(); 133394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com break; 134394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com case JS_MAP_TYPE: 135394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSMap::cast(this)->JSMapVerify(); 136394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com break; 1374ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org case JS_SET_ITERATOR_TYPE: 1384ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org JSSetIterator::cast(this)->JSSetIteratorVerify(); 1394ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org break; 1404ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org case JS_MAP_ITERATOR_TYPE: 1414ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org JSMapIterator::cast(this)->JSMapIteratorVerify(); 1424ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org break; 1437c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org case JS_WEAK_MAP_TYPE: 1447c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org JSWeakMap::cast(this)->JSWeakMapVerify(); 1457c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org break; 146ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org case JS_WEAK_SET_TYPE: 147ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org JSWeakSet::cast(this)->JSWeakSetVerify(); 148ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org break; 149236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org case JS_REGEXP_TYPE: 150236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org JSRegExp::cast(this)->JSRegExpVerify(); 151236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org break; 15243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case FILLER_TYPE: 15343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 1547304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org case JS_PROXY_TYPE: 1557304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org JSProxy::cast(this)->JSProxyVerify(); 1567304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org break; 15734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org case JS_FUNCTION_PROXY_TYPE: 15834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org JSFunctionProxy::cast(this)->JSFunctionProxyVerify(); 15934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org break; 160ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org case FOREIGN_TYPE: 161ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org Foreign::cast(this)->ForeignVerify(); 16243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 16343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case SHARED_FUNCTION_INFO_TYPE: 16443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen SharedFunctionInfo::cast(this)->SharedFunctionInfoVerify(); 16543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 16631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org case JS_MESSAGE_OBJECT_TYPE: 16731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org JSMessageObject::cast(this)->JSMessageObjectVerify(); 16831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org break; 169f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org case JS_ARRAY_BUFFER_TYPE: 170f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org JSArrayBuffer::cast(this)->JSArrayBufferVerify(); 171f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org break; 172e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org case JS_TYPED_ARRAY_TYPE: 173e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org JSTypedArray::cast(this)->JSTypedArrayVerify(); 174e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org break; 1751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case JS_DATA_VIEW_TYPE: 1761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSDataView::cast(this)->JSDataViewVerify(); 1771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org break; 17843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 17943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#define MAKE_STRUCT_CASE(NAME, Name, name) \ 18043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case NAME##_TYPE: \ 18143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Name::cast(this)->Name##Verify(); \ 18243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 18343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen STRUCT_LIST(MAKE_STRUCT_CASE) 18443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#undef MAKE_STRUCT_CASE 18543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 18643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen default: 18743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen UNREACHABLE(); 18843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 18943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 19043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 19143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 19243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 19343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapObject::VerifyHeapPointer(Object* p) { 194c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(p->IsHeapObject()); 195c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org HeapObject* ho = HeapObject::cast(p); 196c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(ho->GetHeap()->Contains(ho)); 19743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 19843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 19943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2004a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.orgvoid Symbol::SymbolVerify() { 2014a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK(IsSymbol()); 2024a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK(HasHashCode()); 2034a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org CHECK_GT(Hash(), 0); 204f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org CHECK(name()->IsUndefined() || name()->IsString()); 2050cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.org CHECK(flags()->IsSmi()); 2064a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org} 2074a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org 2084a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org 20943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid HeapNumber::HeapNumberVerify() { 21058a725587734a6889c689668fd01f0157ed749a6machenbach@chromium.org CHECK(IsHeapNumber() || IsMutableHeapNumber()); 21143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 2123811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 2133811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 21443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid ByteArray::ByteArrayVerify() { 215c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsByteArray()); 21643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 21743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 21843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 219c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.comvoid FreeSpace::FreeSpaceVerify() { 220c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsFreeSpace()); 221c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com} 222c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 223c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 224af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#define EXTERNAL_ARRAY_VERIFY(Type, type, TYPE, ctype, size) \ 225af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org void External##Type##Array::External##Type##ArrayVerify() { \ 226af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org CHECK(IsExternal##Type##Array()); \ 227af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org } 2283811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org 229af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.orgTYPED_ARRAYS(EXTERNAL_ARRAY_VERIFY) 230af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#undef EXTERNAL_ARRAY_VERIFY 2313847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com 2323847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com 2335c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.orgtemplate <class Traits> 2345c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.orgvoid FixedTypedArray<Traits>::FixedTypedArrayVerify() { 2355c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org CHECK(IsHeapObject() && 2365c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org HeapObject::cast(this)->map()->instance_type() == 2375c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org Traits::kInstanceType); 2385c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org} 2395c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 2405c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 241a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.orgbool JSObject::ElementsAreSafeToExamine() { 242f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org // If a GC was caused while constructing this object, the elements 243f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org // pointer may point to a one pointer filler map. 244f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org return reinterpret_cast<Map*>(elements()) != 245a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org GetHeap()->one_pointer_filler_map(); 246a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org} 247a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org 248a6516eb7a6c347f1146a0c823994a333468d818amvstanton@chromium.org 24943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::JSObjectVerify() { 25043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(properties()); 25143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(elements()); 252394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 253486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org if (GetElementsKind() == SLOPPY_ARGUMENTS_ELEMENTS) { 254c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(this->elements()->IsFixedArray()); 255c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_GE(this->elements()->length(), 2); 256394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com } 257394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 25843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (HasFastProperties()) { 259911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org CHECK_EQ(map()->unused_property_fields(), 260911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org (map()->inobject_properties() + properties()->length() - 261911335cff40a2630bbe1dfb77b1897be991241bfsgjesse@chromium.org map()->NextFreePropertyIndex())); 262bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org DescriptorArray* descriptors = map()->instance_descriptors(); 263bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { 264bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org if (descriptors->GetDetails(i).type() == FIELD) { 265bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org Representation r = descriptors->GetDetails(i).representation(); 266e7a6d372100022f492c88886898add6a51e66977machenbach@chromium.org FieldIndex index = FieldIndex::ForDescriptor(map(), i); 267e7a6d372100022f492c88886898add6a51e66977machenbach@chromium.org Object* value = RawFastPropertyAt(index); 268e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org if (r.IsDouble()) DCHECK(value->IsMutableHeapNumber()); 2691fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org if (value->IsUninitialized()) continue; 270e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org if (r.IsSmi()) DCHECK(value->IsSmi()); 271e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org if (r.IsHeapObject()) DCHECK(value->IsHeapObject()); 272e9fd6580f52407c94d77bfcb4be04207f2ebb2f1machenbach@chromium.org HeapType* field_type = descriptors->GetFieldType(i); 2738496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org if (r.IsNone()) { 274e9fd6580f52407c94d77bfcb4be04207f2ebb2f1machenbach@chromium.org CHECK(field_type->Is(HeapType::None())); 2758496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org } else if (!HeapType::Any()->Is(field_type)) { 2768496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org CHECK(!field_type->NowStable() || field_type->NowContains(value)); 277e9fd6580f52407c94d77bfcb4be04207f2ebb2f1machenbach@chromium.org } 278bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org } 279bf9432e3965b385e2e8df3701b710c105f5b3eb7ulan@chromium.org } 28043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 281e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org 282528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // If a GC was caused while constructing this object, the elements 283528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // pointer may point to a one pointer filler map. 284ef33a5482a35a9a25f702f8e3f02bb6b49f3854cjkummerow@chromium.org if (ElementsAreSafeToExamine()) { 285e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK_EQ((map()->has_fast_smi_or_object_elements() || 286e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org (elements() == GetHeap()->empty_fixed_array())), 287e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org (elements()->map() == GetHeap()->fixed_array_map() || 288e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->map() == GetHeap()->fixed_cow_array_map())); 289e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK(map()->has_fast_object_elements() == HasFastObjectElements()); 290e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org } 29143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 29243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 29343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 29443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Map::MapVerify() { 295c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org Heap* heap = GetHeap(); 296c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(!heap->InNewSpace(this)); 297c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(FIRST_TYPE <= instance_type() && instance_type() <= LAST_TYPE); 298c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(instance_size() == kVariableSizeSentinel || 299145eff58d4f6ac0dcc53abb556dbf3cac6c3280aerik.corry@gmail.com (kPointerSize <= instance_size() && 300c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org instance_size() < heap->Capacity())); 30143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(prototype()); 30243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(instance_descriptors()); 303e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org SLOW_DCHECK(instance_descriptors()->IsSortedNoDuplicates()); 30499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (HasTransitionArray()) { 305e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org SLOW_DCHECK(transitions()->IsSortedNoDuplicates()); 306e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org SLOW_DCHECK(transitions()->IsConsistentWithBackPointers(this)); 30799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 30843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 30943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 31043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 31131c0e32e19ad3df48525fa9e7b2d1c0c07496d00machenbach@chromium.orgvoid Map::DictionaryMapVerify() { 31265fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org MapVerify(); 31331c0e32e19ad3df48525fa9e7b2d1c0c07496d00machenbach@chromium.org CHECK(is_dictionary_map()); 314c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(instance_descriptors()->IsEmpty()); 315c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, pre_allocated_property_fields()); 316c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, unused_property_fields()); 317c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(StaticVisitorBase::GetVisitorId(instance_type(), instance_size()), 31865fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org visitor_id()); 31965fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org} 32065fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org 32165fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.org 322594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.orgvoid Map::VerifyOmittedMapChecks() { 323594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org if (!FLAG_omit_map_checks_for_leaf_maps) return; 324594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org if (!is_stable() || 325594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org is_deprecated() || 326594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org HasTransitionArray() || 327594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org is_dictionary_map()) { 3282e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org CHECK_EQ(0, dependent_code()->number_of_entries( 3292e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org DependentCode::kPrototypeCheckGroup)); 3302e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org } 3312e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org} 3322e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org 3332e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org 334ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgvoid CodeCache::CodeCacheVerify() { 335ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org VerifyHeapPointer(default_cache()); 336ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org VerifyHeapPointer(normal_type_cache()); 337c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(default_cache()->IsFixedArray()); 338c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(normal_type_cache()->IsUndefined() 339ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org || normal_type_cache()->IsCodeCacheHashTable()); 340ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org} 34143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 34243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 343e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid PolymorphicCodeCache::PolymorphicCodeCacheVerify() { 344e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org VerifyHeapPointer(cache()); 345c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(cache()->IsUndefined() || cache()->IsPolymorphicCodeCacheHashTable()); 346e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 347e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 348e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 349f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.orgvoid TypeFeedbackInfo::TypeFeedbackInfoVerify() { 35046839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(kStorage1Offset); 35146839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(kStorage2Offset); 3523e3d253bd8018d7627422bf55a5c7bb7e7d6ad7emachenbach@chromium.org VerifyObjectField(kStorage3Offset); 353f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org} 354f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org 355f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org 356ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.orgvoid AliasedArgumentsEntry::AliasedArgumentsEntryVerify() { 357ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org VerifySmiField(kAliasedContextSlot); 358ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org} 359ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org 360ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org 36143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid FixedArray::FixedArrayVerify() { 36243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = 0; i < length(); i++) { 36343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* e = get(i); 364ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org VerifyPointer(e); 36543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 36643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 36743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 36843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3696d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.orgvoid FixedDoubleArray::FixedDoubleArrayVerify() { 3706d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org for (int i = 0; i < length(); i++) { 3716d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org if (!is_the_hole(i)) { 3727c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org double value = get_scalar(i); 37377ca49ac05d25684c89442029c22f5b2bce94395ulan@chromium.org CHECK(!std::isnan(value) || 374e20e19efeef112c26d0e63b1e5118e695b42d855machenbach@chromium.org (bit_cast<uint64_t>(value) == 375e20e19efeef112c26d0e63b1e5118e695b42d855machenbach@chromium.org bit_cast<uint64_t>(canonical_not_the_hole_nan_as_double())) || 376e20e19efeef112c26d0e63b1e5118e695b42d855machenbach@chromium.org ((bit_cast<uint64_t>(value) & Double::kSignMask) != 0)); 3776d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org } 3786d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org } 3796d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org} 3806d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org 3816d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org 382a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.orgvoid ConstantPoolArray::ConstantPoolArrayVerify() { 383a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org CHECK(IsConstantPoolArray()); 384196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org ConstantPoolArray::Iterator code_iter(this, ConstantPoolArray::CODE_PTR); 385196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org while (!code_iter.is_finished()) { 386196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org Address code_entry = get_code_ptr_entry(code_iter.next_index()); 387bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org VerifyPointer(Code::GetCodeFromTargetAddress(code_entry)); 388bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org } 389196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org ConstantPoolArray::Iterator heap_iter(this, ConstantPoolArray::HEAP_PTR); 390196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org while (!heap_iter.is_finished()) { 391196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org VerifyObjectField(OffsetOfElementAt(heap_iter.next_index())); 392bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org } 393a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org} 394a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org 395a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org 396e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgvoid JSGeneratorObject::JSGeneratorObjectVerify() { 397e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // In an expression like "new g()", there can be a point where a generator 398e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // object is allocated but its fields are all undefined, as it hasn't yet been 399e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org // initialized by the generator. Hence these weak checks. 400e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kFunctionOffset); 401e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kContextOffset); 402ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org VerifyObjectField(kReceiverOffset); 403e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kOperandStackOffset); 404e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyObjectField(kContinuationOffset); 40557ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org VerifyObjectField(kStackHandlerIndexOffset); 406e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 407e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 408e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 409ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.comvoid JSModule::JSModuleVerify() { 41081cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org VerifyObjectField(kContextOffset); 41181cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org VerifyObjectField(kScopeInfoOffset); 41246839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org CHECK(context()->IsUndefined() || 41346839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org Context::cast(context())->IsModuleContext()); 414ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com} 415ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 416ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 41743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSValue::JSValueVerify() { 41843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* v = value(); 41943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (v->IsHeapObject()) { 42043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(v); 42143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 42243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 42343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4254efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgvoid JSDate::JSDateVerify() { 4264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (value()->IsHeapObject()) { 4274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org VerifyHeapPointer(value()); 4284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4294efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(value()->IsUndefined() || value()->IsSmi() || value()->IsHeapNumber()); 4304efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(year()->IsUndefined() || year()->IsSmi() || year()->IsNaN()); 4314efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(month()->IsUndefined() || month()->IsSmi() || month()->IsNaN()); 4324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(day()->IsUndefined() || day()->IsSmi() || day()->IsNaN()); 4334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(weekday()->IsUndefined() || weekday()->IsSmi() || weekday()->IsNaN()); 4344efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(hour()->IsUndefined() || hour()->IsSmi() || hour()->IsNaN()); 4354efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(min()->IsUndefined() || min()->IsSmi() || min()->IsNaN()); 4364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(sec()->IsUndefined() || sec()->IsSmi() || sec()->IsNaN()); 4374efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(cache_stamp()->IsUndefined() || 4384efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org cache_stamp()->IsSmi() || 4394efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org cache_stamp()->IsNaN()); 4404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 4414efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (month()->IsSmi()) { 4424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int month = Smi::cast(this->month())->value(); 4434efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= month && month <= 11); 4444efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4454efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (day()->IsSmi()) { 4464efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int day = Smi::cast(this->day())->value(); 4474efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(1 <= day && day <= 31); 4484efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4494efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (hour()->IsSmi()) { 4504efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int hour = Smi::cast(this->hour())->value(); 4514efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= hour && hour <= 23); 4524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4534efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (min()->IsSmi()) { 4544efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int min = Smi::cast(this->min())->value(); 4554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= min && min <= 59); 4564efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (sec()->IsSmi()) { 4584efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int sec = Smi::cast(this->sec())->value(); 4594efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= sec && sec <= 59); 4604efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4614efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (weekday()->IsSmi()) { 4624efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org int weekday = Smi::cast(this->weekday())->value(); 4634efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(0 <= weekday && weekday <= 6); 4644efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4654efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (cache_stamp()->IsSmi()) { 4664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK(Smi::cast(cache_stamp())->value() <= 4673d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.org Smi::cast(GetIsolate()->date_cache()->stamp())->value()); 4684efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 4694efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org} 4704efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 4714efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 47231b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.orgvoid JSMessageObject::JSMessageObjectVerify() { 47331b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(IsJSMessageObject()); 47431b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(type()->IsString()); 47531b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org CHECK(arguments()->IsJSArray()); 47631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kStartPositionOffset); 47731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kEndPositionOffset); 47831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kArgumentsOffset); 47931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kScriptOffset); 48031b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org VerifyObjectField(kStackFramesOffset); 48131b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org} 48231b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org 48331b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org 48443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid String::StringVerify() { 48543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsString()); 48643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(length() >= 0 && length() <= Smi::kMaxValue); 4874a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org if (IsInternalizedString()) { 488c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org CHECK(!GetHeap()->InNewSpace(this)); 48943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 4904668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org if (IsConsString()) { 4914668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org ConsString::cast(this)->ConsStringVerify(); 4924668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } else if (IsSlicedString()) { 4934668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org SlicedString::cast(this)->SlicedStringVerify(); 4944668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } 4954668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org} 4964668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 4974668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 4984668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.orgvoid ConsString::ConsStringVerify() { 4994668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->first()->IsString()); 5004668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->second() == GetHeap()->empty_string() || 5014668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org this->second()->IsString()); 5022efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org CHECK(this->length() >= ConsString::kMinLength); 5039e41f9ecf5042292a9efcb36e264b37621199553machenbach@chromium.org CHECK(this->length() == this->first()->length() + this->second()->length()); 5044668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org if (this->IsFlat()) { 5054668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org // A flat cons can only be created by String::SlowTryFlatten. 5064668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org // Afterwards, the first part may be externalized. 5074668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->first()->IsSeqString() || this->first()->IsExternalString()); 5084668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org } 5094668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org} 5104668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5114668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org 5124668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.orgvoid SlicedString::SlicedStringVerify() { 5134668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(!this->parent()->IsConsString()); 5144668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(!this->parent()->IsSlicedString()); 5154668a2c7a746d01b382f23aa32e163701e3075f8ricow@chromium.org CHECK(this->length() >= SlicedString::kMinLength); 51643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 51743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSFunction::JSFunctionVerify() { 52043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSFunction()); 52143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kPrototypeOrInitialMapOffset); 522a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org VerifyObjectField(kNextFunctionLinkOffset); 523c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com CHECK(code()->IsCode()); 524e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org CHECK(next_function_link() == NULL || 525e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org next_function_link()->IsUndefined() || 526a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org next_function_link()->IsJSFunction()); 52743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 52843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 529023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 53043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid SharedFunctionInfo::SharedFunctionInfoVerify() { 53143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsSharedFunctionInfo()); 53243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kNameOffset); 53343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kCodeOffset); 5345a11aaf63fdb7843c9b116fdb84ee35b0a980ea6yangguo@chromium.org VerifyObjectField(kOptimizedCodeMapOffset); 535a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org VerifyObjectField(kFeedbackVectorOffset); 5366a2b0aa331a1ae1829a9b9637ad18cfc7ec9d840ager@chromium.org VerifyObjectField(kScopeInfoOffset); 53743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kInstanceClassNameOffset); 538f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org VerifyObjectField(kFunctionDataOffset); 53943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kScriptOffset); 54043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(kDebugInfoOffset); 54143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 5425a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 5435a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 5445a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.orgvoid JSGlobalProxy::JSGlobalProxyVerify() { 5455a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org CHECK(IsJSGlobalProxy()); 5465a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org JSObjectVerify(); 54746839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org VerifyObjectField(JSGlobalProxy::kNativeContextOffset); 5485a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org // Make sure that this object has no properties, elements. 5495a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org CHECK_EQ(0, properties()->length()); 5503c3c8d733702cb2b41471efa5eead1faf5b5711bmachenbach@chromium.org CHECK(HasFastSmiElements()); 55130ce411529579186181838984710b0b0980857aaricow@chromium.org CHECK_EQ(0, FixedArray::cast(elements())->length()); 5525a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org} 55343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSGlobalObject::JSGlobalObjectVerify() { 55643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSGlobalObject()); 55743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 55843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = GlobalObject::kBuiltinsOffset; 55943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i < JSGlobalObject::kSize; 56043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i += kPointerSize) { 56143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(i); 56243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 56343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 56443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 56543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 56643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSBuiltinsObject::JSBuiltinsObjectVerify() { 56743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsJSBuiltinsObject()); 56843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 56943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (int i = GlobalObject::kBuiltinsOffset; 57043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i < JSBuiltinsObject::kSize; 57143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen i += kPointerSize) { 57243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyObjectField(i); 57343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 57443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 57543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Oddball::OddballVerify() { 57843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsOddball()); 57949ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org Heap* heap = GetHeap(); 58043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyHeapPointer(to_string()); 58143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen Object* number = to_number(); 58243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (number->IsHeapObject()) { 58349ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(number == heap->nan_value()); 58443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 585c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(number->IsSmi()); 58643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen int value = Smi::cast(number)->value(); 587c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com // Hidden oddballs have negative smis. 588a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org const int kLeastHiddenOddballNumber = -5; 589c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_LE(value, 1); 590c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(value >= kLeastHiddenOddballNumber); 59143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 59249ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org if (map() == heap->undefined_map()) { 59349ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->undefined_value()); 59449ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->the_hole_map()) { 59549ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->the_hole_value()); 59649ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->null_map()) { 59749ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->null_value()); 59849ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->boolean_map()) { 59949ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->true_value() || 60049ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org this == heap->false_value()); 60149ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->uninitialized_map()) { 60249ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->uninitialized_value()); 60349ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->no_interceptor_result_sentinel_map()) { 60449ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->no_interceptor_result_sentinel()); 60549ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->arguments_marker_map()) { 60649ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->arguments_marker()); 60749ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else if (map() == heap->termination_exception_map()) { 60849ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org CHECK(this == heap->termination_exception()); 609a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org } else if (map() == heap->exception_map()) { 610a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org CHECK(this == heap->exception()); 61149ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } else { 61249ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org UNREACHABLE(); 61349ff8125753a4cb137f5e549671d42c7ca47ade5machenbach@chromium.org } 61443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 61543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgvoid Cell::CellVerify() { 61841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org CHECK(IsCell()); 61941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org VerifyObjectField(kValueOffset); 62041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 62141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 62241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 623b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.orgvoid PropertyCell::PropertyCellVerify() { 624b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.org CHECK(IsPropertyCell()); 6252abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org VerifyObjectField(kValueOffset); 62641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org VerifyObjectField(kTypeOffset); 6272abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org} 6282abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 6292abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 63043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid Code::CodeVerify() { 631061ef74c9b8acd038edf4b4355c50d097c8a9683kasperl@chromium.org CHECK(IsAligned(reinterpret_cast<intptr_t>(instruction_start()), 6324a1fe7d5e92fdb673d5f05d5ddf7b1ed703ba18dwhesse@chromium.org kCodeAlignment)); 633ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org relocation_info()->ObjectVerify(); 6347276f14ca716596e0a0d17539516370c1f453847kasper.lund Address last_gc_pc = NULL; 6355924917d324a643d00a8aefee030bd4acea0de0bmachenbach@chromium.org Isolate* isolate = GetIsolate(); 63643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (RelocIterator it(this); !it.done(); it.next()) { 6375924917d324a643d00a8aefee030bd4acea0de0bmachenbach@chromium.org it.rinfo()->Verify(isolate); 6387276f14ca716596e0a0d17539516370c1f453847kasper.lund // Ensure that GC will not iterate twice over the same pointer. 639236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org if (RelocInfo::IsGCRelocMode(it.rinfo()->rmode())) { 6407276f14ca716596e0a0d17539516370c1f453847kasper.lund CHECK(it.rinfo()->pc() != last_gc_pc); 6417276f14ca716596e0a0d17539516370c1f453847kasper.lund last_gc_pc = it.rinfo()->pc(); 6427276f14ca716596e0a0d17539516370c1f453847kasper.lund } 64343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 6449d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org CHECK(raw_type_feedback_info() == Smi::FromInt(0) || 6459d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org raw_type_feedback_info()->IsSmi() == IsCodeStubOrIC()); 64643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 64743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64925b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.orgvoid Code::VerifyEmbeddedObjectsDependency() { 6502ebef182c49d59eba907b120c3c2a50808bd1f12machenbach@chromium.org if (!CanContainWeakObjects()) return; 6513484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org DisallowHeapAllocation no_gc; 6523484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org Isolate* isolate = GetIsolate(); 6533484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org HandleScope scope(isolate); 65494b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT); 65594b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { 65625b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Object* obj = it.rinfo()->target_object(); 657f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org if (IsWeakObject(obj)) { 65825b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org if (obj->IsMap()) { 65925b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Map* map = Map::cast(obj); 6602ebef182c49d59eba907b120c3c2a50808bd1f12machenbach@chromium.org DependentCode::DependencyGroup group = is_optimized_code() ? 6612ebef182c49d59eba907b120c3c2a50808bd1f12machenbach@chromium.org DependentCode::kWeakCodeGroup : DependentCode::kWeakICGroup; 6622ebef182c49d59eba907b120c3c2a50808bd1f12machenbach@chromium.org CHECK(map->dependent_code()->Contains(group, this)); 66325b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org } else if (obj->IsJSObject()) { 66425b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org Object* raw_table = GetIsolate()->heap()->weak_object_to_code_table(); 66525b0e21ac53cd2e892094493a65f75258fa977f0jkummerow@chromium.org WeakHashTable* table = WeakHashTable::cast(raw_table); 6663484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org Handle<Object> key_obj(obj, isolate); 6673484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org CHECK(DependentCode::cast(table->Lookup(key_obj))->Contains( 6682ebef182c49d59eba907b120c3c2a50808bd1f12machenbach@chromium.org DependentCode::kWeakCodeGroup, this)); 66994b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 67094b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 67194b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org } 67294b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org} 67394b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org 67494b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org 67543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSArray::JSArrayVerify() { 67643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen JSObjectVerify(); 677c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(length()->IsNumber() || length()->IsUndefined()); 678528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // If a GC was caused while constructing this array, the elements 679528ce02b8680a3ab6d75c7079f180a4016c69b7amachenbach@chromium.org // pointer may point to a one pointer filler map. 680ef33a5482a35a9a25f702f8e3f02bb6b49f3854cjkummerow@chromium.org if (ElementsAreSafeToExamine()) { 681e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org CHECK(elements()->IsUndefined() || 682e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->IsFixedArray() || 683e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org elements()->IsFixedDoubleArray()); 684e97852de34e44a479f092bd2449134e707cd9cf1dslomov@chromium.org } 68543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 68643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 68743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 688394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid JSSet::JSSetVerify() { 689394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com CHECK(IsJSSet()); 690394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSObjectVerify(); 691394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com VerifyHeapPointer(table()); 6929e41f9ecf5042292a9efcb36e264b37621199553machenbach@chromium.org CHECK(table()->IsOrderedHashTable() || table()->IsUndefined()); 6934ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org // TODO(arv): Verify OrderedHashTable too. 694394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 695394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 696394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 697394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid JSMap::JSMapVerify() { 698394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com CHECK(IsJSMap()); 699394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com JSObjectVerify(); 700394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com VerifyHeapPointer(table()); 7019e41f9ecf5042292a9efcb36e264b37621199553machenbach@chromium.org CHECK(table()->IsOrderedHashTable() || table()->IsUndefined()); 7024ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org // TODO(arv): Verify OrderedHashTable too. 7034ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org} 7044ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org 7054ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org 7064ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.orgvoid JSSetIterator::JSSetIteratorVerify() { 7074ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org CHECK(IsJSSetIterator()); 7084ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org JSObjectVerify(); 7094ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org VerifyHeapPointer(table()); 7104ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org CHECK(table()->IsOrderedHashTable() || table()->IsUndefined()); 711196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org CHECK(index()->IsSmi() || index()->IsUndefined()); 712196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org CHECK(kind()->IsSmi() || kind()->IsUndefined()); 7134ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org} 7144ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org 7154ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org 7164ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.orgvoid JSMapIterator::JSMapIteratorVerify() { 7174ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org CHECK(IsJSMapIterator()); 7184ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org JSObjectVerify(); 7194ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org VerifyHeapPointer(table()); 7204ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org CHECK(table()->IsOrderedHashTable() || table()->IsUndefined()); 721196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org CHECK(index()->IsSmi() || index()->IsUndefined()); 722196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org CHECK(kind()->IsSmi() || kind()->IsUndefined()); 723394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 724394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 725394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 7267c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.orgvoid JSWeakMap::JSWeakMapVerify() { 7277c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org CHECK(IsJSWeakMap()); 7287c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org JSObjectVerify(); 7297c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org VerifyHeapPointer(table()); 730c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 7317c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org} 7327c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org 7337c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org 734ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.orgvoid JSWeakSet::JSWeakSetVerify() { 735ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org CHECK(IsJSWeakSet()); 736ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org JSObjectVerify(); 737ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org VerifyHeapPointer(table()); 738ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org CHECK(table()->IsHashTable() || table()->IsUndefined()); 739ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org} 740ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 741ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 742236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.orgvoid JSRegExp::JSRegExpVerify() { 743236ad9617a7359a463144a6ebeb5431a70f769cfager@chromium.org JSObjectVerify(); 744c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(data()->IsUndefined() || data()->IsFixedArray()); 7459fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org switch (TypeTag()) { 7469fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org case JSRegExp::ATOM: { 7479fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org FixedArray* arr = FixedArray::cast(data()); 748c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(arr->get(JSRegExp::kAtomPatternIndex)->IsString()); 7499fe21c6d4c657d15af27c8751257d3e2bf113e45kasperl@chromium.org break; 75041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org } 751a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org case JSRegExp::IRREGEXP: { 75268ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org bool is_native = RegExpImpl::UsesNativeRegExp(); 753bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org 754a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org FixedArray* arr = FixedArray::cast(data()); 7552c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org Object* one_byte_data = arr->get(JSRegExp::kIrregexpLatin1CodeIndex); 756ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org // Smi : Not compiled yet (-1) or code prepared for flushing. 757a1645e29968e70a41226edda2c49788fcea48b74ager@chromium.org // JSObject: Compilation error. 758a1645e29968e70a41226edda2c49788fcea48b74ager@chromium.org // Code/ByteArray: Compiled code. 7592c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org CHECK( 7602c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org one_byte_data->IsSmi() || 7612c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org (is_native ? one_byte_data->IsCode() : one_byte_data->IsByteArray())); 7627be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org Object* uc16_data = arr->get(JSRegExp::kIrregexpUC16CodeIndex); 763c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(uc16_data->IsSmi() || 764ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org (is_native ? uc16_data->IsCode() : uc16_data->IsByteArray())); 765ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org 7662c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org Object* one_byte_saved = 7672c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org arr->get(JSRegExp::kIrregexpLatin1CodeSavedIndex); 7682c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org CHECK(one_byte_saved->IsSmi() || one_byte_saved->IsString() || 7692c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.org one_byte_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()); 814895f00d1d8c5a7a7209c36d690688e3552de3df4machenbach@chromium.org CHECK(buffer()->IsJSArrayBuffer() || buffer()->IsUndefined() 815895f00d1d8c5a7a7209c36d690688e3552de3df4machenbach@chromium.org || buffer() == Smi::FromInt(0)); 816e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 817e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(byte_offset()); 818e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(byte_offset()->IsSmi() || byte_offset()->IsHeapNumber() 819e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || byte_offset()->IsUndefined()); 820e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 821e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(byte_length()); 822e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber() 823e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || byte_length()->IsUndefined()); 8241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 8251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 826e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 8271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid JSTypedArray::JSTypedArrayVerify() { 8281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CHECK(IsJSTypedArray()); 8291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSArrayBufferViewVerify(); 830e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(length()); 831e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org CHECK(length()->IsSmi() || length()->IsHeapNumber() 832e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org || length()->IsUndefined()); 833e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 834e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org VerifyPointer(elements()); 835e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 836e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 837e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 8381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid JSDataView::JSDataViewVerify() { 8391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CHECK(IsJSDataView()); 8401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org JSArrayBufferViewVerify(); 8411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 8421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 8431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 844ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.orgvoid Foreign::ForeignVerify() { 845c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(IsForeign()); 84643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 84743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 84843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8491fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.orgvoid Box::BoxVerify() { 8501fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org CHECK(IsBox()); 851ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org value()->ObjectVerify(); 8521fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org} 8531fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org 8541fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org 85543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid AccessorInfo::AccessorInfoVerify() { 85643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(name()); 85743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(flag()); 8587028c05c1c71b9d5c5fe1bca01f2461d17a2dda7mmassi@chromium.org VerifyPointer(expected_receiver_type()); 85943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 860023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 86143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8627c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid ExecutableAccessorInfo::ExecutableAccessorInfoVerify() { 8637c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsExecutableAccessorInfo()); 8647c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org AccessorInfoVerify(); 8657c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(getter()); 8667c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(setter()); 8677c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(data()); 8687c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8697c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8707c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8717c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid DeclaredAccessorDescriptor::DeclaredAccessorDescriptorVerify() { 8727c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsDeclaredAccessorDescriptor()); 873750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org VerifyPointer(serialized_data()); 8747c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8757c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8767c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8777c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.orgvoid DeclaredAccessorInfo::DeclaredAccessorInfoVerify() { 8787c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org CHECK(IsDeclaredAccessorInfo()); 8797c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org AccessorInfoVerify(); 8807c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org VerifyPointer(descriptor()); 8817c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org} 8827c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 8837c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org 884f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvoid AccessorPair::AccessorPairVerify() { 885f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com CHECK(IsAccessorPair()); 886f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com VerifyPointer(getter()); 887f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com VerifyPointer(setter()); 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(wrapper()); 97943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen type()->SmiVerify(); 980499aaa52a876ef8e8b81ac115cafb969eb585c96sgjesse@chromium.org VerifyPointer(line_ends()); 98165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org VerifyPointer(id()); 98243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 98343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 98443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 985c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.orgvoid JSFunctionResultCache::JSFunctionResultCacheVerify() { 986ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org JSFunction::cast(get(kFactoryIndex))->ObjectVerify(); 987c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 988c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org int size = Smi::cast(get(kCacheSizeIndex))->value(); 989c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(kEntriesIndex <= size); 990c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(size <= length()); 991c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, size % kEntrySize); 992c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 993c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org int finger = Smi::cast(get(kFingerIndex))->value(); 994c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(kEntriesIndex <= finger); 995c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK((finger < size) || (finger == kEntriesIndex && finger == size)); 996c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK_EQ(0, finger % kEntrySize); 997c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 998c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (FLAG_enable_slow_asserts) { 999c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = kEntriesIndex; i < size; i++) { 1000c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(!get(i)->IsTheHole()); 1001ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org get(i)->ObjectVerify(); 1002c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1003c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = size; i < length(); i++) { 1004c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(get(i)->IsTheHole()); 1005ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org get(i)->ObjectVerify(); 1006c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1007c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1008c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org} 1009c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1010c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1011c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.orgvoid NormalizedMapCache::NormalizedMapCacheVerify() { 1012ed1a63112185152bc10fbd02418393804a5fcf04machenbach@chromium.org FixedArray::cast(this)->FixedArrayVerify(); 1013c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (FLAG_enable_slow_asserts) { 1014c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org for (int i = 0; i < length(); i++) { 1015c8e8806f9e54a027d667425f1bb1b28cf9cbb6f7machenbach@chromium.org Object* e = FixedArray::get(i); 1016c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org if (e->IsMap()) { 101731c0e32e19ad3df48525fa9e7b2d1c0c07496d00machenbach@chromium.org Map::cast(e)->DictionaryMapVerify(); 1018c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } else { 1019c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org CHECK(e->IsUndefined()); 1020c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1021c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1022c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org } 1023c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org} 1024c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 1025c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org 102643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid DebugInfo::DebugInfoVerify() { 102743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsDebugInfo()); 102843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(shared()); 102943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(original_code()); 103043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(code()); 103143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(break_points()); 103243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 103343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 103443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 103543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid BreakPointInfo::BreakPointInfoVerify() { 103643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CHECK(IsBreakPointInfo()); 103743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen code_position()->SmiVerify(); 103843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen source_position()->SmiVerify(); 103943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen statement_position()->SmiVerify(); 104043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen VerifyPointer(break_point_objects()); 104143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 1042c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#endif // VERIFY_HEAP 104343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1044c859c4f83f6ec3e010213dbbe447cc1f927d01c5svenpanne@chromium.org#ifdef DEBUG 104543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 104643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::IncrementSpillStatistics(SpillInformation* info) { 104743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_objects_++; 104843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Named properties 104943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen if (HasFastProperties()) { 105043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_objects_with_fast_properties_++; 105143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_fast_used_fields_ += map()->NextFreePropertyIndex(); 105243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_fast_unused_fields_ += map()->unused_property_fields(); 105343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 1054750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org NameDictionary* dict = property_dictionary(); 105543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_slow_used_properties_ += dict->NumberOfElements(); 105643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen info->number_of_slow_unused_properties_ += 105743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen dict->Capacity() - dict->NumberOfElements(); 105843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 105943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Indexed properties 10600b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org switch (GetElementsKind()) { 1061830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_SMI_ELEMENTS: 1062830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_SMI_ELEMENTS: 1063830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_DOUBLE_ELEMENTS: 1064830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_DOUBLE_ELEMENTS: 1065830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org case FAST_HOLEY_ELEMENTS: 10660b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org case FAST_ELEMENTS: { 10670b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_objects_with_fast_elements_++; 10680b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org int holes = 0; 10690b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org FixedArray* e = FixedArray::cast(elements()); 10700b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org int len = e->length(); 1071c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org Heap* heap = GetHeap(); 10720b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org for (int i = 0; i < len; i++) { 1073ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org if (e->get(i) == heap->the_hole_value()) holes++; 10740b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 10750b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_used_elements_ += len - holes; 10760b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_unused_elements_ += holes; 10770b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 107843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 1079af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 1080af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ 1081af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org case EXTERNAL_##TYPE##_ELEMENTS: \ 1082af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org case TYPE##_ELEMENTS: 1083af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 1084af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org TYPED_ARRAYS(TYPED_ARRAY_CASE) 1085af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org#undef TYPED_ARRAY_CASE 1086af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org { info->number_of_objects_with_fast_elements_++; 10875c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org FixedArrayBase* e = FixedArrayBase::cast(elements()); 10880b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_fast_used_elements_ += e->length(); 10890b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 10900b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 10910b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org case DICTIONARY_ELEMENTS: { 1092f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com SeededNumberDictionary* dict = element_dictionary(); 10930b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_slow_used_elements_ += dict->NumberOfElements(); 10940b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org info->number_of_slow_unused_elements_ += 10950b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org dict->Capacity() - dict->NumberOfElements(); 10960b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 10970b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org } 1098486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org case SLOPPY_ARGUMENTS_ELEMENTS: 10990b6db5975a9d1ebcf3de7b18603380d99f789e66sgjesse@chromium.org break; 110043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 110143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 110243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 110343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 110443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::SpillInformation::Clear() { 110543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ = 0; 110643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_properties_ = 0; 110743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_elements_ = 0; 110843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_fields_ = 0; 110943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_unused_fields_ = 0; 111043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_properties_ = 0; 111143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_unused_properties_ = 0; 111243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_elements_ = 0; 111343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_unused_elements_ = 0; 111443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_elements_ = 0; 111543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_unused_elements_ = 0; 111643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 111743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1118e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 111943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid JSObject::SpillInformation::Print() { 112043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF("\n JSObject Spill Statistics (#%d):\n", number_of_objects_); 112143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 112243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - fast properties (#%d): %d (used) %d (unused)\n", 112343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_properties_, 112443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_fields_, number_of_fast_unused_fields_); 112543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 112643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - slow properties (#%d): %d (used) %d (unused)\n", 112743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ - number_of_objects_with_fast_properties_, 112843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_properties_, number_of_slow_unused_properties_); 112943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - fast elements (#%d): %d (used) %d (unused)\n", 113143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_with_fast_elements_, 113243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_fast_used_elements_, number_of_fast_unused_elements_); 113343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF(" - slow elements (#%d): %d (used) %d (unused)\n", 113543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_objects_ - number_of_objects_with_fast_elements_, 113643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen number_of_slow_used_elements_, number_of_slow_unused_elements_); 113743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 113843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen PrintF("\n"); 113943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 114043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 114143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 114206ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.orgbool DescriptorArray::IsSortedNoDuplicates(int valid_entries) { 114306ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.org if (valid_entries == -1) valid_entries = number_of_descriptors(); 1144750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* current_key = NULL; 1145769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com uint32_t current = 0; 114633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org for (int i = 0; i < number_of_descriptors(); i++) { 1147750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* key = GetSortedKey(i); 1148769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com if (key == current_key) { 1149f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org OFStream os(stdout); 1150f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org PrintDescriptors(os); 1151769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return false; 1152769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1153769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com current_key = key; 115446839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org uint32_t hash = GetSortedKey(i)->Hash(); 1155769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com if (hash < current) { 1156f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org OFStream os(stdout); 1157f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org PrintDescriptors(os); 1158769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return false; 1159769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1160769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com current = hash; 1161769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com } 1162769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com return true; 1163769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com} 1164769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com 1165769cc962a043dd8d92cc010dd2c50bc26f652c94mads.s.ager@gmail.com 116606ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.orgbool TransitionArray::IsSortedNoDuplicates(int valid_entries) { 1167e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org DCHECK(valid_entries == -1); 1168750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* current_key = NULL; 116999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org uint32_t current = 0; 117099aa490225c81012235659d9a183226b286178c8yangguo@chromium.org for (int i = 0; i < number_of_transitions(); i++) { 1171750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org Name* key = GetSortedKey(i); 117299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (key == current_key) { 1173f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org OFStream os(stdout); 1174f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org PrintTransitions(os); 117599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return false; 117699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 117799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org current_key = key; 117846839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org uint32_t hash = GetSortedKey(i)->Hash(); 117999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if (hash < current) { 1180f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org OFStream os(stdout); 1181f15d0cdbef11a212e108432465f014a7d3c3aa12machenbach@chromium.org PrintTransitions(os); 118299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return false; 118399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 118499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org current = hash; 118599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 118699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return true; 118799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org} 118899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 118999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 1190212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.orgstatic bool CheckOneBackPointer(Map* current_map, Object* target) { 1191212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org return !target->IsMap() || Map::cast(target)->GetBackPointer() == current_map; 1192212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org} 1193212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 1194212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 119599aa490225c81012235659d9a183226b286178c8yangguo@chromium.orgbool TransitionArray::IsConsistentWithBackPointers(Map* current_map) { 119699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org for (int i = 0; i < number_of_transitions(); ++i) { 1197753aee4dcf0868130789b5af7c1eeb6ab2ab24f9verwaest@chromium.org if (!CheckOneBackPointer(current_map, GetTarget(i))) return false; 1198212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org } 1199212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org return true; 1200212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org} 1201212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 1202212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org 120343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#endif // DEBUG 120443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 120543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} } // namespace v8::internal 1206