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

Side by Side Diff: src/x87/lithium-codegen-x87.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/x87/code-stubs-x87.cc ('k') | src/x87/lithium-x87.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 #if V8_TARGET_ARCH_X87 7 #if V8_TARGET_ARCH_X87
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 14 matching lines...) Expand all
25 class SafepointGenerator FINAL : public CallWrapper { 25 class SafepointGenerator FINAL : public CallWrapper {
26 public: 26 public:
27 SafepointGenerator(LCodeGen* codegen, 27 SafepointGenerator(LCodeGen* codegen,
28 LPointerMap* pointers, 28 LPointerMap* pointers,
29 Safepoint::DeoptMode mode) 29 Safepoint::DeoptMode mode)
30 : codegen_(codegen), 30 : codegen_(codegen),
31 pointers_(pointers), 31 pointers_(pointers),
32 deopt_mode_(mode) {} 32 deopt_mode_(mode) {}
33 virtual ~SafepointGenerator() {} 33 virtual ~SafepointGenerator() {}
34 34
35 virtual void BeforeCall(int call_size) const OVERRIDE {} 35 void BeforeCall(int call_size) const OVERRIDE {}
36 36
37 virtual void AfterCall() const OVERRIDE { 37 void AfterCall() const OVERRIDE {
38 codegen_->RecordSafepoint(pointers_, deopt_mode_); 38 codegen_->RecordSafepoint(pointers_, deopt_mode_);
39 } 39 }
40 40
41 private: 41 private:
42 LCodeGen* codegen_; 42 LCodeGen* codegen_;
43 LPointerMap* pointers_; 43 LPointerMap* pointers_;
44 Safepoint::DeoptMode deopt_mode_; 44 Safepoint::DeoptMode deopt_mode_;
45 }; 45 };
46 46
47 47
(...skipping 2869 matching lines...) Expand 10 before | Expand all | Expand 10 after
2917 } 2917 }
2918 2918
2919 2919
2920 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { 2920 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
2921 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode { 2921 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode {
2922 public: 2922 public:
2923 DeferredInstanceOfKnownGlobal(LCodeGen* codegen, 2923 DeferredInstanceOfKnownGlobal(LCodeGen* codegen,
2924 LInstanceOfKnownGlobal* instr, 2924 LInstanceOfKnownGlobal* instr,
2925 const X87Stack& x87_stack) 2925 const X87Stack& x87_stack)
2926 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 2926 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
2927 virtual void Generate() OVERRIDE { 2927 void Generate() OVERRIDE {
2928 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_); 2928 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_);
2929 } 2929 }
2930 virtual LInstruction* instr() OVERRIDE { return instr_; } 2930 LInstruction* instr() OVERRIDE { return instr_; }
2931 Label* map_check() { return &map_check_; } 2931 Label* map_check() { return &map_check_; }
2932 private: 2932 private:
2933 LInstanceOfKnownGlobal* instr_; 2933 LInstanceOfKnownGlobal* instr_;
2934 Label map_check_; 2934 Label map_check_;
2935 }; 2935 };
2936 2936
2937 DeferredInstanceOfKnownGlobal* deferred; 2937 DeferredInstanceOfKnownGlobal* deferred;
2938 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr, x87_stack_); 2938 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr, x87_stack_);
2939 2939
2940 Label done, false_result; 2940 Label done, false_result;
(...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after
3866 3866
3867 3867
3868 void LCodeGen::DoMathAbs(LMathAbs* instr) { 3868 void LCodeGen::DoMathAbs(LMathAbs* instr) {
3869 // Class for deferred case. 3869 // Class for deferred case.
3870 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode { 3870 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode {
3871 public: 3871 public:
3872 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen, 3872 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen,
3873 LMathAbs* instr, 3873 LMathAbs* instr,
3874 const X87Stack& x87_stack) 3874 const X87Stack& x87_stack)
3875 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 3875 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
3876 virtual void Generate() OVERRIDE { 3876 void Generate() OVERRIDE {
3877 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_); 3877 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_);
3878 } 3878 }
3879 virtual LInstruction* instr() OVERRIDE { return instr_; } 3879 LInstruction* instr() OVERRIDE { return instr_; }
3880
3880 private: 3881 private:
3881 LMathAbs* instr_; 3882 LMathAbs* instr_;
3882 }; 3883 };
3883 3884
3884 DCHECK(instr->value()->Equals(instr->result())); 3885 DCHECK(instr->value()->Equals(instr->result()));
3885 Representation r = instr->hydrogen()->value()->representation(); 3886 Representation r = instr->hydrogen()->value()->representation();
3886 3887
3887 if (r.IsDouble()) { 3888 if (r.IsDouble()) {
3888 X87Register value = ToX87Register(instr->value()); 3889 X87Register value = ToX87Register(instr->value());
3889 X87Fxch(value); 3890 X87Fxch(value);
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
4774 } 4775 }
4775 4776
4776 4777
4777 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) { 4778 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
4778 class DeferredStringCharCodeAt FINAL : public LDeferredCode { 4779 class DeferredStringCharCodeAt FINAL : public LDeferredCode {
4779 public: 4780 public:
4780 DeferredStringCharCodeAt(LCodeGen* codegen, 4781 DeferredStringCharCodeAt(LCodeGen* codegen,
4781 LStringCharCodeAt* instr, 4782 LStringCharCodeAt* instr,
4782 const X87Stack& x87_stack) 4783 const X87Stack& x87_stack)
4783 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 4784 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
4784 virtual void Generate() OVERRIDE { 4785 void Generate() OVERRIDE { codegen()->DoDeferredStringCharCodeAt(instr_); }
4785 codegen()->DoDeferredStringCharCodeAt(instr_); 4786 LInstruction* instr() OVERRIDE { return instr_; }
4786 } 4787
4787 virtual LInstruction* instr() OVERRIDE { return instr_; }
4788 private: 4788 private:
4789 LStringCharCodeAt* instr_; 4789 LStringCharCodeAt* instr_;
4790 }; 4790 };
4791 4791
4792 DeferredStringCharCodeAt* deferred = 4792 DeferredStringCharCodeAt* deferred =
4793 new(zone()) DeferredStringCharCodeAt(this, instr, x87_stack_); 4793 new(zone()) DeferredStringCharCodeAt(this, instr, x87_stack_);
4794 4794
4795 StringCharLoadGenerator::Generate(masm(), 4795 StringCharLoadGenerator::Generate(masm(),
4796 factory(), 4796 factory(),
4797 ToRegister(instr->string()), 4797 ToRegister(instr->string()),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4833 } 4833 }
4834 4834
4835 4835
4836 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) { 4836 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) {
4837 class DeferredStringCharFromCode FINAL : public LDeferredCode { 4837 class DeferredStringCharFromCode FINAL : public LDeferredCode {
4838 public: 4838 public:
4839 DeferredStringCharFromCode(LCodeGen* codegen, 4839 DeferredStringCharFromCode(LCodeGen* codegen,
4840 LStringCharFromCode* instr, 4840 LStringCharFromCode* instr,
4841 const X87Stack& x87_stack) 4841 const X87Stack& x87_stack)
4842 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 4842 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
4843 virtual void Generate() OVERRIDE { 4843 void Generate() OVERRIDE {
4844 codegen()->DoDeferredStringCharFromCode(instr_); 4844 codegen()->DoDeferredStringCharFromCode(instr_);
4845 } 4845 }
4846 virtual LInstruction* instr() OVERRIDE { return instr_; } 4846 LInstruction* instr() OVERRIDE { return instr_; }
4847
4847 private: 4848 private:
4848 LStringCharFromCode* instr_; 4849 LStringCharFromCode* instr_;
4849 }; 4850 };
4850 4851
4851 DeferredStringCharFromCode* deferred = 4852 DeferredStringCharFromCode* deferred =
4852 new(zone()) DeferredStringCharFromCode(this, instr, x87_stack_); 4853 new(zone()) DeferredStringCharFromCode(this, instr, x87_stack_);
4853 4854
4854 DCHECK(instr->hydrogen()->value()->representation().IsInteger32()); 4855 DCHECK(instr->hydrogen()->value()->representation().IsInteger32());
4855 Register char_code = ToRegister(instr->char_code()); 4856 Register char_code = ToRegister(instr->char_code());
4856 Register result = ToRegister(instr->result()); 4857 Register result = ToRegister(instr->result());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
4922 } 4923 }
4923 4924
4924 4925
4925 void LCodeGen::DoNumberTagI(LNumberTagI* instr) { 4926 void LCodeGen::DoNumberTagI(LNumberTagI* instr) {
4926 class DeferredNumberTagI FINAL : public LDeferredCode { 4927 class DeferredNumberTagI FINAL : public LDeferredCode {
4927 public: 4928 public:
4928 DeferredNumberTagI(LCodeGen* codegen, 4929 DeferredNumberTagI(LCodeGen* codegen,
4929 LNumberTagI* instr, 4930 LNumberTagI* instr,
4930 const X87Stack& x87_stack) 4931 const X87Stack& x87_stack)
4931 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 4932 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
4932 virtual void Generate() OVERRIDE { 4933 void Generate() OVERRIDE {
4933 codegen()->DoDeferredNumberTagIU(instr_, instr_->value(), instr_->temp(), 4934 codegen()->DoDeferredNumberTagIU(instr_, instr_->value(), instr_->temp(),
4934 SIGNED_INT32); 4935 SIGNED_INT32);
4935 } 4936 }
4936 virtual LInstruction* instr() OVERRIDE { return instr_; } 4937 LInstruction* instr() OVERRIDE { return instr_; }
4938
4937 private: 4939 private:
4938 LNumberTagI* instr_; 4940 LNumberTagI* instr_;
4939 }; 4941 };
4940 4942
4941 LOperand* input = instr->value(); 4943 LOperand* input = instr->value();
4942 DCHECK(input->IsRegister() && input->Equals(instr->result())); 4944 DCHECK(input->IsRegister() && input->Equals(instr->result()));
4943 Register reg = ToRegister(input); 4945 Register reg = ToRegister(input);
4944 4946
4945 DeferredNumberTagI* deferred = 4947 DeferredNumberTagI* deferred =
4946 new(zone()) DeferredNumberTagI(this, instr, x87_stack_); 4948 new(zone()) DeferredNumberTagI(this, instr, x87_stack_);
4947 __ SmiTag(reg); 4949 __ SmiTag(reg);
4948 __ j(overflow, deferred->entry()); 4950 __ j(overflow, deferred->entry());
4949 __ bind(deferred->exit()); 4951 __ bind(deferred->exit());
4950 } 4952 }
4951 4953
4952 4954
4953 void LCodeGen::DoNumberTagU(LNumberTagU* instr) { 4955 void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
4954 class DeferredNumberTagU FINAL : public LDeferredCode { 4956 class DeferredNumberTagU FINAL : public LDeferredCode {
4955 public: 4957 public:
4956 DeferredNumberTagU(LCodeGen* codegen, 4958 DeferredNumberTagU(LCodeGen* codegen,
4957 LNumberTagU* instr, 4959 LNumberTagU* instr,
4958 const X87Stack& x87_stack) 4960 const X87Stack& x87_stack)
4959 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 4961 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
4960 virtual void Generate() OVERRIDE { 4962 void Generate() OVERRIDE {
4961 codegen()->DoDeferredNumberTagIU(instr_, instr_->value(), instr_->temp(), 4963 codegen()->DoDeferredNumberTagIU(instr_, instr_->value(), instr_->temp(),
4962 UNSIGNED_INT32); 4964 UNSIGNED_INT32);
4963 } 4965 }
4964 virtual LInstruction* instr() OVERRIDE { return instr_; } 4966 LInstruction* instr() OVERRIDE { return instr_; }
4967
4965 private: 4968 private:
4966 LNumberTagU* instr_; 4969 LNumberTagU* instr_;
4967 }; 4970 };
4968 4971
4969 LOperand* input = instr->value(); 4972 LOperand* input = instr->value();
4970 DCHECK(input->IsRegister() && input->Equals(instr->result())); 4973 DCHECK(input->IsRegister() && input->Equals(instr->result()));
4971 Register reg = ToRegister(input); 4974 Register reg = ToRegister(input);
4972 4975
4973 DeferredNumberTagU* deferred = 4976 DeferredNumberTagU* deferred =
4974 new(zone()) DeferredNumberTagU(this, instr, x87_stack_); 4977 new(zone()) DeferredNumberTagU(this, instr, x87_stack_);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
5039 } 5042 }
5040 5043
5041 5044
5042 void LCodeGen::DoNumberTagD(LNumberTagD* instr) { 5045 void LCodeGen::DoNumberTagD(LNumberTagD* instr) {
5043 class DeferredNumberTagD FINAL : public LDeferredCode { 5046 class DeferredNumberTagD FINAL : public LDeferredCode {
5044 public: 5047 public:
5045 DeferredNumberTagD(LCodeGen* codegen, 5048 DeferredNumberTagD(LCodeGen* codegen,
5046 LNumberTagD* instr, 5049 LNumberTagD* instr,
5047 const X87Stack& x87_stack) 5050 const X87Stack& x87_stack)
5048 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 5051 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
5049 virtual void Generate() OVERRIDE { 5052 void Generate() OVERRIDE { codegen()->DoDeferredNumberTagD(instr_); }
5050 codegen()->DoDeferredNumberTagD(instr_); 5053 LInstruction* instr() OVERRIDE { return instr_; }
5051 } 5054
5052 virtual LInstruction* instr() OVERRIDE { return instr_; }
5053 private: 5055 private:
5054 LNumberTagD* instr_; 5056 LNumberTagD* instr_;
5055 }; 5057 };
5056 5058
5057 Register reg = ToRegister(instr->result()); 5059 Register reg = ToRegister(instr->result());
5058 5060
5059 // Put the value to the top of stack 5061 // Put the value to the top of stack
5060 X87Register src = ToX87Register(instr->value()); 5062 X87Register src = ToX87Register(instr->value());
5061 // Don't use X87LoadForUsage here, which is only used by Instruction which 5063 // Don't use X87LoadForUsage here, which is only used by Instruction which
5062 // clobbers fp registers. 5064 // clobbers fp registers.
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
5285 } 5287 }
5286 5288
5287 5289
5288 void LCodeGen::DoTaggedToI(LTaggedToI* instr) { 5290 void LCodeGen::DoTaggedToI(LTaggedToI* instr) {
5289 class DeferredTaggedToI FINAL : public LDeferredCode { 5291 class DeferredTaggedToI FINAL : public LDeferredCode {
5290 public: 5292 public:
5291 DeferredTaggedToI(LCodeGen* codegen, 5293 DeferredTaggedToI(LCodeGen* codegen,
5292 LTaggedToI* instr, 5294 LTaggedToI* instr,
5293 const X87Stack& x87_stack) 5295 const X87Stack& x87_stack)
5294 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 5296 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
5295 virtual void Generate() OVERRIDE { 5297 void Generate() OVERRIDE { codegen()->DoDeferredTaggedToI(instr_, done()); }
5296 codegen()->DoDeferredTaggedToI(instr_, done()); 5298 LInstruction* instr() OVERRIDE { return instr_; }
5297 } 5299
5298 virtual LInstruction* instr() OVERRIDE { return instr_; }
5299 private: 5300 private:
5300 LTaggedToI* instr_; 5301 LTaggedToI* instr_;
5301 }; 5302 };
5302 5303
5303 LOperand* input = instr->value(); 5304 LOperand* input = instr->value();
5304 DCHECK(input->IsRegister()); 5305 DCHECK(input->IsRegister());
5305 Register input_reg = ToRegister(input); 5306 Register input_reg = ToRegister(input);
5306 DCHECK(input_reg.is(ToRegister(instr->result()))); 5307 DCHECK(input_reg.is(ToRegister(instr->result())));
5307 5308
5308 if (instr->hydrogen()->value()->representation().IsSmi()) { 5309 if (instr->hydrogen()->value()->representation().IsSmi()) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
5491 void LCodeGen::DoCheckMaps(LCheckMaps* instr) { 5492 void LCodeGen::DoCheckMaps(LCheckMaps* instr) {
5492 class DeferredCheckMaps FINAL : public LDeferredCode { 5493 class DeferredCheckMaps FINAL : public LDeferredCode {
5493 public: 5494 public:
5494 DeferredCheckMaps(LCodeGen* codegen, 5495 DeferredCheckMaps(LCodeGen* codegen,
5495 LCheckMaps* instr, 5496 LCheckMaps* instr,
5496 Register object, 5497 Register object,
5497 const X87Stack& x87_stack) 5498 const X87Stack& x87_stack)
5498 : LDeferredCode(codegen, x87_stack), instr_(instr), object_(object) { 5499 : LDeferredCode(codegen, x87_stack), instr_(instr), object_(object) {
5499 SetExit(check_maps()); 5500 SetExit(check_maps());
5500 } 5501 }
5501 virtual void Generate() OVERRIDE { 5502 void Generate() OVERRIDE {
5502 codegen()->DoDeferredInstanceMigration(instr_, object_); 5503 codegen()->DoDeferredInstanceMigration(instr_, object_);
5503 } 5504 }
5504 Label* check_maps() { return &check_maps_; } 5505 Label* check_maps() { return &check_maps_; }
5505 virtual LInstruction* instr() OVERRIDE { return instr_; } 5506 LInstruction* instr() OVERRIDE { return instr_; }
5507
5506 private: 5508 private:
5507 LCheckMaps* instr_; 5509 LCheckMaps* instr_;
5508 Label check_maps_; 5510 Label check_maps_;
5509 Register object_; 5511 Register object_;
5510 }; 5512 };
5511 5513
5512 if (instr->hydrogen()->IsStabilityCheck()) { 5514 if (instr->hydrogen()->IsStabilityCheck()) {
5513 const UniqueSet<Map>* maps = instr->hydrogen()->maps(); 5515 const UniqueSet<Map>* maps = instr->hydrogen()->maps();
5514 for (int i = 0; i < maps->size(); ++i) { 5516 for (int i = 0; i < maps->size(); ++i) {
5515 AddStabilityDependency(maps->at(i).handle()); 5517 AddStabilityDependency(maps->at(i).handle());
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
5714 } 5716 }
5715 5717
5716 5718
5717 void LCodeGen::DoAllocate(LAllocate* instr) { 5719 void LCodeGen::DoAllocate(LAllocate* instr) {
5718 class DeferredAllocate FINAL : public LDeferredCode { 5720 class DeferredAllocate FINAL : public LDeferredCode {
5719 public: 5721 public:
5720 DeferredAllocate(LCodeGen* codegen, 5722 DeferredAllocate(LCodeGen* codegen,
5721 LAllocate* instr, 5723 LAllocate* instr,
5722 const X87Stack& x87_stack) 5724 const X87Stack& x87_stack)
5723 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 5725 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
5724 virtual void Generate() OVERRIDE { 5726 void Generate() OVERRIDE { codegen()->DoDeferredAllocate(instr_); }
5725 codegen()->DoDeferredAllocate(instr_); 5727 LInstruction* instr() OVERRIDE { return instr_; }
5726 } 5728
5727 virtual LInstruction* instr() OVERRIDE { return instr_; }
5728 private: 5729 private:
5729 LAllocate* instr_; 5730 LAllocate* instr_;
5730 }; 5731 };
5731 5732
5732 DeferredAllocate* deferred = 5733 DeferredAllocate* deferred =
5733 new(zone()) DeferredAllocate(this, instr, x87_stack_); 5734 new(zone()) DeferredAllocate(this, instr, x87_stack_);
5734 5735
5735 Register result = ToRegister(instr->result()); 5736 Register result = ToRegister(instr->result());
5736 Register temp = ToRegister(instr->temp()); 5737 Register temp = ToRegister(instr->temp());
5737 5738
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
6083 } 6084 }
6084 6085
6085 6086
6086 void LCodeGen::DoStackCheck(LStackCheck* instr) { 6087 void LCodeGen::DoStackCheck(LStackCheck* instr) {
6087 class DeferredStackCheck FINAL : public LDeferredCode { 6088 class DeferredStackCheck FINAL : public LDeferredCode {
6088 public: 6089 public:
6089 DeferredStackCheck(LCodeGen* codegen, 6090 DeferredStackCheck(LCodeGen* codegen,
6090 LStackCheck* instr, 6091 LStackCheck* instr,
6091 const X87Stack& x87_stack) 6092 const X87Stack& x87_stack)
6092 : LDeferredCode(codegen, x87_stack), instr_(instr) { } 6093 : LDeferredCode(codegen, x87_stack), instr_(instr) { }
6093 virtual void Generate() OVERRIDE { 6094 void Generate() OVERRIDE { codegen()->DoDeferredStackCheck(instr_); }
6094 codegen()->DoDeferredStackCheck(instr_); 6095 LInstruction* instr() OVERRIDE { return instr_; }
6095 } 6096
6096 virtual LInstruction* instr() OVERRIDE { return instr_; }
6097 private: 6097 private:
6098 LStackCheck* instr_; 6098 LStackCheck* instr_;
6099 }; 6099 };
6100 6100
6101 DCHECK(instr->HasEnvironment()); 6101 DCHECK(instr->HasEnvironment());
6102 LEnvironment* env = instr->environment(); 6102 LEnvironment* env = instr->environment();
6103 // There is no LLazyBailout instruction for stack-checks. We have to 6103 // There is no LLazyBailout instruction for stack-checks. We have to
6104 // prepare for lazy deoptimization explicitly here. 6104 // prepare for lazy deoptimization explicitly here.
6105 if (instr->hydrogen()->is_function_entry()) { 6105 if (instr->hydrogen()->is_function_entry()) {
6106 // Perform stack overflow check. 6106 // Perform stack overflow check.
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
6234 DeferredLoadMutableDouble(LCodeGen* codegen, 6234 DeferredLoadMutableDouble(LCodeGen* codegen,
6235 LLoadFieldByIndex* instr, 6235 LLoadFieldByIndex* instr,
6236 Register object, 6236 Register object,
6237 Register index, 6237 Register index,
6238 const X87Stack& x87_stack) 6238 const X87Stack& x87_stack)
6239 : LDeferredCode(codegen, x87_stack), 6239 : LDeferredCode(codegen, x87_stack),
6240 instr_(instr), 6240 instr_(instr),
6241 object_(object), 6241 object_(object),
6242 index_(index) { 6242 index_(index) {
6243 } 6243 }
6244 virtual void Generate() OVERRIDE { 6244 void Generate() OVERRIDE {
6245 codegen()->DoDeferredLoadMutableDouble(instr_, object_, index_); 6245 codegen()->DoDeferredLoadMutableDouble(instr_, object_, index_);
6246 } 6246 }
6247 virtual LInstruction* instr() OVERRIDE { return instr_; } 6247 LInstruction* instr() OVERRIDE { return instr_; }
6248
6248 private: 6249 private:
6249 LLoadFieldByIndex* instr_; 6250 LLoadFieldByIndex* instr_;
6250 Register object_; 6251 Register object_;
6251 Register index_; 6252 Register index_;
6252 }; 6253 };
6253 6254
6254 Register object = ToRegister(instr->object()); 6255 Register object = ToRegister(instr->object());
6255 Register index = ToRegister(instr->index()); 6256 Register index = ToRegister(instr->index());
6256 6257
6257 DeferredLoadMutableDouble* deferred; 6258 DeferredLoadMutableDouble* deferred;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6298 CallRuntime(Runtime::kPushBlockContext, 2, instr); 6299 CallRuntime(Runtime::kPushBlockContext, 2, instr);
6299 RecordSafepoint(Safepoint::kNoLazyDeopt); 6300 RecordSafepoint(Safepoint::kNoLazyDeopt);
6300 } 6301 }
6301 6302
6302 6303
6303 #undef __ 6304 #undef __
6304 6305
6305 } } // namespace v8::internal 6306 } } // namespace v8::internal
6306 6307
6307 #endif // V8_TARGET_ARCH_X87 6308 #endif // V8_TARGET_ARCH_X87
OLDNEW
« no previous file with comments | « src/x87/code-stubs-x87.cc ('k') | src/x87/lithium-x87.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698