| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 JSFunction* function = JSFunction::cast( | 182 JSFunction* function = JSFunction::cast( |
| 183 Heap::AllocateFunction(*Top::function_map(), | 183 Heap::AllocateFunction(*Top::function_map(), |
| 184 function_share, | 184 function_share, |
| 185 Heap::undefined_value())->ToObjectChecked()); | 185 Heap::undefined_value())->ToObjectChecked()); |
| 186 Map* initial_map = | 186 Map* initial_map = |
| 187 Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, | 187 Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, |
| 188 JSObject::kHeaderSize)->ToObjectChecked()); | 188 JSObject::kHeaderSize)->ToObjectChecked()); |
| 189 function->set_initial_map(initial_map); | 189 function->set_initial_map(initial_map); |
| 190 Top::context()->global()->SetProperty(func_name, | 190 Top::context()->global()->SetProperty(func_name, |
| 191 function, | 191 function, |
| 192 NONE)->ToObjectChecked(); | 192 NONE, |
| 193 kNonStrictMode)->ToObjectChecked(); |
| 193 | 194 |
| 194 JSObject* obj = | 195 JSObject* obj = |
| 195 JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); | 196 JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); |
| 196 Heap::CollectGarbage(OLD_POINTER_SPACE); | 197 Heap::CollectGarbage(OLD_POINTER_SPACE); |
| 197 | 198 |
| 198 func_name = | 199 func_name = |
| 199 String::cast(Heap::LookupAsciiSymbol("theFunction")->ToObjectChecked()); | 200 String::cast(Heap::LookupAsciiSymbol("theFunction")->ToObjectChecked()); |
| 200 CHECK(Top::context()->global()->HasLocalProperty(func_name)); | 201 CHECK(Top::context()->global()->HasLocalProperty(func_name)); |
| 201 Object* func_value = | 202 Object* func_value = |
| 202 Top::context()->global()->GetProperty(func_name)->ToObjectChecked(); | 203 Top::context()->global()->GetProperty(func_name)->ToObjectChecked(); |
| 203 CHECK(func_value->IsJSFunction()); | 204 CHECK(func_value->IsJSFunction()); |
| 204 function = JSFunction::cast(func_value); | 205 function = JSFunction::cast(func_value); |
| 205 | 206 |
| 206 obj = JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); | 207 obj = JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); |
| 207 String* obj_name = | 208 String* obj_name = |
| 208 String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); | 209 String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); |
| 209 Top::context()->global()->SetProperty(obj_name, | 210 Top::context()->global()->SetProperty(obj_name, |
| 210 obj, | 211 obj, |
| 211 NONE)->ToObjectChecked(); | 212 NONE, |
| 213 kNonStrictMode)->ToObjectChecked(); |
| 212 String* prop_name = | 214 String* prop_name = |
| 213 String::cast(Heap::LookupAsciiSymbol("theSlot")->ToObjectChecked()); | 215 String::cast(Heap::LookupAsciiSymbol("theSlot")->ToObjectChecked()); |
| 214 obj->SetProperty(prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); | 216 obj->SetProperty(prop_name, |
| 217 Smi::FromInt(23), |
| 218 NONE, |
| 219 kNonStrictMode)->ToObjectChecked(); |
| 215 | 220 |
| 216 Heap::CollectGarbage(OLD_POINTER_SPACE); | 221 Heap::CollectGarbage(OLD_POINTER_SPACE); |
| 217 | 222 |
| 218 obj_name = | 223 obj_name = |
| 219 String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); | 224 String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); |
| 220 CHECK(Top::context()->global()->HasLocalProperty(obj_name)); | 225 CHECK(Top::context()->global()->HasLocalProperty(obj_name)); |
| 221 CHECK(Top::context()->global()-> | 226 CHECK(Top::context()->global()-> |
| 222 GetProperty(obj_name)->ToObjectChecked()->IsJSObject()); | 227 GetProperty(obj_name)->ToObjectChecked()->IsJSObject()); |
| 223 obj = JSObject::cast( | 228 obj = JSObject::cast( |
| 224 Top::context()->global()->GetProperty(obj_name)->ToObjectChecked()); | 229 Top::context()->global()->GetProperty(obj_name)->ToObjectChecked()); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 Object** g2_objects[] = { g2s1.location(), g2s2.location() }; | 359 Object** g2_objects[] = { g2s1.location(), g2s2.location() }; |
| 355 GlobalHandles::AddGroup(g1_objects, 2); | 360 GlobalHandles::AddGroup(g1_objects, 2); |
| 356 GlobalHandles::AddGroup(g2_objects, 2); | 361 GlobalHandles::AddGroup(g2_objects, 2); |
| 357 } | 362 } |
| 358 | 363 |
| 359 Heap::CollectGarbage(OLD_POINTER_SPACE); | 364 Heap::CollectGarbage(OLD_POINTER_SPACE); |
| 360 | 365 |
| 361 // All objects should be gone. 5 global handles in total. | 366 // All objects should be gone. 5 global handles in total. |
| 362 CHECK_EQ(5, NumberOfWeakCalls); | 367 CHECK_EQ(5, NumberOfWeakCalls); |
| 363 } | 368 } |
| OLD | NEW |