Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: src/code-stubs-hydrogen.cc

Issue 23729006: thread isolate for files starting with 'b' and 'c' (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: remaining arches Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/code-stubs.cc ('k') | src/codegen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 current_block()->Finish(hreturn_instruction); 210 current_block()->Finish(hreturn_instruction);
211 set_current_block(NULL); 211 set_current_block(NULL);
212 } 212 }
213 return true; 213 return true;
214 } 214 }
215 215
216 216
217 template <class Stub> 217 template <class Stub>
218 class CodeStubGraphBuilder: public CodeStubGraphBuilderBase { 218 class CodeStubGraphBuilder: public CodeStubGraphBuilderBase {
219 public: 219 public:
220 explicit CodeStubGraphBuilder(Stub* stub) 220 explicit CodeStubGraphBuilder(Isolate* isolate, Stub* stub)
221 : CodeStubGraphBuilderBase(Isolate::Current(), stub) {} 221 : CodeStubGraphBuilderBase(isolate, stub) {}
222 222
223 protected: 223 protected:
224 virtual HValue* BuildCodeStub() { 224 virtual HValue* BuildCodeStub() {
225 if (casted_stub()->IsUninitialized()) { 225 if (casted_stub()->IsUninitialized()) {
226 return BuildCodeUninitializedStub(); 226 return BuildCodeUninitializedStub();
227 } else { 227 } else {
228 return BuildCodeInitializedStub(); 228 return BuildCodeInitializedStub();
229 } 229 }
230 } 230 }
231 231
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 GetExtraICState(), 278 GetExtraICState(),
279 GetStubType(), 279 GetStubType(),
280 GetStubFlags()); 280 GetStubFlags());
281 Handle<Code> new_object = factory->NewCode( 281 Handle<Code> new_object = factory->NewCode(
282 desc, flags, masm.CodeObject(), NeedsImmovableCode()); 282 desc, flags, masm.CodeObject(), NeedsImmovableCode());
283 return new_object; 283 return new_object;
284 } 284 }
285 285
286 286
287 template <class Stub> 287 template <class Stub>
288 static Handle<Code> DoGenerateCode(Stub* stub) { 288 static Handle<Code> DoGenerateCode(Isolate* isolate, Stub* stub) {
289 Isolate* isolate = Isolate::Current();
290 CodeStub::Major major_key = 289 CodeStub::Major major_key =
291 static_cast<HydrogenCodeStub*>(stub)->MajorKey(); 290 static_cast<HydrogenCodeStub*>(stub)->MajorKey();
292 CodeStubInterfaceDescriptor* descriptor = 291 CodeStubInterfaceDescriptor* descriptor =
293 isolate->code_stub_interface_descriptor(major_key); 292 isolate->code_stub_interface_descriptor(major_key);
294 if (descriptor->register_param_count_ < 0) { 293 if (descriptor->register_param_count_ < 0) {
295 stub->InitializeInterfaceDescriptor(isolate, descriptor); 294 stub->InitializeInterfaceDescriptor(isolate, descriptor);
296 } 295 }
297 296
298 // If we are uninitialized we can use a light-weight stub to enter 297 // If we are uninitialized we can use a light-weight stub to enter
299 // the runtime that is significantly faster than using the standard 298 // the runtime that is significantly faster than using the standard
300 // stub-failure deopt mechanism. 299 // stub-failure deopt mechanism.
301 if (stub->IsUninitialized() && descriptor->has_miss_handler()) { 300 if (stub->IsUninitialized() && descriptor->has_miss_handler()) {
302 ASSERT(descriptor->stack_parameter_count_ == NULL); 301 ASSERT(descriptor->stack_parameter_count_ == NULL);
303 return stub->GenerateLightweightMissCode(isolate); 302 return stub->GenerateLightweightMissCode(isolate);
304 } 303 }
305 CodeStubGraphBuilder<Stub> builder(stub); 304 CodeStubGraphBuilder<Stub> builder(isolate, stub);
306 LChunk* chunk = OptimizeGraph(builder.CreateGraph()); 305 LChunk* chunk = OptimizeGraph(builder.CreateGraph());
307 return chunk->Codegen(); 306 return chunk->Codegen();
308 } 307 }
309 308
310 309
311 template <> 310 template <>
312 HValue* CodeStubGraphBuilder<ToNumberStub>::BuildCodeStub() { 311 HValue* CodeStubGraphBuilder<ToNumberStub>::BuildCodeStub() {
313 HValue* value = GetParameter(0); 312 HValue* value = GetParameter(0);
314 313
315 // Check if the parameter is already a SMI or heap number. 314 // Check if the parameter is already a SMI or heap number.
(...skipping 11 matching lines...) Expand all
327 HValue* function = AddLoadJSBuiltin(Builtins::TO_NUMBER); 326 HValue* function = AddLoadJSBuiltin(Builtins::TO_NUMBER);
328 Add<HPushArgument>(value); 327 Add<HPushArgument>(value);
329 Push(Add<HInvokeFunction>(function, 1)); 328 Push(Add<HInvokeFunction>(function, 1));
330 329
331 if_number.End(); 330 if_number.End();
332 331
333 return Pop(); 332 return Pop();
334 } 333 }
335 334
336 335
337 Handle<Code> ToNumberStub::GenerateCode() { 336 Handle<Code> ToNumberStub::GenerateCode(Isolate* isolate) {
338 return DoGenerateCode(this); 337 return DoGenerateCode(isolate, this);
339 } 338 }
340 339
341 340
342 template <> 341 template <>
343 HValue* CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub() { 342 HValue* CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub() {
344 Factory* factory = isolate()->factory(); 343 Factory* factory = isolate()->factory();
345 HValue* undefined = graph()->GetConstantUndefined(); 344 HValue* undefined = graph()->GetConstantUndefined();
346 AllocationSiteMode alloc_site_mode = casted_stub()->allocation_site_mode(); 345 AllocationSiteMode alloc_site_mode = casted_stub()->allocation_site_mode();
347 FastCloneShallowArrayStub::Mode mode = casted_stub()->mode(); 346 FastCloneShallowArrayStub::Mode mode = casted_stub()->mode();
348 int length = casted_stub()->length(); 347 int length = casted_stub()->length();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 length)); 393 length));
395 } 394 }
396 395
397 checker.ElseDeopt("Uninitialized boilerplate literals"); 396 checker.ElseDeopt("Uninitialized boilerplate literals");
398 checker.End(); 397 checker.End();
399 398
400 return environment()->Pop(); 399 return environment()->Pop();
401 } 400 }
402 401
403 402
404 Handle<Code> FastCloneShallowArrayStub::GenerateCode() { 403 Handle<Code> FastCloneShallowArrayStub::GenerateCode(Isolate* isolate) {
405 return DoGenerateCode(this); 404 return DoGenerateCode(isolate, this);
406 } 405 }
407 406
408 407
409 template <> 408 template <>
410 HValue* CodeStubGraphBuilder<FastCloneShallowObjectStub>::BuildCodeStub() { 409 HValue* CodeStubGraphBuilder<FastCloneShallowObjectStub>::BuildCodeStub() {
411 Zone* zone = this->zone(); 410 Zone* zone = this->zone();
412 HValue* undefined = graph()->GetConstantUndefined(); 411 HValue* undefined = graph()->GetConstantUndefined();
413 412
414 HInstruction* boilerplate = Add<HLoadKeyed>(GetParameter(0), 413 HInstruction* boilerplate = Add<HLoadKeyed>(GetParameter(0),
415 GetParameter(1), 414 GetParameter(1),
(...skipping 25 matching lines...) Expand all
441 } 440 }
442 441
443 environment()->Push(object); 442 environment()->Push(object);
444 checker.ElseDeopt("Uninitialized boilerplate in fast clone"); 443 checker.ElseDeopt("Uninitialized boilerplate in fast clone");
445 checker.End(); 444 checker.End();
446 445
447 return environment()->Pop(); 446 return environment()->Pop();
448 } 447 }
449 448
450 449
451 Handle<Code> FastCloneShallowObjectStub::GenerateCode() { 450 Handle<Code> FastCloneShallowObjectStub::GenerateCode(Isolate* isolate) {
452 return DoGenerateCode(this); 451 return DoGenerateCode(isolate, this);
453 } 452 }
454 453
455 454
456 template <> 455 template <>
457 HValue* CodeStubGraphBuilder<CreateAllocationSiteStub>::BuildCodeStub() { 456 HValue* CodeStubGraphBuilder<CreateAllocationSiteStub>::BuildCodeStub() {
458 HValue* size = Add<HConstant>(AllocationSite::kSize); 457 HValue* size = Add<HConstant>(AllocationSite::kSize);
459 HInstruction* object = Add<HAllocate>(size, HType::JSObject(), TENURED, 458 HInstruction* object = Add<HAllocate>(size, HType::JSObject(), TENURED,
460 JS_OBJECT_TYPE); 459 JS_OBJECT_TYPE);
461 460
462 // Store the map 461 // Store the map
(...skipping 24 matching lines...) Expand all
487 // TODO(mvstanton): Add a debug_code check to verify the input cell is really 486 // TODO(mvstanton): Add a debug_code check to verify the input cell is really
488 // a cell. (perhaps with a new instruction, HAssert). 487 // a cell. (perhaps with a new instruction, HAssert).
489 HInstruction* cell = GetParameter(0); 488 HInstruction* cell = GetParameter(0);
490 HObjectAccess access = HObjectAccess::ForCellValue(); 489 HObjectAccess access = HObjectAccess::ForCellValue();
491 store = Add<HStoreNamedField>(cell, access, object); 490 store = Add<HStoreNamedField>(cell, access, object);
492 store->SkipWriteBarrier(); 491 store->SkipWriteBarrier();
493 return cell; 492 return cell;
494 } 493 }
495 494
496 495
497 Handle<Code> CreateAllocationSiteStub::GenerateCode() { 496 Handle<Code> CreateAllocationSiteStub::GenerateCode(Isolate* isolate) {
498 return DoGenerateCode(this); 497 return DoGenerateCode(isolate, this);
499 } 498 }
500 499
501 500
502 template <> 501 template <>
503 HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() { 502 HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() {
504 HInstruction* load = BuildUncheckedMonomorphicElementAccess( 503 HInstruction* load = BuildUncheckedMonomorphicElementAccess(
505 GetParameter(0), GetParameter(1), NULL, 504 GetParameter(0), GetParameter(1), NULL,
506 casted_stub()->is_js_array(), casted_stub()->elements_kind(), 505 casted_stub()->is_js_array(), casted_stub()->elements_kind(),
507 false, NEVER_RETURN_HOLE, STANDARD_STORE); 506 false, NEVER_RETURN_HOLE, STANDARD_STORE);
508 return load; 507 return load;
509 } 508 }
510 509
511 510
512 Handle<Code> KeyedLoadFastElementStub::GenerateCode() { 511 Handle<Code> KeyedLoadFastElementStub::GenerateCode(Isolate* isolate) {
513 return DoGenerateCode(this); 512 return DoGenerateCode(isolate, this);
514 } 513 }
515 514
516 515
517 template<> 516 template<>
518 HValue* CodeStubGraphBuilder<LoadFieldStub>::BuildCodeStub() { 517 HValue* CodeStubGraphBuilder<LoadFieldStub>::BuildCodeStub() {
519 Representation rep = casted_stub()->representation(); 518 Representation rep = casted_stub()->representation();
520 HObjectAccess access = casted_stub()->is_inobject() ? 519 HObjectAccess access = casted_stub()->is_inobject() ?
521 HObjectAccess::ForJSObjectOffset(casted_stub()->offset(), rep) : 520 HObjectAccess::ForJSObjectOffset(casted_stub()->offset(), rep) :
522 HObjectAccess::ForBackingStoreOffset(casted_stub()->offset(), rep); 521 HObjectAccess::ForBackingStoreOffset(casted_stub()->offset(), rep);
523 return AddInstruction(BuildLoadNamedField(GetParameter(0), access)); 522 return AddInstruction(BuildLoadNamedField(GetParameter(0), access));
524 } 523 }
525 524
526 525
527 Handle<Code> LoadFieldStub::GenerateCode() { 526 Handle<Code> LoadFieldStub::GenerateCode(Isolate* isolate) {
528 return DoGenerateCode(this); 527 return DoGenerateCode(isolate, this);
529 } 528 }
530 529
531 530
532 template<> 531 template<>
533 HValue* CodeStubGraphBuilder<KeyedLoadFieldStub>::BuildCodeStub() { 532 HValue* CodeStubGraphBuilder<KeyedLoadFieldStub>::BuildCodeStub() {
534 Representation rep = casted_stub()->representation(); 533 Representation rep = casted_stub()->representation();
535 HObjectAccess access = casted_stub()->is_inobject() ? 534 HObjectAccess access = casted_stub()->is_inobject() ?
536 HObjectAccess::ForJSObjectOffset(casted_stub()->offset(), rep) : 535 HObjectAccess::ForJSObjectOffset(casted_stub()->offset(), rep) :
537 HObjectAccess::ForBackingStoreOffset(casted_stub()->offset(), rep); 536 HObjectAccess::ForBackingStoreOffset(casted_stub()->offset(), rep);
538 return AddInstruction(BuildLoadNamedField(GetParameter(0), access)); 537 return AddInstruction(BuildLoadNamedField(GetParameter(0), access));
539 } 538 }
540 539
541 540
542 Handle<Code> KeyedLoadFieldStub::GenerateCode() { 541 Handle<Code> KeyedLoadFieldStub::GenerateCode(Isolate* isolate) {
543 return DoGenerateCode(this); 542 return DoGenerateCode(isolate, this);
544 } 543 }
545 544
546 545
547 template <> 546 template <>
548 HValue* CodeStubGraphBuilder<KeyedStoreFastElementStub>::BuildCodeStub() { 547 HValue* CodeStubGraphBuilder<KeyedStoreFastElementStub>::BuildCodeStub() {
549 BuildUncheckedMonomorphicElementAccess( 548 BuildUncheckedMonomorphicElementAccess(
550 GetParameter(0), GetParameter(1), GetParameter(2), 549 GetParameter(0), GetParameter(1), GetParameter(2),
551 casted_stub()->is_js_array(), casted_stub()->elements_kind(), 550 casted_stub()->is_js_array(), casted_stub()->elements_kind(),
552 true, NEVER_RETURN_HOLE, casted_stub()->store_mode()); 551 true, NEVER_RETURN_HOLE, casted_stub()->store_mode());
553 552
554 return GetParameter(2); 553 return GetParameter(2);
555 } 554 }
556 555
557 556
558 Handle<Code> KeyedStoreFastElementStub::GenerateCode() { 557 Handle<Code> KeyedStoreFastElementStub::GenerateCode(Isolate* isolate) {
559 return DoGenerateCode(this); 558 return DoGenerateCode(isolate, this);
560 } 559 }
561 560
562 561
563 template <> 562 template <>
564 HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() { 563 HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() {
565 info()->MarkAsSavesCallerDoubles(); 564 info()->MarkAsSavesCallerDoubles();
566 565
567 BuildTransitionElementsKind(GetParameter(0), 566 BuildTransitionElementsKind(GetParameter(0),
568 GetParameter(1), 567 GetParameter(1),
569 casted_stub()->from_kind(), 568 casted_stub()->from_kind(),
570 casted_stub()->to_kind(), 569 casted_stub()->to_kind(),
571 true); 570 true);
572 571
573 return GetParameter(0); 572 return GetParameter(0);
574 } 573 }
575 574
576 575
577 Handle<Code> TransitionElementsKindStub::GenerateCode() { 576 Handle<Code> TransitionElementsKindStub::GenerateCode(Isolate* isolate) {
578 return DoGenerateCode(this); 577 return DoGenerateCode(isolate, this);
579 } 578 }
580 579
581 HValue* CodeStubGraphBuilderBase::BuildArrayConstructor( 580 HValue* CodeStubGraphBuilderBase::BuildArrayConstructor(
582 ElementsKind kind, 581 ElementsKind kind,
583 ContextCheckMode context_mode, 582 ContextCheckMode context_mode,
584 AllocationSiteOverrideMode override_mode, 583 AllocationSiteOverrideMode override_mode,
585 ArgumentClass argument_class) { 584 ArgumentClass argument_class) {
586 HValue* constructor = GetParameter(ArrayConstructorStubBase::kConstructor); 585 HValue* constructor = GetParameter(ArrayConstructorStubBase::kConstructor);
587 if (context_mode == CONTEXT_CHECK_REQUIRED) { 586 if (context_mode == CONTEXT_CHECK_REQUIRED) {
588 HInstruction* array_function = BuildGetArrayFunction(); 587 HInstruction* array_function = BuildGetArrayFunction();
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 701
703 template <> 702 template <>
704 HValue* CodeStubGraphBuilder<ArrayNoArgumentConstructorStub>::BuildCodeStub() { 703 HValue* CodeStubGraphBuilder<ArrayNoArgumentConstructorStub>::BuildCodeStub() {
705 ElementsKind kind = casted_stub()->elements_kind(); 704 ElementsKind kind = casted_stub()->elements_kind();
706 ContextCheckMode context_mode = casted_stub()->context_mode(); 705 ContextCheckMode context_mode = casted_stub()->context_mode();
707 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode(); 706 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
708 return BuildArrayConstructor(kind, context_mode, override_mode, NONE); 707 return BuildArrayConstructor(kind, context_mode, override_mode, NONE);
709 } 708 }
710 709
711 710
712 Handle<Code> ArrayNoArgumentConstructorStub::GenerateCode() { 711 Handle<Code> ArrayNoArgumentConstructorStub::GenerateCode(Isolate* isolate) {
713 return DoGenerateCode(this); 712 return DoGenerateCode(isolate, this);
714 } 713 }
715 714
716 715
717 template <> 716 template <>
718 HValue* CodeStubGraphBuilder<ArraySingleArgumentConstructorStub>:: 717 HValue* CodeStubGraphBuilder<ArraySingleArgumentConstructorStub>::
719 BuildCodeStub() { 718 BuildCodeStub() {
720 ElementsKind kind = casted_stub()->elements_kind(); 719 ElementsKind kind = casted_stub()->elements_kind();
721 ContextCheckMode context_mode = casted_stub()->context_mode(); 720 ContextCheckMode context_mode = casted_stub()->context_mode();
722 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode(); 721 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
723 return BuildArrayConstructor(kind, context_mode, override_mode, SINGLE); 722 return BuildArrayConstructor(kind, context_mode, override_mode, SINGLE);
724 } 723 }
725 724
726 725
727 Handle<Code> ArraySingleArgumentConstructorStub::GenerateCode() { 726 Handle<Code> ArraySingleArgumentConstructorStub::GenerateCode(
728 return DoGenerateCode(this); 727 Isolate* isolate) {
728 return DoGenerateCode(isolate, this);
729 } 729 }
730 730
731 731
732 template <> 732 template <>
733 HValue* CodeStubGraphBuilder<ArrayNArgumentsConstructorStub>::BuildCodeStub() { 733 HValue* CodeStubGraphBuilder<ArrayNArgumentsConstructorStub>::BuildCodeStub() {
734 ElementsKind kind = casted_stub()->elements_kind(); 734 ElementsKind kind = casted_stub()->elements_kind();
735 ContextCheckMode context_mode = casted_stub()->context_mode(); 735 ContextCheckMode context_mode = casted_stub()->context_mode();
736 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode(); 736 AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
737 return BuildArrayConstructor(kind, context_mode, override_mode, MULTIPLE); 737 return BuildArrayConstructor(kind, context_mode, override_mode, MULTIPLE);
738 } 738 }
739 739
740 740
741 Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode() { 741 Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode(Isolate* isolate) {
742 return DoGenerateCode(this); 742 return DoGenerateCode(isolate, this);
743 } 743 }
744 744
745 745
746 template <> 746 template <>
747 HValue* CodeStubGraphBuilder<InternalArrayNoArgumentConstructorStub>:: 747 HValue* CodeStubGraphBuilder<InternalArrayNoArgumentConstructorStub>::
748 BuildCodeStub() { 748 BuildCodeStub() {
749 ElementsKind kind = casted_stub()->elements_kind(); 749 ElementsKind kind = casted_stub()->elements_kind();
750 return BuildInternalArrayConstructor(kind, NONE); 750 return BuildInternalArrayConstructor(kind, NONE);
751 } 751 }
752 752
753 753
754 Handle<Code> InternalArrayNoArgumentConstructorStub::GenerateCode() { 754 Handle<Code> InternalArrayNoArgumentConstructorStub::GenerateCode(
755 return DoGenerateCode(this); 755 Isolate* isolate) {
756 return DoGenerateCode(isolate, this);
756 } 757 }
757 758
758 759
759 template <> 760 template <>
760 HValue* CodeStubGraphBuilder<InternalArraySingleArgumentConstructorStub>:: 761 HValue* CodeStubGraphBuilder<InternalArraySingleArgumentConstructorStub>::
761 BuildCodeStub() { 762 BuildCodeStub() {
762 ElementsKind kind = casted_stub()->elements_kind(); 763 ElementsKind kind = casted_stub()->elements_kind();
763 return BuildInternalArrayConstructor(kind, SINGLE); 764 return BuildInternalArrayConstructor(kind, SINGLE);
764 } 765 }
765 766
766 767
767 Handle<Code> InternalArraySingleArgumentConstructorStub::GenerateCode() { 768 Handle<Code> InternalArraySingleArgumentConstructorStub::GenerateCode(
768 return DoGenerateCode(this); 769 Isolate* isolate) {
770 return DoGenerateCode(isolate, this);
769 } 771 }
770 772
771 773
772 template <> 774 template <>
773 HValue* CodeStubGraphBuilder<InternalArrayNArgumentsConstructorStub>:: 775 HValue* CodeStubGraphBuilder<InternalArrayNArgumentsConstructorStub>::
774 BuildCodeStub() { 776 BuildCodeStub() {
775 ElementsKind kind = casted_stub()->elements_kind(); 777 ElementsKind kind = casted_stub()->elements_kind();
776 return BuildInternalArrayConstructor(kind, MULTIPLE); 778 return BuildInternalArrayConstructor(kind, MULTIPLE);
777 } 779 }
778 780
779 781
780 Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode() { 782 Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode(
781 return DoGenerateCode(this); 783 Isolate* isolate) {
784 return DoGenerateCode(isolate, this);
782 } 785 }
783 786
784 787
785 template <> 788 template <>
786 HValue* CodeStubGraphBuilder<CompareNilICStub>::BuildCodeInitializedStub() { 789 HValue* CodeStubGraphBuilder<CompareNilICStub>::BuildCodeInitializedStub() {
787 Isolate* isolate = graph()->isolate(); 790 Isolate* isolate = graph()->isolate();
788 CompareNilICStub* stub = casted_stub(); 791 CompareNilICStub* stub = casted_stub();
789 HIfContinuation continuation; 792 HIfContinuation continuation;
790 Handle<Map> sentinel_map(isolate->heap()->meta_map()); 793 Handle<Map> sentinel_map(isolate->heap()->meta_map());
791 Handle<Type> type = stub->GetType(isolate, sentinel_map); 794 Handle<Type> type = stub->GetType(isolate, sentinel_map);
792 BuildCompareNil(GetParameter(0), type, RelocInfo::kNoPosition, &continuation); 795 BuildCompareNil(GetParameter(0), type, RelocInfo::kNoPosition, &continuation);
793 IfBuilder if_nil(this, &continuation); 796 IfBuilder if_nil(this, &continuation);
794 if_nil.Then(); 797 if_nil.Then();
795 if (continuation.IsFalseReachable()) { 798 if (continuation.IsFalseReachable()) {
796 if_nil.Else(); 799 if_nil.Else();
797 if_nil.Return(graph()->GetConstant0()); 800 if_nil.Return(graph()->GetConstant0());
798 } 801 }
799 if_nil.End(); 802 if_nil.End();
800 return continuation.IsTrueReachable() 803 return continuation.IsTrueReachable()
801 ? graph()->GetConstant1() 804 ? graph()->GetConstant1()
802 : graph()->GetConstantUndefined(); 805 : graph()->GetConstantUndefined();
803 } 806 }
804 807
805 808
806 Handle<Code> CompareNilICStub::GenerateCode() { 809 Handle<Code> CompareNilICStub::GenerateCode(Isolate* isolate) {
807 return DoGenerateCode(this); 810 return DoGenerateCode(isolate, this);
808 } 811 }
809 812
810 813
811 template <> 814 template <>
812 HValue* CodeStubGraphBuilder<ToBooleanStub>::BuildCodeInitializedStub() { 815 HValue* CodeStubGraphBuilder<ToBooleanStub>::BuildCodeInitializedStub() {
813 ToBooleanStub* stub = casted_stub(); 816 ToBooleanStub* stub = casted_stub();
814 817
815 IfBuilder if_true(this); 818 IfBuilder if_true(this);
816 if_true.If<HBranch>(GetParameter(0), stub->GetTypes()); 819 if_true.If<HBranch>(GetParameter(0), stub->GetTypes());
817 if_true.Then(); 820 if_true.Then();
818 if_true.Return(graph()->GetConstant1()); 821 if_true.Return(graph()->GetConstant1());
819 if_true.Else(); 822 if_true.Else();
820 if_true.End(); 823 if_true.End();
821 return graph()->GetConstant0(); 824 return graph()->GetConstant0();
822 } 825 }
823 826
824 827
825 Handle<Code> ToBooleanStub::GenerateCode() { 828 Handle<Code> ToBooleanStub::GenerateCode(Isolate* isolate) {
826 return DoGenerateCode(this); 829 return DoGenerateCode(isolate, this);
827 } 830 }
828 831
829 832
830 template <> 833 template <>
831 HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() { 834 HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() {
832 StoreGlobalStub* stub = casted_stub(); 835 StoreGlobalStub* stub = casted_stub();
833 Handle<Object> hole(isolate()->heap()->the_hole_value(), isolate()); 836 Handle<Object> hole(isolate()->heap()->the_hole_value(), isolate());
834 Handle<Object> placeholer_value(Smi::FromInt(0), isolate()); 837 Handle<Object> placeholer_value(Smi::FromInt(0), isolate());
835 Handle<PropertyCell> placeholder_cell = 838 Handle<PropertyCell> placeholder_cell =
836 isolate()->factory()->NewPropertyCell(placeholer_value); 839 isolate()->factory()->NewPropertyCell(placeholer_value);
(...skipping 27 matching lines...) Expand all
864 builder.Deopt("Unexpected cell contents in global store"); 867 builder.Deopt("Unexpected cell contents in global store");
865 builder.Else(); 868 builder.Else();
866 Add<HStoreNamedField>(cell, access, value); 869 Add<HStoreNamedField>(cell, access, value);
867 builder.End(); 870 builder.End();
868 } 871 }
869 872
870 return value; 873 return value;
871 } 874 }
872 875
873 876
874 Handle<Code> StoreGlobalStub::GenerateCode() { 877 Handle<Code> StoreGlobalStub::GenerateCode(Isolate* isolate) {
875 return DoGenerateCode(this); 878 return DoGenerateCode(isolate, this);
876 } 879 }
877 880
878 881
879 template<> 882 template<>
880 HValue* CodeStubGraphBuilder<ElementsTransitionAndStoreStub>::BuildCodeStub() { 883 HValue* CodeStubGraphBuilder<ElementsTransitionAndStoreStub>::BuildCodeStub() {
881 HValue* value = GetParameter(0); 884 HValue* value = GetParameter(0);
882 HValue* map = GetParameter(1); 885 HValue* map = GetParameter(1);
883 HValue* key = GetParameter(2); 886 HValue* key = GetParameter(2);
884 HValue* object = GetParameter(3); 887 HValue* object = GetParameter(3);
885 888
(...skipping 13 matching lines...) Expand all
899 casted_stub()->is_jsarray(), 902 casted_stub()->is_jsarray(),
900 casted_stub()->to_kind(), 903 casted_stub()->to_kind(),
901 true, ALLOW_RETURN_HOLE, 904 true, ALLOW_RETURN_HOLE,
902 casted_stub()->store_mode()); 905 casted_stub()->store_mode());
903 } 906 }
904 907
905 return value; 908 return value;
906 } 909 }
907 910
908 911
909 Handle<Code> ElementsTransitionAndStoreStub::GenerateCode() { 912 Handle<Code> ElementsTransitionAndStoreStub::GenerateCode(Isolate* isolate) {
910 return DoGenerateCode(this); 913 return DoGenerateCode(isolate, this);
911 } 914 }
912 915
913 916
914 void CodeStubGraphBuilderBase::BuildInstallOptimizedCode( 917 void CodeStubGraphBuilderBase::BuildInstallOptimizedCode(
915 HValue* js_function, 918 HValue* js_function,
916 HValue* native_context, 919 HValue* native_context,
917 HValue* code_object) { 920 HValue* code_object) {
918 Counters* counters = isolate()->counters(); 921 Counters* counters = isolate()->counters();
919 AddIncrementCounter(counters->fast_new_closure_install_optimized(), 922 AddIncrementCounter(counters->fast_new_closure_install_optimized(),
920 context()); 923 context());
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 if (FLAG_cache_optimized_code) { 1092 if (FLAG_cache_optimized_code) {
1090 BuildInstallFromOptimizedCodeMap(js_function, shared_info, native_context); 1093 BuildInstallFromOptimizedCodeMap(js_function, shared_info, native_context);
1091 } else { 1094 } else {
1092 BuildInstallCode(js_function, shared_info); 1095 BuildInstallCode(js_function, shared_info);
1093 } 1096 }
1094 1097
1095 return js_function; 1098 return js_function;
1096 } 1099 }
1097 1100
1098 1101
1099 Handle<Code> FastNewClosureStub::GenerateCode() { 1102 Handle<Code> FastNewClosureStub::GenerateCode(Isolate* isolate) {
1100 return DoGenerateCode(this); 1103 return DoGenerateCode(isolate, this);
1101 } 1104 }
1102 1105
1103 1106
1104 } } // namespace v8::internal 1107 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/code-stubs.cc ('k') | src/codegen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698