| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ | 5 #ifndef V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ |
| 6 #define V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ | 6 #define V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ |
| 7 | 7 |
| 8 #include "src/arm64/lithium-arm64.h" | 8 #include "src/arm64/lithium-arm64.h" |
| 9 | 9 |
| 10 #include "src/arm64/lithium-gap-resolver-arm64.h" | 10 #include "src/arm64/lithium-gap-resolver-arm64.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 frame_is_built_(false), | 37 frame_is_built_(false), |
| 38 safepoints_(info->zone()), | 38 safepoints_(info->zone()), |
| 39 resolver_(this), | 39 resolver_(this), |
| 40 expected_safepoint_kind_(Safepoint::kSimple), | 40 expected_safepoint_kind_(Safepoint::kSimple), |
| 41 after_push_argument_(false), | 41 after_push_argument_(false), |
| 42 inlined_arguments_(false) { | 42 inlined_arguments_(false) { |
| 43 PopulateDeoptimizationLiteralsWithInlinedFunctions(); | 43 PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
| 44 } | 44 } |
| 45 | 45 |
| 46 ~LCodeGen() { | 46 ~LCodeGen() { |
| 47 ASSERT(!after_push_argument_ || inlined_arguments_); | 47 DCHECK(!after_push_argument_ || inlined_arguments_); |
| 48 } | 48 } |
| 49 | 49 |
| 50 // Simple accessors. | 50 // Simple accessors. |
| 51 Scope* scope() const { return scope_; } | 51 Scope* scope() const { return scope_; } |
| 52 | 52 |
| 53 int LookupDestination(int block_id) const { | 53 int LookupDestination(int block_id) const { |
| 54 return chunk()->LookupDestination(block_id); | 54 return chunk()->LookupDestination(block_id); |
| 55 } | 55 } |
| 56 | 56 |
| 57 bool IsNextEmittedBlock(int block_id) const { | 57 bool IsNextEmittedBlock(int block_id) const { |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 // jssp is modified and we never know if we are in a block after or before | 380 // jssp is modified and we never know if we are in a block after or before |
| 381 // the pop of the arguments (which restores jssp). | 381 // the pop of the arguments (which restores jssp). |
| 382 bool inlined_arguments_; | 382 bool inlined_arguments_; |
| 383 | 383 |
| 384 int old_position_; | 384 int old_position_; |
| 385 | 385 |
| 386 class PushSafepointRegistersScope BASE_EMBEDDED { | 386 class PushSafepointRegistersScope BASE_EMBEDDED { |
| 387 public: | 387 public: |
| 388 explicit PushSafepointRegistersScope(LCodeGen* codegen) | 388 explicit PushSafepointRegistersScope(LCodeGen* codegen) |
| 389 : codegen_(codegen) { | 389 : codegen_(codegen) { |
| 390 ASSERT(codegen_->info()->is_calling()); | 390 DCHECK(codegen_->info()->is_calling()); |
| 391 ASSERT(codegen_->expected_safepoint_kind_ == Safepoint::kSimple); | 391 DCHECK(codegen_->expected_safepoint_kind_ == Safepoint::kSimple); |
| 392 codegen_->expected_safepoint_kind_ = Safepoint::kWithRegisters; | 392 codegen_->expected_safepoint_kind_ = Safepoint::kWithRegisters; |
| 393 | 393 |
| 394 UseScratchRegisterScope temps(codegen_->masm_); | 394 UseScratchRegisterScope temps(codegen_->masm_); |
| 395 // Preserve the value of lr which must be saved on the stack (the call to | 395 // Preserve the value of lr which must be saved on the stack (the call to |
| 396 // the stub will clobber it). | 396 // the stub will clobber it). |
| 397 Register to_be_pushed_lr = | 397 Register to_be_pushed_lr = |
| 398 temps.UnsafeAcquire(StoreRegistersStateStub::to_be_pushed_lr()); | 398 temps.UnsafeAcquire(StoreRegistersStateStub::to_be_pushed_lr()); |
| 399 codegen_->masm_->Mov(to_be_pushed_lr, lr); | 399 codegen_->masm_->Mov(to_be_pushed_lr, lr); |
| 400 StoreRegistersStateStub stub(codegen_->isolate()); | 400 StoreRegistersStateStub stub(codegen_->isolate()); |
| 401 codegen_->masm_->CallStub(&stub); | 401 codegen_->masm_->CallStub(&stub); |
| 402 } | 402 } |
| 403 | 403 |
| 404 ~PushSafepointRegistersScope() { | 404 ~PushSafepointRegistersScope() { |
| 405 ASSERT(codegen_->expected_safepoint_kind_ == Safepoint::kWithRegisters); | 405 DCHECK(codegen_->expected_safepoint_kind_ == Safepoint::kWithRegisters); |
| 406 RestoreRegistersStateStub stub(codegen_->isolate()); | 406 RestoreRegistersStateStub stub(codegen_->isolate()); |
| 407 codegen_->masm_->CallStub(&stub); | 407 codegen_->masm_->CallStub(&stub); |
| 408 codegen_->expected_safepoint_kind_ = Safepoint::kSimple; | 408 codegen_->expected_safepoint_kind_ = Safepoint::kSimple; |
| 409 } | 409 } |
| 410 | 410 |
| 411 private: | 411 private: |
| 412 LCodeGen* codegen_; | 412 LCodeGen* codegen_; |
| 413 }; | 413 }; |
| 414 | 414 |
| 415 friend class LDeferredCode; | 415 friend class LDeferredCode; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 | 468 |
| 469 protected: | 469 protected: |
| 470 MacroAssembler* masm() const { return codegen_->masm(); } | 470 MacroAssembler* masm() const { return codegen_->masm(); } |
| 471 | 471 |
| 472 LCodeGen* codegen_; | 472 LCodeGen* codegen_; |
| 473 }; | 473 }; |
| 474 | 474 |
| 475 } } // namespace v8::internal | 475 } } // namespace v8::internal |
| 476 | 476 |
| 477 #endif // V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ | 477 #endif // V8_ARM64_LITHIUM_CODEGEN_ARM64_H_ |
| OLD | NEW |