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

Side by Side Diff: src/mips64/lithium-codegen-mips64.cc

Issue 797943002: Consistently use only one of virtual/OVERRIDE/FINAL. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Removed temporary hack. Created 6 years 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
« no previous file with comments | « src/mips64/code-stubs-mips64.h ('k') | src/mips64/lithium-mips64.h » ('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 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/hydrogen-osr.h" 9 #include "src/hydrogen-osr.h"
10 #include "src/ic/ic.h" 10 #include "src/ic/ic.h"
11 #include "src/ic/stub-cache.h" 11 #include "src/ic/stub-cache.h"
12 #include "src/mips64/lithium-codegen-mips64.h" 12 #include "src/mips64/lithium-codegen-mips64.h"
13 #include "src/mips64/lithium-gap-resolver-mips64.h" 13 #include "src/mips64/lithium-gap-resolver-mips64.h"
14 14
15 namespace v8 { 15 namespace v8 {
16 namespace internal { 16 namespace internal {
17 17
18 18
19 class SafepointGenerator FINAL : public CallWrapper { 19 class SafepointGenerator FINAL : public CallWrapper {
20 public: 20 public:
21 SafepointGenerator(LCodeGen* codegen, 21 SafepointGenerator(LCodeGen* codegen,
22 LPointerMap* pointers, 22 LPointerMap* pointers,
23 Safepoint::DeoptMode mode) 23 Safepoint::DeoptMode mode)
24 : codegen_(codegen), 24 : codegen_(codegen),
25 pointers_(pointers), 25 pointers_(pointers),
26 deopt_mode_(mode) { } 26 deopt_mode_(mode) { }
27 virtual ~SafepointGenerator() {} 27 virtual ~SafepointGenerator() {}
28 28
29 virtual void BeforeCall(int call_size) const OVERRIDE {} 29 void BeforeCall(int call_size) const OVERRIDE {}
30 30
31 virtual void AfterCall() const OVERRIDE { 31 void AfterCall() const OVERRIDE {
32 codegen_->RecordSafepoint(pointers_, deopt_mode_); 32 codegen_->RecordSafepoint(pointers_, deopt_mode_);
33 } 33 }
34 34
35 private: 35 private:
36 LCodeGen* codegen_; 36 LCodeGen* codegen_;
37 LPointerMap* pointers_; 37 LPointerMap* pointers_;
38 Safepoint::DeoptMode deopt_mode_; 38 Safepoint::DeoptMode deopt_mode_;
39 }; 39 };
40 40
41 41
(...skipping 2616 matching lines...) Expand 10 before | Expand all | Expand 10 after
2658 __ bind(&done); 2658 __ bind(&done);
2659 } 2659 }
2660 2660
2661 2661
2662 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { 2662 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
2663 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode { 2663 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode {
2664 public: 2664 public:
2665 DeferredInstanceOfKnownGlobal(LCodeGen* codegen, 2665 DeferredInstanceOfKnownGlobal(LCodeGen* codegen,
2666 LInstanceOfKnownGlobal* instr) 2666 LInstanceOfKnownGlobal* instr)
2667 : LDeferredCode(codegen), instr_(instr) { } 2667 : LDeferredCode(codegen), instr_(instr) { }
2668 virtual void Generate() OVERRIDE { 2668 void Generate() OVERRIDE {
2669 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_); 2669 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_);
2670 } 2670 }
2671 virtual LInstruction* instr() OVERRIDE { return instr_; } 2671 LInstruction* instr() OVERRIDE { return instr_; }
2672 Label* map_check() { return &map_check_; } 2672 Label* map_check() { return &map_check_; }
2673 2673
2674 private: 2674 private:
2675 LInstanceOfKnownGlobal* instr_; 2675 LInstanceOfKnownGlobal* instr_;
2676 Label map_check_; 2676 Label map_check_;
2677 }; 2677 };
2678 2678
2679 DeferredInstanceOfKnownGlobal* deferred; 2679 DeferredInstanceOfKnownGlobal* deferred;
2680 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr); 2680 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr);
2681 2681
(...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after
3699 __ bind(&done); 3699 __ bind(&done);
3700 } 3700 }
3701 3701
3702 3702
3703 void LCodeGen::DoMathAbs(LMathAbs* instr) { 3703 void LCodeGen::DoMathAbs(LMathAbs* instr) {
3704 // Class for deferred case. 3704 // Class for deferred case.
3705 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode { 3705 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode {
3706 public: 3706 public:
3707 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen, LMathAbs* instr) 3707 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen, LMathAbs* instr)
3708 : LDeferredCode(codegen), instr_(instr) { } 3708 : LDeferredCode(codegen), instr_(instr) { }
3709 virtual void Generate() OVERRIDE { 3709 void Generate() OVERRIDE {
3710 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_); 3710 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_);
3711 } 3711 }
3712 virtual LInstruction* instr() OVERRIDE { return instr_; } 3712 LInstruction* instr() OVERRIDE { return instr_; }
3713
3713 private: 3714 private:
3714 LMathAbs* instr_; 3715 LMathAbs* instr_;
3715 }; 3716 };
3716 3717
3717 Representation r = instr->hydrogen()->value()->representation(); 3718 Representation r = instr->hydrogen()->value()->representation();
3718 if (r.IsDouble()) { 3719 if (r.IsDouble()) {
3719 FPURegister input = ToDoubleRegister(instr->value()); 3720 FPURegister input = ToDoubleRegister(instr->value());
3720 FPURegister result = ToDoubleRegister(instr->result()); 3721 FPURegister result = ToDoubleRegister(instr->result());
3721 __ abs_d(result, input); 3722 __ abs_d(result, input);
3722 } else if (r.IsSmiOrInteger32()) { 3723 } else if (r.IsSmiOrInteger32()) {
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
4550 instr->hydrogen()->pretenure_flag()); 4551 instr->hydrogen()->pretenure_flag());
4551 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 4552 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
4552 } 4553 }
4553 4554
4554 4555
4555 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) { 4556 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
4556 class DeferredStringCharCodeAt FINAL : public LDeferredCode { 4557 class DeferredStringCharCodeAt FINAL : public LDeferredCode {
4557 public: 4558 public:
4558 DeferredStringCharCodeAt(LCodeGen* codegen, LStringCharCodeAt* instr) 4559 DeferredStringCharCodeAt(LCodeGen* codegen, LStringCharCodeAt* instr)
4559 : LDeferredCode(codegen), instr_(instr) { } 4560 : LDeferredCode(codegen), instr_(instr) { }
4560 virtual void Generate() OVERRIDE { 4561 void Generate() OVERRIDE { codegen()->DoDeferredStringCharCodeAt(instr_); }
4561 codegen()->DoDeferredStringCharCodeAt(instr_); 4562 LInstruction* instr() OVERRIDE { return instr_; }
4562 } 4563
4563 virtual LInstruction* instr() OVERRIDE { return instr_; }
4564 private: 4564 private:
4565 LStringCharCodeAt* instr_; 4565 LStringCharCodeAt* instr_;
4566 }; 4566 };
4567 4567
4568 DeferredStringCharCodeAt* deferred = 4568 DeferredStringCharCodeAt* deferred =
4569 new(zone()) DeferredStringCharCodeAt(this, instr); 4569 new(zone()) DeferredStringCharCodeAt(this, instr);
4570 StringCharLoadGenerator::Generate(masm(), 4570 StringCharLoadGenerator::Generate(masm(),
4571 ToRegister(instr->string()), 4571 ToRegister(instr->string()),
4572 ToRegister(instr->index()), 4572 ToRegister(instr->index()),
4573 ToRegister(instr->result()), 4573 ToRegister(instr->result()),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4605 __ SmiUntag(v0); 4605 __ SmiUntag(v0);
4606 __ StoreToSafepointRegisterSlot(v0, result); 4606 __ StoreToSafepointRegisterSlot(v0, result);
4607 } 4607 }
4608 4608
4609 4609
4610 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) { 4610 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) {
4611 class DeferredStringCharFromCode FINAL : public LDeferredCode { 4611 class DeferredStringCharFromCode FINAL : public LDeferredCode {
4612 public: 4612 public:
4613 DeferredStringCharFromCode(LCodeGen* codegen, LStringCharFromCode* instr) 4613 DeferredStringCharFromCode(LCodeGen* codegen, LStringCharFromCode* instr)
4614 : LDeferredCode(codegen), instr_(instr) { } 4614 : LDeferredCode(codegen), instr_(instr) { }
4615 virtual void Generate() OVERRIDE { 4615 void Generate() OVERRIDE {
4616 codegen()->DoDeferredStringCharFromCode(instr_); 4616 codegen()->DoDeferredStringCharFromCode(instr_);
4617 } 4617 }
4618 virtual LInstruction* instr() OVERRIDE { return instr_; } 4618 LInstruction* instr() OVERRIDE { return instr_; }
4619
4619 private: 4620 private:
4620 LStringCharFromCode* instr_; 4621 LStringCharFromCode* instr_;
4621 }; 4622 };
4622 4623
4623 DeferredStringCharFromCode* deferred = 4624 DeferredStringCharFromCode* deferred =
4624 new(zone()) DeferredStringCharFromCode(this, instr); 4625 new(zone()) DeferredStringCharFromCode(this, instr);
4625 4626
4626 DCHECK(instr->hydrogen()->value()->representation().IsInteger32()); 4627 DCHECK(instr->hydrogen()->value()->representation().IsInteger32());
4627 Register char_code = ToRegister(instr->char_code()); 4628 Register char_code = ToRegister(instr->char_code());
4628 Register result = ToRegister(instr->result()); 4629 Register result = ToRegister(instr->result());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4683 __ mtc1(ToRegister(input), dbl_scratch); 4684 __ mtc1(ToRegister(input), dbl_scratch);
4684 __ Cvt_d_uw(ToDoubleRegister(output), dbl_scratch, f22); // TODO(plind): f22? 4685 __ Cvt_d_uw(ToDoubleRegister(output), dbl_scratch, f22); // TODO(plind): f22?
4685 } 4686 }
4686 4687
4687 4688
4688 void LCodeGen::DoNumberTagU(LNumberTagU* instr) { 4689 void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
4689 class DeferredNumberTagU FINAL : public LDeferredCode { 4690 class DeferredNumberTagU FINAL : public LDeferredCode {
4690 public: 4691 public:
4691 DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr) 4692 DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr)
4692 : LDeferredCode(codegen), instr_(instr) { } 4693 : LDeferredCode(codegen), instr_(instr) { }
4693 virtual void Generate() OVERRIDE { 4694 void Generate() OVERRIDE {
4694 codegen()->DoDeferredNumberTagIU(instr_, 4695 codegen()->DoDeferredNumberTagIU(instr_,
4695 instr_->value(), 4696 instr_->value(),
4696 instr_->temp1(), 4697 instr_->temp1(),
4697 instr_->temp2(), 4698 instr_->temp2(),
4698 UNSIGNED_INT32); 4699 UNSIGNED_INT32);
4699 } 4700 }
4700 virtual LInstruction* instr() OVERRIDE { return instr_; } 4701 LInstruction* instr() OVERRIDE { return instr_; }
4702
4701 private: 4703 private:
4702 LNumberTagU* instr_; 4704 LNumberTagU* instr_;
4703 }; 4705 };
4704 4706
4705 Register input = ToRegister(instr->value()); 4707 Register input = ToRegister(instr->value());
4706 Register result = ToRegister(instr->result()); 4708 Register result = ToRegister(instr->result());
4707 4709
4708 DeferredNumberTagU* deferred = new(zone()) DeferredNumberTagU(this, instr); 4710 DeferredNumberTagU* deferred = new(zone()) DeferredNumberTagU(this, instr);
4709 __ Branch(deferred->entry(), hi, input, Operand(Smi::kMaxValue)); 4711 __ Branch(deferred->entry(), hi, input, Operand(Smi::kMaxValue));
4710 __ SmiTag(result, input); 4712 __ SmiTag(result, input);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
4773 __ bind(&done); 4775 __ bind(&done);
4774 __ sdc1(dbl_scratch, FieldMemOperand(dst, HeapNumber::kValueOffset)); 4776 __ sdc1(dbl_scratch, FieldMemOperand(dst, HeapNumber::kValueOffset));
4775 } 4777 }
4776 4778
4777 4779
4778 void LCodeGen::DoNumberTagD(LNumberTagD* instr) { 4780 void LCodeGen::DoNumberTagD(LNumberTagD* instr) {
4779 class DeferredNumberTagD FINAL : public LDeferredCode { 4781 class DeferredNumberTagD FINAL : public LDeferredCode {
4780 public: 4782 public:
4781 DeferredNumberTagD(LCodeGen* codegen, LNumberTagD* instr) 4783 DeferredNumberTagD(LCodeGen* codegen, LNumberTagD* instr)
4782 : LDeferredCode(codegen), instr_(instr) { } 4784 : LDeferredCode(codegen), instr_(instr) { }
4783 virtual void Generate() OVERRIDE { 4785 void Generate() OVERRIDE { codegen()->DoDeferredNumberTagD(instr_); }
4784 codegen()->DoDeferredNumberTagD(instr_); 4786 LInstruction* instr() OVERRIDE { return instr_; }
4785 } 4787
4786 virtual LInstruction* instr() OVERRIDE { return instr_; }
4787 private: 4788 private:
4788 LNumberTagD* instr_; 4789 LNumberTagD* instr_;
4789 }; 4790 };
4790 4791
4791 DoubleRegister input_reg = ToDoubleRegister(instr->value()); 4792 DoubleRegister input_reg = ToDoubleRegister(instr->value());
4792 Register scratch = scratch0(); 4793 Register scratch = scratch0();
4793 Register reg = ToRegister(instr->result()); 4794 Register reg = ToRegister(instr->result());
4794 Register temp1 = ToRegister(instr->temp()); 4795 Register temp1 = ToRegister(instr->temp());
4795 Register temp2 = ToRegister(instr->temp2()); 4796 Register temp2 = ToRegister(instr->temp2());
4796 4797
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
4999 } 5000 }
5000 __ bind(&done); 5001 __ bind(&done);
5001 } 5002 }
5002 5003
5003 5004
5004 void LCodeGen::DoTaggedToI(LTaggedToI* instr) { 5005 void LCodeGen::DoTaggedToI(LTaggedToI* instr) {
5005 class DeferredTaggedToI FINAL : public LDeferredCode { 5006 class DeferredTaggedToI FINAL : public LDeferredCode {
5006 public: 5007 public:
5007 DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) 5008 DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr)
5008 : LDeferredCode(codegen), instr_(instr) { } 5009 : LDeferredCode(codegen), instr_(instr) { }
5009 virtual void Generate() OVERRIDE { 5010 void Generate() OVERRIDE { codegen()->DoDeferredTaggedToI(instr_); }
5010 codegen()->DoDeferredTaggedToI(instr_); 5011 LInstruction* instr() OVERRIDE { return instr_; }
5011 } 5012
5012 virtual LInstruction* instr() OVERRIDE { return instr_; }
5013 private: 5013 private:
5014 LTaggedToI* instr_; 5014 LTaggedToI* instr_;
5015 }; 5015 };
5016 5016
5017 LOperand* input = instr->value(); 5017 LOperand* input = instr->value();
5018 DCHECK(input->IsRegister()); 5018 DCHECK(input->IsRegister());
5019 DCHECK(input->Equals(instr->result())); 5019 DCHECK(input->Equals(instr->result()));
5020 5020
5021 Register input_reg = ToRegister(input); 5021 Register input_reg = ToRegister(input);
5022 5022
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
5207 } 5207 }
5208 5208
5209 5209
5210 void LCodeGen::DoCheckMaps(LCheckMaps* instr) { 5210 void LCodeGen::DoCheckMaps(LCheckMaps* instr) {
5211 class DeferredCheckMaps FINAL : public LDeferredCode { 5211 class DeferredCheckMaps FINAL : public LDeferredCode {
5212 public: 5212 public:
5213 DeferredCheckMaps(LCodeGen* codegen, LCheckMaps* instr, Register object) 5213 DeferredCheckMaps(LCodeGen* codegen, LCheckMaps* instr, Register object)
5214 : LDeferredCode(codegen), instr_(instr), object_(object) { 5214 : LDeferredCode(codegen), instr_(instr), object_(object) {
5215 SetExit(check_maps()); 5215 SetExit(check_maps());
5216 } 5216 }
5217 virtual void Generate() OVERRIDE { 5217 void Generate() OVERRIDE {
5218 codegen()->DoDeferredInstanceMigration(instr_, object_); 5218 codegen()->DoDeferredInstanceMigration(instr_, object_);
5219 } 5219 }
5220 Label* check_maps() { return &check_maps_; } 5220 Label* check_maps() { return &check_maps_; }
5221 virtual LInstruction* instr() OVERRIDE { return instr_; } 5221 LInstruction* instr() OVERRIDE { return instr_; }
5222
5222 private: 5223 private:
5223 LCheckMaps* instr_; 5224 LCheckMaps* instr_;
5224 Label check_maps_; 5225 Label check_maps_;
5225 Register object_; 5226 Register object_;
5226 }; 5227 };
5227 5228
5228 if (instr->hydrogen()->IsStabilityCheck()) { 5229 if (instr->hydrogen()->IsStabilityCheck()) {
5229 const UniqueSet<Map>* maps = instr->hydrogen()->maps(); 5230 const UniqueSet<Map>* maps = instr->hydrogen()->maps();
5230 for (int i = 0; i < maps->size(); ++i) { 5231 for (int i = 0; i < maps->size(); ++i) {
5231 AddStabilityDependency(maps->at(i).handle()); 5232 AddStabilityDependency(maps->at(i).handle());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
5330 DoubleRegister result_reg = ToDoubleRegister(instr->result()); 5331 DoubleRegister result_reg = ToDoubleRegister(instr->result());
5331 __ Move(result_reg, lo_reg, hi_reg); 5332 __ Move(result_reg, lo_reg, hi_reg);
5332 } 5333 }
5333 5334
5334 5335
5335 void LCodeGen::DoAllocate(LAllocate* instr) { 5336 void LCodeGen::DoAllocate(LAllocate* instr) {
5336 class DeferredAllocate FINAL : public LDeferredCode { 5337 class DeferredAllocate FINAL : public LDeferredCode {
5337 public: 5338 public:
5338 DeferredAllocate(LCodeGen* codegen, LAllocate* instr) 5339 DeferredAllocate(LCodeGen* codegen, LAllocate* instr)
5339 : LDeferredCode(codegen), instr_(instr) { } 5340 : LDeferredCode(codegen), instr_(instr) { }
5340 virtual void Generate() OVERRIDE { 5341 void Generate() OVERRIDE { codegen()->DoDeferredAllocate(instr_); }
5341 codegen()->DoDeferredAllocate(instr_); 5342 LInstruction* instr() OVERRIDE { return instr_; }
5342 } 5343
5343 virtual LInstruction* instr() OVERRIDE { return instr_; }
5344 private: 5344 private:
5345 LAllocate* instr_; 5345 LAllocate* instr_;
5346 }; 5346 };
5347 5347
5348 DeferredAllocate* deferred = 5348 DeferredAllocate* deferred =
5349 new(zone()) DeferredAllocate(this, instr); 5349 new(zone()) DeferredAllocate(this, instr);
5350 5350
5351 Register result = ToRegister(instr->result()); 5351 Register result = ToRegister(instr->result());
5352 Register scratch = ToRegister(instr->temp1()); 5352 Register scratch = ToRegister(instr->temp1());
5353 Register scratch2 = ToRegister(instr->temp2()); 5353 Register scratch2 = ToRegister(instr->temp2());
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 LEnvironment* env = instr->environment(); 5745 LEnvironment* env = instr->environment();
5746 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); 5746 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index());
5747 } 5747 }
5748 5748
5749 5749
5750 void LCodeGen::DoStackCheck(LStackCheck* instr) { 5750 void LCodeGen::DoStackCheck(LStackCheck* instr) {
5751 class DeferredStackCheck FINAL : public LDeferredCode { 5751 class DeferredStackCheck FINAL : public LDeferredCode {
5752 public: 5752 public:
5753 DeferredStackCheck(LCodeGen* codegen, LStackCheck* instr) 5753 DeferredStackCheck(LCodeGen* codegen, LStackCheck* instr)
5754 : LDeferredCode(codegen), instr_(instr) { } 5754 : LDeferredCode(codegen), instr_(instr) { }
5755 virtual void Generate() OVERRIDE { 5755 void Generate() OVERRIDE { codegen()->DoDeferredStackCheck(instr_); }
5756 codegen()->DoDeferredStackCheck(instr_); 5756 LInstruction* instr() OVERRIDE { return instr_; }
5757 } 5757
5758 virtual LInstruction* instr() OVERRIDE { return instr_; }
5759 private: 5758 private:
5760 LStackCheck* instr_; 5759 LStackCheck* instr_;
5761 }; 5760 };
5762 5761
5763 DCHECK(instr->HasEnvironment()); 5762 DCHECK(instr->HasEnvironment());
5764 LEnvironment* env = instr->environment(); 5763 LEnvironment* env = instr->environment();
5765 // There is no LLazyBailout instruction for stack-checks. We have to 5764 // There is no LLazyBailout instruction for stack-checks. We have to
5766 // prepare for lazy deoptimization explicitly here. 5765 // prepare for lazy deoptimization explicitly here.
5767 if (instr->hydrogen()->is_function_entry()) { 5766 if (instr->hydrogen()->is_function_entry()) {
5768 // Perform stack overflow check. 5767 // Perform stack overflow check.
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
5896 LLoadFieldByIndex* instr, 5895 LLoadFieldByIndex* instr,
5897 Register result, 5896 Register result,
5898 Register object, 5897 Register object,
5899 Register index) 5898 Register index)
5900 : LDeferredCode(codegen), 5899 : LDeferredCode(codegen),
5901 instr_(instr), 5900 instr_(instr),
5902 result_(result), 5901 result_(result),
5903 object_(object), 5902 object_(object),
5904 index_(index) { 5903 index_(index) {
5905 } 5904 }
5906 virtual void Generate() OVERRIDE { 5905 void Generate() OVERRIDE {
5907 codegen()->DoDeferredLoadMutableDouble(instr_, result_, object_, index_); 5906 codegen()->DoDeferredLoadMutableDouble(instr_, result_, object_, index_);
5908 } 5907 }
5909 virtual LInstruction* instr() OVERRIDE { return instr_; } 5908 LInstruction* instr() OVERRIDE { return instr_; }
5909
5910 private: 5910 private:
5911 LLoadFieldByIndex* instr_; 5911 LLoadFieldByIndex* instr_;
5912 Register result_; 5912 Register result_;
5913 Register object_; 5913 Register object_;
5914 Register index_; 5914 Register index_;
5915 }; 5915 };
5916 5916
5917 Register object = ToRegister(instr->object()); 5917 Register object = ToRegister(instr->object());
5918 Register index = ToRegister(instr->index()); 5918 Register index = ToRegister(instr->index());
5919 Register result = ToRegister(instr->result()); 5919 Register result = ToRegister(instr->result());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
5958 __ li(at, scope_info); 5958 __ li(at, scope_info);
5959 __ Push(at, ToRegister(instr->function())); 5959 __ Push(at, ToRegister(instr->function()));
5960 CallRuntime(Runtime::kPushBlockContext, 2, instr); 5960 CallRuntime(Runtime::kPushBlockContext, 2, instr);
5961 RecordSafepoint(Safepoint::kNoLazyDeopt); 5961 RecordSafepoint(Safepoint::kNoLazyDeopt);
5962 } 5962 }
5963 5963
5964 5964
5965 #undef __ 5965 #undef __
5966 5966
5967 } } // namespace v8::internal 5967 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/mips64/code-stubs-mips64.h ('k') | src/mips64/lithium-mips64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698