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

Side by Side Diff: src/ia32/lithium-codegen-ia32.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/ia32/code-stubs-ia32.h ('k') | src/ia32/lithium-ia32.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_IA32 7 #if V8_TARGET_ARCH_IA32
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 13 matching lines...) Expand all
24 class SafepointGenerator FINAL : public CallWrapper { 24 class SafepointGenerator FINAL : public CallWrapper {
25 public: 25 public:
26 SafepointGenerator(LCodeGen* codegen, 26 SafepointGenerator(LCodeGen* codegen,
27 LPointerMap* pointers, 27 LPointerMap* pointers,
28 Safepoint::DeoptMode mode) 28 Safepoint::DeoptMode mode)
29 : codegen_(codegen), 29 : codegen_(codegen),
30 pointers_(pointers), 30 pointers_(pointers),
31 deopt_mode_(mode) {} 31 deopt_mode_(mode) {}
32 virtual ~SafepointGenerator() {} 32 virtual ~SafepointGenerator() {}
33 33
34 virtual void BeforeCall(int call_size) const OVERRIDE {} 34 void BeforeCall(int call_size) const OVERRIDE {}
35 35
36 virtual void AfterCall() const OVERRIDE { 36 void AfterCall() const OVERRIDE {
37 codegen_->RecordSafepoint(pointers_, deopt_mode_); 37 codegen_->RecordSafepoint(pointers_, deopt_mode_);
38 } 38 }
39 39
40 private: 40 private:
41 LCodeGen* codegen_; 41 LCodeGen* codegen_;
42 LPointerMap* pointers_; 42 LPointerMap* pointers_;
43 Safepoint::DeoptMode deopt_mode_; 43 Safepoint::DeoptMode deopt_mode_;
44 }; 44 };
45 45
46 46
(...skipping 2573 matching lines...) Expand 10 before | Expand all | Expand 10 after
2620 __ bind(&done); 2620 __ bind(&done);
2621 } 2621 }
2622 2622
2623 2623
2624 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { 2624 void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
2625 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode { 2625 class DeferredInstanceOfKnownGlobal FINAL : public LDeferredCode {
2626 public: 2626 public:
2627 DeferredInstanceOfKnownGlobal(LCodeGen* codegen, 2627 DeferredInstanceOfKnownGlobal(LCodeGen* codegen,
2628 LInstanceOfKnownGlobal* instr) 2628 LInstanceOfKnownGlobal* instr)
2629 : LDeferredCode(codegen), instr_(instr) { } 2629 : LDeferredCode(codegen), instr_(instr) { }
2630 virtual void Generate() OVERRIDE { 2630 void Generate() OVERRIDE {
2631 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_); 2631 codegen()->DoDeferredInstanceOfKnownGlobal(instr_, &map_check_);
2632 } 2632 }
2633 virtual LInstruction* instr() OVERRIDE { return instr_; } 2633 LInstruction* instr() OVERRIDE { return instr_; }
2634 Label* map_check() { return &map_check_; } 2634 Label* map_check() { return &map_check_; }
2635 private: 2635 private:
2636 LInstanceOfKnownGlobal* instr_; 2636 LInstanceOfKnownGlobal* instr_;
2637 Label map_check_; 2637 Label map_check_;
2638 }; 2638 };
2639 2639
2640 DeferredInstanceOfKnownGlobal* deferred; 2640 DeferredInstanceOfKnownGlobal* deferred;
2641 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr); 2641 deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr);
2642 2642
2643 Label done, false_result; 2643 Label done, false_result;
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
3579 } 3579 }
3580 3580
3581 3581
3582 void LCodeGen::DoMathAbs(LMathAbs* instr) { 3582 void LCodeGen::DoMathAbs(LMathAbs* instr) {
3583 // Class for deferred case. 3583 // Class for deferred case.
3584 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode { 3584 class DeferredMathAbsTaggedHeapNumber FINAL : public LDeferredCode {
3585 public: 3585 public:
3586 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen, 3586 DeferredMathAbsTaggedHeapNumber(LCodeGen* codegen,
3587 LMathAbs* instr) 3587 LMathAbs* instr)
3588 : LDeferredCode(codegen), instr_(instr) { } 3588 : LDeferredCode(codegen), instr_(instr) { }
3589 virtual void Generate() OVERRIDE { 3589 void Generate() OVERRIDE {
3590 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_); 3590 codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_);
3591 } 3591 }
3592 virtual LInstruction* instr() OVERRIDE { return instr_; } 3592 LInstruction* instr() OVERRIDE { return instr_; }
3593
3593 private: 3594 private:
3594 LMathAbs* instr_; 3595 LMathAbs* instr_;
3595 }; 3596 };
3596 3597
3597 DCHECK(instr->value()->Equals(instr->result())); 3598 DCHECK(instr->value()->Equals(instr->result()));
3598 Representation r = instr->hydrogen()->value()->representation(); 3599 Representation r = instr->hydrogen()->value()->representation();
3599 3600
3600 if (r.IsDouble()) { 3601 if (r.IsDouble()) {
3601 XMMRegister scratch = double_scratch0(); 3602 XMMRegister scratch = double_scratch0();
3602 XMMRegister input_reg = ToDoubleRegister(instr->value()); 3603 XMMRegister input_reg = ToDoubleRegister(instr->value());
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
4333 __ bind(&not_applicable); 4334 __ bind(&not_applicable);
4334 } 4335 }
4335 4336
4336 4337
4337 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) { 4338 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
4338 class DeferredStringCharCodeAt FINAL : public LDeferredCode { 4339 class DeferredStringCharCodeAt FINAL : public LDeferredCode {
4339 public: 4340 public:
4340 DeferredStringCharCodeAt(LCodeGen* codegen, 4341 DeferredStringCharCodeAt(LCodeGen* codegen,
4341 LStringCharCodeAt* instr) 4342 LStringCharCodeAt* instr)
4342 : LDeferredCode(codegen), instr_(instr) { } 4343 : LDeferredCode(codegen), instr_(instr) { }
4343 virtual void Generate() OVERRIDE { 4344 void Generate() OVERRIDE { codegen()->DoDeferredStringCharCodeAt(instr_); }
4344 codegen()->DoDeferredStringCharCodeAt(instr_); 4345 LInstruction* instr() OVERRIDE { return instr_; }
4345 } 4346
4346 virtual LInstruction* instr() OVERRIDE { return instr_; }
4347 private: 4347 private:
4348 LStringCharCodeAt* instr_; 4348 LStringCharCodeAt* instr_;
4349 }; 4349 };
4350 4350
4351 DeferredStringCharCodeAt* deferred = 4351 DeferredStringCharCodeAt* deferred =
4352 new(zone()) DeferredStringCharCodeAt(this, instr); 4352 new(zone()) DeferredStringCharCodeAt(this, instr);
4353 4353
4354 StringCharLoadGenerator::Generate(masm(), 4354 StringCharLoadGenerator::Generate(masm(),
4355 factory(), 4355 factory(),
4356 ToRegister(instr->string()), 4356 ToRegister(instr->string()),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
4391 __ StoreToSafepointRegisterSlot(result, eax); 4391 __ StoreToSafepointRegisterSlot(result, eax);
4392 } 4392 }
4393 4393
4394 4394
4395 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) { 4395 void LCodeGen::DoStringCharFromCode(LStringCharFromCode* instr) {
4396 class DeferredStringCharFromCode FINAL : public LDeferredCode { 4396 class DeferredStringCharFromCode FINAL : public LDeferredCode {
4397 public: 4397 public:
4398 DeferredStringCharFromCode(LCodeGen* codegen, 4398 DeferredStringCharFromCode(LCodeGen* codegen,
4399 LStringCharFromCode* instr) 4399 LStringCharFromCode* instr)
4400 : LDeferredCode(codegen), instr_(instr) { } 4400 : LDeferredCode(codegen), instr_(instr) { }
4401 virtual void Generate() OVERRIDE { 4401 void Generate() OVERRIDE {
4402 codegen()->DoDeferredStringCharFromCode(instr_); 4402 codegen()->DoDeferredStringCharFromCode(instr_);
4403 } 4403 }
4404 virtual LInstruction* instr() OVERRIDE { return instr_; } 4404 LInstruction* instr() OVERRIDE { return instr_; }
4405
4405 private: 4406 private:
4406 LStringCharFromCode* instr_; 4407 LStringCharFromCode* instr_;
4407 }; 4408 };
4408 4409
4409 DeferredStringCharFromCode* deferred = 4410 DeferredStringCharFromCode* deferred =
4410 new(zone()) DeferredStringCharFromCode(this, instr); 4411 new(zone()) DeferredStringCharFromCode(this, instr);
4411 4412
4412 DCHECK(instr->hydrogen()->value()->representation().IsInteger32()); 4413 DCHECK(instr->hydrogen()->value()->representation().IsInteger32());
4413 Register char_code = ToRegister(instr->char_code()); 4414 Register char_code = ToRegister(instr->char_code());
4414 Register result = ToRegister(instr->result()); 4415 Register result = ToRegister(instr->result());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4469 __ LoadUint32(ToDoubleRegister(output), ToRegister(input)); 4470 __ LoadUint32(ToDoubleRegister(output), ToRegister(input));
4470 } 4471 }
4471 4472
4472 4473
4473 void LCodeGen::DoNumberTagI(LNumberTagI* instr) { 4474 void LCodeGen::DoNumberTagI(LNumberTagI* instr) {
4474 class DeferredNumberTagI FINAL : public LDeferredCode { 4475 class DeferredNumberTagI FINAL : public LDeferredCode {
4475 public: 4476 public:
4476 DeferredNumberTagI(LCodeGen* codegen, 4477 DeferredNumberTagI(LCodeGen* codegen,
4477 LNumberTagI* instr) 4478 LNumberTagI* instr)
4478 : LDeferredCode(codegen), instr_(instr) { } 4479 : LDeferredCode(codegen), instr_(instr) { }
4479 virtual void Generate() OVERRIDE { 4480 void Generate() OVERRIDE {
4480 codegen()->DoDeferredNumberTagIU( 4481 codegen()->DoDeferredNumberTagIU(
4481 instr_, instr_->value(), instr_->temp(), SIGNED_INT32); 4482 instr_, instr_->value(), instr_->temp(), SIGNED_INT32);
4482 } 4483 }
4483 virtual LInstruction* instr() OVERRIDE { return instr_; } 4484 LInstruction* instr() OVERRIDE { return instr_; }
4485
4484 private: 4486 private:
4485 LNumberTagI* instr_; 4487 LNumberTagI* instr_;
4486 }; 4488 };
4487 4489
4488 LOperand* input = instr->value(); 4490 LOperand* input = instr->value();
4489 DCHECK(input->IsRegister() && input->Equals(instr->result())); 4491 DCHECK(input->IsRegister() && input->Equals(instr->result()));
4490 Register reg = ToRegister(input); 4492 Register reg = ToRegister(input);
4491 4493
4492 DeferredNumberTagI* deferred = 4494 DeferredNumberTagI* deferred =
4493 new(zone()) DeferredNumberTagI(this, instr); 4495 new(zone()) DeferredNumberTagI(this, instr);
4494 __ SmiTag(reg); 4496 __ SmiTag(reg);
4495 __ j(overflow, deferred->entry()); 4497 __ j(overflow, deferred->entry());
4496 __ bind(deferred->exit()); 4498 __ bind(deferred->exit());
4497 } 4499 }
4498 4500
4499 4501
4500 void LCodeGen::DoNumberTagU(LNumberTagU* instr) { 4502 void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
4501 class DeferredNumberTagU FINAL : public LDeferredCode { 4503 class DeferredNumberTagU FINAL : public LDeferredCode {
4502 public: 4504 public:
4503 DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr) 4505 DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr)
4504 : LDeferredCode(codegen), instr_(instr) { } 4506 : LDeferredCode(codegen), instr_(instr) { }
4505 virtual void Generate() OVERRIDE { 4507 void Generate() OVERRIDE {
4506 codegen()->DoDeferredNumberTagIU( 4508 codegen()->DoDeferredNumberTagIU(
4507 instr_, instr_->value(), instr_->temp(), UNSIGNED_INT32); 4509 instr_, instr_->value(), instr_->temp(), UNSIGNED_INT32);
4508 } 4510 }
4509 virtual LInstruction* instr() OVERRIDE { return instr_; } 4511 LInstruction* instr() OVERRIDE { return instr_; }
4512
4510 private: 4513 private:
4511 LNumberTagU* instr_; 4514 LNumberTagU* instr_;
4512 }; 4515 };
4513 4516
4514 LOperand* input = instr->value(); 4517 LOperand* input = instr->value();
4515 DCHECK(input->IsRegister() && input->Equals(instr->result())); 4518 DCHECK(input->IsRegister() && input->Equals(instr->result()));
4516 Register reg = ToRegister(input); 4519 Register reg = ToRegister(input);
4517 4520
4518 DeferredNumberTagU* deferred = 4521 DeferredNumberTagU* deferred =
4519 new(zone()) DeferredNumberTagU(this, instr); 4522 new(zone()) DeferredNumberTagU(this, instr);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4577 __ bind(&done); 4580 __ bind(&done);
4578 __ movsd(FieldOperand(reg, HeapNumber::kValueOffset), xmm_scratch); 4581 __ movsd(FieldOperand(reg, HeapNumber::kValueOffset), xmm_scratch);
4579 } 4582 }
4580 4583
4581 4584
4582 void LCodeGen::DoNumberTagD(LNumberTagD* instr) { 4585 void LCodeGen::DoNumberTagD(LNumberTagD* instr) {
4583 class DeferredNumberTagD FINAL : public LDeferredCode { 4586 class DeferredNumberTagD FINAL : public LDeferredCode {
4584 public: 4587 public:
4585 DeferredNumberTagD(LCodeGen* codegen, LNumberTagD* instr) 4588 DeferredNumberTagD(LCodeGen* codegen, LNumberTagD* instr)
4586 : LDeferredCode(codegen), instr_(instr) { } 4589 : LDeferredCode(codegen), instr_(instr) { }
4587 virtual void Generate() OVERRIDE { 4590 void Generate() OVERRIDE { codegen()->DoDeferredNumberTagD(instr_); }
4588 codegen()->DoDeferredNumberTagD(instr_); 4591 LInstruction* instr() OVERRIDE { return instr_; }
4589 } 4592
4590 virtual LInstruction* instr() OVERRIDE { return instr_; }
4591 private: 4593 private:
4592 LNumberTagD* instr_; 4594 LNumberTagD* instr_;
4593 }; 4595 };
4594 4596
4595 Register reg = ToRegister(instr->result()); 4597 Register reg = ToRegister(instr->result());
4596 4598
4597 DeferredNumberTagD* deferred = 4599 DeferredNumberTagD* deferred =
4598 new(zone()) DeferredNumberTagD(this, instr); 4600 new(zone()) DeferredNumberTagD(this, instr);
4599 if (FLAG_inline_new) { 4601 if (FLAG_inline_new) {
4600 Register tmp = ToRegister(instr->temp()); 4602 Register tmp = ToRegister(instr->temp());
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
4777 } 4779 }
4778 } 4780 }
4779 } 4781 }
4780 4782
4781 4783
4782 void LCodeGen::DoTaggedToI(LTaggedToI* instr) { 4784 void LCodeGen::DoTaggedToI(LTaggedToI* instr) {
4783 class DeferredTaggedToI FINAL : public LDeferredCode { 4785 class DeferredTaggedToI FINAL : public LDeferredCode {
4784 public: 4786 public:
4785 DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) 4787 DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr)
4786 : LDeferredCode(codegen), instr_(instr) { } 4788 : LDeferredCode(codegen), instr_(instr) { }
4787 virtual void Generate() OVERRIDE { 4789 void Generate() OVERRIDE { codegen()->DoDeferredTaggedToI(instr_, done()); }
4788 codegen()->DoDeferredTaggedToI(instr_, done()); 4790 LInstruction* instr() OVERRIDE { return instr_; }
4789 } 4791
4790 virtual LInstruction* instr() OVERRIDE { return instr_; }
4791 private: 4792 private:
4792 LTaggedToI* instr_; 4793 LTaggedToI* instr_;
4793 }; 4794 };
4794 4795
4795 LOperand* input = instr->value(); 4796 LOperand* input = instr->value();
4796 DCHECK(input->IsRegister()); 4797 DCHECK(input->IsRegister());
4797 Register input_reg = ToRegister(input); 4798 Register input_reg = ToRegister(input);
4798 DCHECK(input_reg.is(ToRegister(instr->result()))); 4799 DCHECK(input_reg.is(ToRegister(instr->result())));
4799 4800
4800 if (instr->hydrogen()->value()->representation().IsSmi()) { 4801 if (instr->hydrogen()->value()->representation().IsSmi()) {
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
4981 } 4982 }
4982 4983
4983 4984
4984 void LCodeGen::DoCheckMaps(LCheckMaps* instr) { 4985 void LCodeGen::DoCheckMaps(LCheckMaps* instr) {
4985 class DeferredCheckMaps FINAL : public LDeferredCode { 4986 class DeferredCheckMaps FINAL : public LDeferredCode {
4986 public: 4987 public:
4987 DeferredCheckMaps(LCodeGen* codegen, LCheckMaps* instr, Register object) 4988 DeferredCheckMaps(LCodeGen* codegen, LCheckMaps* instr, Register object)
4988 : LDeferredCode(codegen), instr_(instr), object_(object) { 4989 : LDeferredCode(codegen), instr_(instr), object_(object) {
4989 SetExit(check_maps()); 4990 SetExit(check_maps());
4990 } 4991 }
4991 virtual void Generate() OVERRIDE { 4992 void Generate() OVERRIDE {
4992 codegen()->DoDeferredInstanceMigration(instr_, object_); 4993 codegen()->DoDeferredInstanceMigration(instr_, object_);
4993 } 4994 }
4994 Label* check_maps() { return &check_maps_; } 4995 Label* check_maps() { return &check_maps_; }
4995 virtual LInstruction* instr() OVERRIDE { return instr_; } 4996 LInstruction* instr() OVERRIDE { return instr_; }
4997
4996 private: 4998 private:
4997 LCheckMaps* instr_; 4999 LCheckMaps* instr_;
4998 Label check_maps_; 5000 Label check_maps_;
4999 Register object_; 5001 Register object_;
5000 }; 5002 };
5001 5003
5002 if (instr->hydrogen()->IsStabilityCheck()) { 5004 if (instr->hydrogen()->IsStabilityCheck()) {
5003 const UniqueSet<Map>* maps = instr->hydrogen()->maps(); 5005 const UniqueSet<Map>* maps = instr->hydrogen()->maps();
5004 for (int i = 0; i < maps->size(); ++i) { 5006 for (int i = 0; i < maps->size(); ++i) {
5005 AddStabilityDependency(maps->at(i).handle()); 5007 AddStabilityDependency(maps->at(i).handle());
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
5122 __ orps(result_reg, xmm_scratch); 5124 __ orps(result_reg, xmm_scratch);
5123 } 5125 }
5124 } 5126 }
5125 5127
5126 5128
5127 void LCodeGen::DoAllocate(LAllocate* instr) { 5129 void LCodeGen::DoAllocate(LAllocate* instr) {
5128 class DeferredAllocate FINAL : public LDeferredCode { 5130 class DeferredAllocate FINAL : public LDeferredCode {
5129 public: 5131 public:
5130 DeferredAllocate(LCodeGen* codegen, LAllocate* instr) 5132 DeferredAllocate(LCodeGen* codegen, LAllocate* instr)
5131 : LDeferredCode(codegen), instr_(instr) { } 5133 : LDeferredCode(codegen), instr_(instr) { }
5132 virtual void Generate() OVERRIDE { 5134 void Generate() OVERRIDE { codegen()->DoDeferredAllocate(instr_); }
5133 codegen()->DoDeferredAllocate(instr_); 5135 LInstruction* instr() OVERRIDE { return instr_; }
5134 } 5136
5135 virtual LInstruction* instr() OVERRIDE { return instr_; }
5136 private: 5137 private:
5137 LAllocate* instr_; 5138 LAllocate* instr_;
5138 }; 5139 };
5139 5140
5140 DeferredAllocate* deferred = new(zone()) DeferredAllocate(this, instr); 5141 DeferredAllocate* deferred = new(zone()) DeferredAllocate(this, instr);
5141 5142
5142 Register result = ToRegister(instr->result()); 5143 Register result = ToRegister(instr->result());
5143 Register temp = ToRegister(instr->temp()); 5144 Register temp = ToRegister(instr->temp());
5144 5145
5145 // Allocate memory for the object. 5146 // Allocate memory for the object.
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
5488 LEnvironment* env = instr->environment(); 5489 LEnvironment* env = instr->environment();
5489 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); 5490 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index());
5490 } 5491 }
5491 5492
5492 5493
5493 void LCodeGen::DoStackCheck(LStackCheck* instr) { 5494 void LCodeGen::DoStackCheck(LStackCheck* instr) {
5494 class DeferredStackCheck FINAL : public LDeferredCode { 5495 class DeferredStackCheck FINAL : public LDeferredCode {
5495 public: 5496 public:
5496 DeferredStackCheck(LCodeGen* codegen, LStackCheck* instr) 5497 DeferredStackCheck(LCodeGen* codegen, LStackCheck* instr)
5497 : LDeferredCode(codegen), instr_(instr) { } 5498 : LDeferredCode(codegen), instr_(instr) { }
5498 virtual void Generate() OVERRIDE { 5499 void Generate() OVERRIDE { codegen()->DoDeferredStackCheck(instr_); }
5499 codegen()->DoDeferredStackCheck(instr_); 5500 LInstruction* instr() OVERRIDE { return instr_; }
5500 } 5501
5501 virtual LInstruction* instr() OVERRIDE { return instr_; }
5502 private: 5502 private:
5503 LStackCheck* instr_; 5503 LStackCheck* instr_;
5504 }; 5504 };
5505 5505
5506 DCHECK(instr->HasEnvironment()); 5506 DCHECK(instr->HasEnvironment());
5507 LEnvironment* env = instr->environment(); 5507 LEnvironment* env = instr->environment();
5508 // There is no LLazyBailout instruction for stack-checks. We have to 5508 // There is no LLazyBailout instruction for stack-checks. We have to
5509 // prepare for lazy deoptimization explicitly here. 5509 // prepare for lazy deoptimization explicitly here.
5510 if (instr->hydrogen()->is_function_entry()) { 5510 if (instr->hydrogen()->is_function_entry()) {
5511 // Perform stack overflow check. 5511 // Perform stack overflow check.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
5638 public: 5638 public:
5639 DeferredLoadMutableDouble(LCodeGen* codegen, 5639 DeferredLoadMutableDouble(LCodeGen* codegen,
5640 LLoadFieldByIndex* instr, 5640 LLoadFieldByIndex* instr,
5641 Register object, 5641 Register object,
5642 Register index) 5642 Register index)
5643 : LDeferredCode(codegen), 5643 : LDeferredCode(codegen),
5644 instr_(instr), 5644 instr_(instr),
5645 object_(object), 5645 object_(object),
5646 index_(index) { 5646 index_(index) {
5647 } 5647 }
5648 virtual void Generate() OVERRIDE { 5648 void Generate() OVERRIDE {
5649 codegen()->DoDeferredLoadMutableDouble(instr_, object_, index_); 5649 codegen()->DoDeferredLoadMutableDouble(instr_, object_, index_);
5650 } 5650 }
5651 virtual LInstruction* instr() OVERRIDE { return instr_; } 5651 LInstruction* instr() OVERRIDE { return instr_; }
5652
5652 private: 5653 private:
5653 LLoadFieldByIndex* instr_; 5654 LLoadFieldByIndex* instr_;
5654 Register object_; 5655 Register object_;
5655 Register index_; 5656 Register index_;
5656 }; 5657 };
5657 5658
5658 Register object = ToRegister(instr->object()); 5659 Register object = ToRegister(instr->object());
5659 Register index = ToRegister(instr->index()); 5660 Register index = ToRegister(instr->index());
5660 5661
5661 DeferredLoadMutableDouble* deferred; 5662 DeferredLoadMutableDouble* deferred;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
5702 CallRuntime(Runtime::kPushBlockContext, 2, instr); 5703 CallRuntime(Runtime::kPushBlockContext, 2, instr);
5703 RecordSafepoint(Safepoint::kNoLazyDeopt); 5704 RecordSafepoint(Safepoint::kNoLazyDeopt);
5704 } 5705 }
5705 5706
5706 5707
5707 #undef __ 5708 #undef __
5708 5709
5709 } } // namespace v8::internal 5710 } } // namespace v8::internal
5710 5711
5711 #endif // V8_TARGET_ARCH_IA32 5712 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/ia32/code-stubs-ia32.h ('k') | src/ia32/lithium-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698