| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 JSObject::UpdateMapCodeCache(receiver, name, code); | 239 JSObject::UpdateMapCodeCache(receiver, name, code); |
| 240 return code; | 240 return code; |
| 241 } | 241 } |
| 242 | 242 |
| 243 | 243 |
| 244 Handle<Code> StubCache::ComputeLoadNormal() { | 244 Handle<Code> StubCache::ComputeLoadNormal() { |
| 245 return isolate_->builtins()->LoadIC_Normal(); | 245 return isolate_->builtins()->LoadIC_Normal(); |
| 246 } | 246 } |
| 247 | 247 |
| 248 | 248 |
| 249 Handle<Code> LoadStubCompiler::CompileLoadGlobal( | |
| 250 Handle<JSObject> object, | |
| 251 Handle<GlobalObject> holder, | |
| 252 Handle<JSGlobalPropertyCell> cell, | |
| 253 Handle<String> name, | |
| 254 bool is_dont_delete) { | |
| 255 CALL_HEAP_FUNCTION(isolate(), | |
| 256 (set_failure(NULL), | |
| 257 CompileLoadGlobal( | |
| 258 *object, *holder, *cell, *name, is_dont_delete)), | |
| 259 Code); | |
| 260 } | |
| 261 | |
| 262 | |
| 263 Handle<Code> StubCache::ComputeLoadGlobal(Handle<String> name, | 249 Handle<Code> StubCache::ComputeLoadGlobal(Handle<String> name, |
| 264 Handle<JSObject> receiver, | 250 Handle<JSObject> receiver, |
| 265 Handle<GlobalObject> holder, | 251 Handle<GlobalObject> holder, |
| 266 Handle<JSGlobalPropertyCell> cell, | 252 Handle<JSGlobalPropertyCell> cell, |
| 267 bool is_dont_delete) { | 253 bool is_dont_delete) { |
| 268 ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); | 254 ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
| 269 Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, NORMAL); | 255 Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, NORMAL); |
| 270 Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); | 256 Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
| 271 if (probe->IsCode()) return Handle<Code>::cast(probe); | 257 if (probe->IsCode()) return Handle<Code>::cast(probe); |
| 272 | 258 |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 StoreStubCompiler compiler(isolate_, strict_mode); | 445 StoreStubCompiler compiler(isolate_, strict_mode); |
| 460 Handle<Code> code = | 446 Handle<Code> code = |
| 461 compiler.CompileStoreField(receiver, field_index, transition, name); | 447 compiler.CompileStoreField(receiver, field_index, transition, name); |
| 462 PROFILE(isolate_, CodeCreateEvent(Logger::STORE_IC_TAG, *code, *name)); | 448 PROFILE(isolate_, CodeCreateEvent(Logger::STORE_IC_TAG, *code, *name)); |
| 463 GDBJIT(AddCode(GDBJITInterface::STORE_IC, *name, *code)); | 449 GDBJIT(AddCode(GDBJITInterface::STORE_IC, *name, *code)); |
| 464 JSObject::UpdateMapCodeCache(receiver, name, code); | 450 JSObject::UpdateMapCodeCache(receiver, name, code); |
| 465 return code; | 451 return code; |
| 466 } | 452 } |
| 467 | 453 |
| 468 | 454 |
| 469 Handle<Code> KeyedLoadStubCompiler::CompileLoadElement(Handle<Map> map) { | |
| 470 CALL_HEAP_FUNCTION(isolate(), | |
| 471 (set_failure(NULL), CompileLoadElement(*map)), | |
| 472 Code); | |
| 473 } | |
| 474 | |
| 475 | |
| 476 Handle<Code> KeyedStoreStubCompiler::CompileStoreElement(Handle<Map> map) { | 455 Handle<Code> KeyedStoreStubCompiler::CompileStoreElement(Handle<Map> map) { |
| 477 CALL_HEAP_FUNCTION(isolate(), | 456 CALL_HEAP_FUNCTION(isolate(), |
| 478 (set_failure(NULL), | 457 (set_failure(NULL), |
| 479 CompileStoreElement(*map)), | 458 CompileStoreElement(*map)), |
| 480 Code); | 459 Code); |
| 481 } | 460 } |
| 482 | 461 |
| 483 | 462 |
| 484 Handle<Code> StubCache::ComputeKeyedLoadOrStoreElement( | 463 Handle<Code> StubCache::ComputeKeyedLoadOrStoreElement( |
| 485 Handle<JSObject> receiver, | 464 Handle<JSObject> receiver, |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 if (stub_kind == KeyedIC::LOAD) { | 508 if (stub_kind == KeyedIC::LOAD) { |
| 530 PROFILE(isolate_, CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, *code, 0)); | 509 PROFILE(isolate_, CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, *code, 0)); |
| 531 } else { | 510 } else { |
| 532 PROFILE(isolate_, CodeCreateEvent(Logger::KEYED_STORE_IC_TAG, *code, 0)); | 511 PROFILE(isolate_, CodeCreateEvent(Logger::KEYED_STORE_IC_TAG, *code, 0)); |
| 533 } | 512 } |
| 534 JSObject::UpdateMapCodeCache(receiver, name, code); | 513 JSObject::UpdateMapCodeCache(receiver, name, code); |
| 535 return code; | 514 return code; |
| 536 } | 515 } |
| 537 | 516 |
| 538 | 517 |
| 539 Handle<Code> KeyedLoadStubCompiler::CompileLoadPolymorphic( | |
| 540 MapHandleList* receiver_maps, | |
| 541 CodeHandleList* handler_stubs) { | |
| 542 MapList raw_receiver_maps(receiver_maps->length()); | |
| 543 CodeList raw_handler_stubs(handler_stubs->length()); | |
| 544 CALL_HEAP_FUNCTION( | |
| 545 isolate(), | |
| 546 (set_failure(NULL), | |
| 547 raw_receiver_maps.Clear(), | |
| 548 raw_handler_stubs.Clear(), | |
| 549 CompileLoadPolymorphic(UnwrapHandleList(&raw_receiver_maps, | |
| 550 receiver_maps), | |
| 551 UnwrapHandleList(&raw_handler_stubs, | |
| 552 handler_stubs))), | |
| 553 Code); | |
| 554 } | |
| 555 | |
| 556 | |
| 557 Handle<Code> KeyedStoreStubCompiler::CompileStorePolymorphic( | 518 Handle<Code> KeyedStoreStubCompiler::CompileStorePolymorphic( |
| 558 MapHandleList* receiver_maps, | 519 MapHandleList* receiver_maps, |
| 559 CodeHandleList* handler_stubs, | 520 CodeHandleList* handler_stubs, |
| 560 MapHandleList* transitioned_maps) { | 521 MapHandleList* transitioned_maps) { |
| 561 MapList raw_receiver_maps(receiver_maps->length()); | 522 MapList raw_receiver_maps(receiver_maps->length()); |
| 562 CodeList raw_handler_stubs(handler_stubs->length()); | 523 CodeList raw_handler_stubs(handler_stubs->length()); |
| 563 MapList raw_transitioned_maps(transitioned_maps->length()); | 524 MapList raw_transitioned_maps(transitioned_maps->length()); |
| 564 CALL_HEAP_FUNCTION( | 525 CALL_HEAP_FUNCTION( |
| 565 isolate(), | 526 isolate(), |
| 566 (set_failure(NULL), | 527 (set_failure(NULL), |
| (...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1877 expected_receiver_type_ = | 1838 expected_receiver_type_ = |
| 1878 FunctionTemplateInfo::cast(signature->receiver()); | 1839 FunctionTemplateInfo::cast(signature->receiver()); |
| 1879 } | 1840 } |
| 1880 } | 1841 } |
| 1881 | 1842 |
| 1882 is_simple_api_call_ = true; | 1843 is_simple_api_call_ = true; |
| 1883 } | 1844 } |
| 1884 | 1845 |
| 1885 | 1846 |
| 1886 } } // namespace v8::internal | 1847 } } // namespace v8::internal |
| OLD | NEW |