Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1250 if (obj->IsFailure()) return false; | 1250 if (obj->IsFailure()) return false; |
| 1251 Object* elements = AllocateFixedArray(2); | 1251 Object* elements = AllocateFixedArray(2); |
| 1252 if (elements->IsFailure()) return false; | 1252 if (elements->IsFailure()) return false; |
| 1253 FixedArray::cast(elements)->set(0, Smi::FromInt(0)); | 1253 FixedArray::cast(elements)->set(0, Smi::FromInt(0)); |
| 1254 JSObject::cast(obj)->set_elements(FixedArray::cast(elements)); | 1254 JSObject::cast(obj)->set_elements(FixedArray::cast(elements)); |
| 1255 message_listeners_ = JSObject::cast(obj); | 1255 message_listeners_ = JSObject::cast(obj); |
| 1256 | 1256 |
| 1257 return true; | 1257 return true; |
| 1258 } | 1258 } |
| 1259 | 1259 |
| 1260 | |
| 1261 void Heap::CreateCEntryStub() { | |
| 1262 CEntryStub stub; | |
| 1263 c_entry_code_ = *stub.GetCode(); | |
| 1264 } | |
| 1265 | |
| 1266 | |
| 1267 void Heap::CreateCEntryDebugBreakStub() { | |
| 1268 CEntryDebugBreakStub stub; | |
| 1269 c_entry_debug_break_code_ = *stub.GetCode(); | |
| 1270 } | |
| 1271 | |
| 1272 | |
| 1273 void Heap::CreateJSEntryStub() { | |
| 1274 JSEntryStub stub; | |
| 1275 js_entry_code_ = *stub.GetCode(); | |
| 1276 } | |
| 1277 | |
| 1278 | |
| 1279 void Heap::CreateJSConstructEntryStub() { | |
| 1280 JSConstructEntryStub stub; | |
| 1281 js_construct_entry_code_ = *stub.GetCode(); | |
| 1282 } | |
| 1283 | |
| 1284 | |
| 1260 void Heap::CreateFixedStubs() { | 1285 void Heap::CreateFixedStubs() { |
| 1261 // Here we create roots for fixed stubs. They are needed at GC | 1286 // Here we create roots for fixed stubs. They are needed at GC |
| 1262 // for cooking and uncooking (check out frames.cc). | 1287 // for cooking and uncooking (check out frames.cc). |
| 1263 // The eliminates the need for doing dictionary lookup in the | 1288 // The eliminates the need for doing dictionary lookup in the |
| 1264 // stub cache for these stubs. | 1289 // stub cache for these stubs. |
| 1265 HandleScope scope; | 1290 HandleScope scope; |
| 1266 { | 1291 // gcc-4.4 has problem to generate the correct vtables if the following |
|
Erik Corry
2009/06/24 07:38:31
Should be "gcc-4.4 has problems generating..."
I
| |
| 1267 CEntryStub stub; | 1292 // functions are inlined. e.g., |
| 1268 c_entry_code_ = *stub.GetCode(); | 1293 // { CEntryStub stub; |
| 1269 } | 1294 // c_entry_code_ = *stub.GetCode(); |
| 1270 { | 1295 // } |
| 1271 CEntryDebugBreakStub stub; | 1296 // { CEntryDebugBreakStub stub; |
| 1272 c_entry_debug_break_code_ = *stub.GetCode(); | 1297 // c_entry_debug_break_code_ = *stub.GetCode(); |
| 1273 } | 1298 // } |
| 1274 { | 1299 // |
| 1275 JSEntryStub stub; | 1300 // Possible gcc bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32327 |
|
Erik Corry
2009/06/24 07:38:31
Is this relevant? According to the bug this was f
| |
| 1276 js_entry_code_ = *stub.GetCode(); | 1301 Heap::CreateCEntryStub(); |
| 1277 } | 1302 Heap::CreateCEntryDebugBreakStub(); |
| 1278 { | 1303 Heap::CreateJSEntryStub(); |
| 1279 JSConstructEntryStub stub; | 1304 Heap::CreateJSConstructEntryStub(); |
| 1280 js_construct_entry_code_ = *stub.GetCode(); | |
| 1281 } | |
| 1282 } | 1305 } |
| 1283 | 1306 |
| 1284 | 1307 |
| 1285 bool Heap::CreateInitialObjects() { | 1308 bool Heap::CreateInitialObjects() { |
| 1286 Object* obj; | 1309 Object* obj; |
| 1287 | 1310 |
| 1288 // The -0 value must be set before NumberFromDouble works. | 1311 // The -0 value must be set before NumberFromDouble works. |
| 1289 obj = AllocateHeapNumber(-0.0, TENURED); | 1312 obj = AllocateHeapNumber(-0.0, TENURED); |
| 1290 if (obj->IsFailure()) return false; | 1313 if (obj->IsFailure()) return false; |
| 1291 minus_zero_value_ = obj; | 1314 minus_zero_value_ = obj; |
| (...skipping 2288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3580 #ifdef DEBUG | 3603 #ifdef DEBUG |
| 3581 bool Heap::GarbageCollectionGreedyCheck() { | 3604 bool Heap::GarbageCollectionGreedyCheck() { |
| 3582 ASSERT(FLAG_gc_greedy); | 3605 ASSERT(FLAG_gc_greedy); |
| 3583 if (Bootstrapper::IsActive()) return true; | 3606 if (Bootstrapper::IsActive()) return true; |
| 3584 if (disallow_allocation_failure()) return true; | 3607 if (disallow_allocation_failure()) return true; |
| 3585 return CollectGarbage(0, NEW_SPACE); | 3608 return CollectGarbage(0, NEW_SPACE); |
| 3586 } | 3609 } |
| 3587 #endif | 3610 #endif |
| 3588 | 3611 |
| 3589 } } // namespace v8::internal | 3612 } } // namespace v8::internal |
| OLD | NEW |