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

Side by Side Diff: src/x87/macro-assembler-x87.cc

Issue 305013012: X87: Don't push eax/rax before calling Runtime_Abort (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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/x87/macro-assembler-x87.h ('k') | no next file » | 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 "v8.h" 5 #include "v8.h"
6 6
7 #if V8_TARGET_ARCH_X87 7 #if V8_TARGET_ARCH_X87
8 8
9 #include "bootstrapper.h" 9 #include "bootstrapper.h"
10 #include "codegen.h" 10 #include "codegen.h"
(...skipping 2665 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 RecordComment("Abort message: "); 2676 RecordComment("Abort message: ");
2677 RecordComment(msg); 2677 RecordComment(msg);
2678 } 2678 }
2679 2679
2680 if (FLAG_trap_on_abort) { 2680 if (FLAG_trap_on_abort) {
2681 int3(); 2681 int3();
2682 return; 2682 return;
2683 } 2683 }
2684 #endif 2684 #endif
2685 2685
2686 push(eax);
2687 push(Immediate(reinterpret_cast<intptr_t>(Smi::FromInt(reason)))); 2686 push(Immediate(reinterpret_cast<intptr_t>(Smi::FromInt(reason))));
2688 // Disable stub call restrictions to always allow calls to abort. 2687 // Disable stub call restrictions to always allow calls to abort.
2689 if (!has_frame_) { 2688 if (!has_frame_) {
2690 // We don't actually want to generate a pile of code for this, so just 2689 // We don't actually want to generate a pile of code for this, so just
2691 // claim there is a stack frame, without generating one. 2690 // claim there is a stack frame, without generating one.
2692 FrameScope scope(this, StackFrame::NONE); 2691 FrameScope scope(this, StackFrame::NONE);
2693 CallRuntime(Runtime::kAbort, 1); 2692 CallRuntime(Runtime::kAbort, 1);
2694 } else { 2693 } else {
2695 CallRuntime(Runtime::kAbort, 1); 2694 CallRuntime(Runtime::kAbort, 1);
2696 } 2695 }
2697 // will not return here 2696 // will not return here
2698 int3(); 2697 int3();
2699 } 2698 }
2700 2699
2701 2700
2702 void MacroAssembler::Throw(BailoutReason reason) {
2703 #ifdef DEBUG
2704 const char* msg = GetBailoutReason(reason);
2705 if (msg != NULL) {
2706 RecordComment("Throw message: ");
2707 RecordComment(msg);
2708 }
2709 #endif
2710
2711 push(eax);
2712 push(Immediate(Smi::FromInt(reason)));
2713 // Disable stub call restrictions to always allow calls to throw.
2714 if (!has_frame_) {
2715 // We don't actually want to generate a pile of code for this, so just
2716 // claim there is a stack frame, without generating one.
2717 FrameScope scope(this, StackFrame::NONE);
2718 CallRuntime(Runtime::kHiddenThrowMessage, 1);
2719 } else {
2720 CallRuntime(Runtime::kHiddenThrowMessage, 1);
2721 }
2722 // will not return here
2723 int3();
2724 }
2725
2726
2727 void MacroAssembler::ThrowIf(Condition cc, BailoutReason reason) {
2728 Label L;
2729 j(NegateCondition(cc), &L);
2730 Throw(reason);
2731 // will not return here
2732 bind(&L);
2733 }
2734
2735
2736 void MacroAssembler::LoadInstanceDescriptors(Register map, 2701 void MacroAssembler::LoadInstanceDescriptors(Register map,
2737 Register descriptors) { 2702 Register descriptors) {
2738 mov(descriptors, FieldOperand(map, Map::kDescriptorsOffset)); 2703 mov(descriptors, FieldOperand(map, Map::kDescriptorsOffset));
2739 } 2704 }
2740 2705
2741 2706
2742 void MacroAssembler::NumberOfOwnDescriptors(Register dst, Register map) { 2707 void MacroAssembler::NumberOfOwnDescriptors(Register dst, Register map) {
2743 mov(dst, FieldOperand(map, Map::kBitField3Offset)); 2708 mov(dst, FieldOperand(map, Map::kBitField3Offset));
2744 DecodeField<Map::NumberOfOwnDescriptorsBits>(dst); 2709 DecodeField<Map::NumberOfOwnDescriptorsBits>(dst);
2745 } 2710 }
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
3323 if (ms.shift() > 0) sar(edx, ms.shift()); 3288 if (ms.shift() > 0) sar(edx, ms.shift());
3324 mov(eax, dividend); 3289 mov(eax, dividend);
3325 shr(eax, 31); 3290 shr(eax, 31);
3326 add(edx, eax); 3291 add(edx, eax);
3327 } 3292 }
3328 3293
3329 3294
3330 } } // namespace v8::internal 3295 } } // namespace v8::internal
3331 3296
3332 #endif // V8_TARGET_ARCH_X87 3297 #endif // V8_TARGET_ARCH_X87
OLDNEW
« no previous file with comments | « src/x87/macro-assembler-x87.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698