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

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

Issue 293743005: Introduce x87 port (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: rebase Created 6 years, 7 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
« no previous file with comments | « src/x87/lithium-x87.cc ('k') | src/x87/macro-assembler-x87.cc » ('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 #ifndef V8_IA32_MACRO_ASSEMBLER_IA32_H_ 5 #ifndef V8_X87_MACRO_ASSEMBLER_X87_H_
6 #define V8_IA32_MACRO_ASSEMBLER_IA32_H_ 6 #define V8_X87_MACRO_ASSEMBLER_X87_H_
7 7
8 #include "assembler.h" 8 #include "assembler.h"
9 #include "frames.h" 9 #include "frames.h"
10 #include "v8globals.h" 10 #include "v8globals.h"
11 11
12 namespace v8 { 12 namespace v8 {
13 namespace internal { 13 namespace internal {
14 14
15 // Convenience for platform-independent signatures. We do not normally 15 // Convenience for platform-independent signatures. We do not normally
16 // distinguish memory operands from other operands on ia32. 16 // distinguish memory operands from other operands on ia32.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 kReturnAtEnd, 56 kReturnAtEnd,
57 kFallThroughAtEnd 57 kFallThroughAtEnd
58 }; 58 };
59 59
60 // Record in the remembered set the fact that we have a pointer to new space 60 // Record in the remembered set the fact that we have a pointer to new space
61 // at the address pointed to by the addr register. Only works if addr is not 61 // at the address pointed to by the addr register. Only works if addr is not
62 // in new space. 62 // in new space.
63 void RememberedSetHelper(Register object, // Used for debug code. 63 void RememberedSetHelper(Register object, // Used for debug code.
64 Register addr, 64 Register addr,
65 Register scratch, 65 Register scratch,
66 SaveFPRegsMode save_fp,
67 RememberedSetFinalAction and_then); 66 RememberedSetFinalAction and_then);
68 67
69 void CheckPageFlag(Register object, 68 void CheckPageFlag(Register object,
70 Register scratch, 69 Register scratch,
71 int mask, 70 int mask,
72 Condition cc, 71 Condition cc,
73 Label* condition_met, 72 Label* condition_met,
74 Label::Distance condition_met_distance = Label::kFar); 73 Label::Distance condition_met_distance = Label::kFar);
75 74
76 void CheckPageFlagForMap( 75 void CheckPageFlagForMap(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 // Notify the garbage collector that we wrote a pointer into an object. 130 // Notify the garbage collector that we wrote a pointer into an object.
132 // |object| is the object being stored into, |value| is the object being 131 // |object| is the object being stored into, |value| is the object being
133 // stored. value and scratch registers are clobbered by the operation. 132 // stored. value and scratch registers are clobbered by the operation.
134 // The offset is the offset from the start of the object, not the offset from 133 // The offset is the offset from the start of the object, not the offset from
135 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). 134 // the tagged HeapObject pointer. For use with FieldOperand(reg, off).
136 void RecordWriteField( 135 void RecordWriteField(
137 Register object, 136 Register object,
138 int offset, 137 int offset,
139 Register value, 138 Register value,
140 Register scratch, 139 Register scratch,
141 SaveFPRegsMode save_fp,
142 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 140 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
143 SmiCheck smi_check = INLINE_SMI_CHECK); 141 SmiCheck smi_check = INLINE_SMI_CHECK);
144 142
145 // As above, but the offset has the tag presubtracted. For use with 143 // As above, but the offset has the tag presubtracted. For use with
146 // Operand(reg, off). 144 // Operand(reg, off).
147 void RecordWriteContextSlot( 145 void RecordWriteContextSlot(
148 Register context, 146 Register context,
149 int offset, 147 int offset,
150 Register value, 148 Register value,
151 Register scratch, 149 Register scratch,
152 SaveFPRegsMode save_fp,
153 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 150 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
154 SmiCheck smi_check = INLINE_SMI_CHECK) { 151 SmiCheck smi_check = INLINE_SMI_CHECK) {
155 RecordWriteField(context, 152 RecordWriteField(context,
156 offset + kHeapObjectTag, 153 offset + kHeapObjectTag,
157 value, 154 value,
158 scratch, 155 scratch,
159 save_fp,
160 remembered_set_action, 156 remembered_set_action,
161 smi_check); 157 smi_check);
162 } 158 }
163 159
164 // Notify the garbage collector that we wrote a pointer into a fixed array. 160 // Notify the garbage collector that we wrote a pointer into a fixed array.
165 // |array| is the array being stored into, |value| is the 161 // |array| is the array being stored into, |value| is the
166 // object being stored. |index| is the array index represented as a 162 // object being stored. |index| is the array index represented as a
167 // Smi. All registers are clobbered by the operation RecordWriteArray 163 // Smi. All registers are clobbered by the operation RecordWriteArray
168 // filters out smis so it does not update the write barrier if the 164 // filters out smis so it does not update the write barrier if the
169 // value is a smi. 165 // value is a smi.
170 void RecordWriteArray( 166 void RecordWriteArray(
171 Register array, 167 Register array,
172 Register value, 168 Register value,
173 Register index, 169 Register index,
174 SaveFPRegsMode save_fp,
175 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 170 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
176 SmiCheck smi_check = INLINE_SMI_CHECK); 171 SmiCheck smi_check = INLINE_SMI_CHECK);
177 172
178 // For page containing |object| mark region covering |address| 173 // For page containing |object| mark region covering |address|
179 // dirty. |object| is the object being stored into, |value| is the 174 // dirty. |object| is the object being stored into, |value| is the
180 // object being stored. The address and value registers are clobbered by the 175 // object being stored. The address and value registers are clobbered by the
181 // operation. RecordWrite filters out smis so it does not update the 176 // operation. RecordWrite filters out smis so it does not update the
182 // write barrier if the value is a smi. 177 // write barrier if the value is a smi.
183 void RecordWrite( 178 void RecordWrite(
184 Register object, 179 Register object,
185 Register address, 180 Register address,
186 Register value, 181 Register value,
187 SaveFPRegsMode save_fp,
188 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 182 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
189 SmiCheck smi_check = INLINE_SMI_CHECK); 183 SmiCheck smi_check = INLINE_SMI_CHECK);
190 184
191 // For page containing |object| mark the region covering the object's map 185 // For page containing |object| mark the region covering the object's map
192 // dirty. |object| is the object being stored into, |map| is the Map object 186 // dirty. |object| is the object being stored into, |map| is the Map object
193 // that was stored. 187 // that was stored.
194 void RecordWriteForMap( 188 void RecordWriteForMap(
195 Register object, 189 Register object,
196 Handle<Map> map, 190 Handle<Map> map,
197 Register scratch1, 191 Register scratch1,
198 Register scratch2, 192 Register scratch2);
199 SaveFPRegsMode save_fp);
200 193
201 // --------------------------------------------------------------------------- 194 // ---------------------------------------------------------------------------
202 // Debugger Support 195 // Debugger Support
203 196
204 void DebugBreak(); 197 void DebugBreak();
205 198
206 // Generates function and stub prologue code. 199 // Generates function and stub prologue code.
207 void StubPrologue(); 200 void StubPrologue();
208 void Prologue(bool code_pre_aging); 201 void Prologue(bool code_pre_aging);
209 202
210 // Enter specific kind of exit frame. Expects the number of 203 // Enter specific kind of exit frame. Expects the number of
211 // arguments in register eax and sets up the number of arguments in 204 // arguments in register eax and sets up the number of arguments in
212 // register edi and the pointer to the first argument in register 205 // register edi and the pointer to the first argument in register
213 // esi. 206 // esi.
214 void EnterExitFrame(bool save_doubles); 207 void EnterExitFrame();
215 208
216 void EnterApiExitFrame(int argc); 209 void EnterApiExitFrame(int argc);
217 210
218 // Leave the current exit frame. Expects the return value in 211 // Leave the current exit frame. Expects the return value in
219 // register eax:edx (untouched) and the pointer to the first 212 // register eax:edx (untouched) and the pointer to the first
220 // argument in register esi. 213 // argument in register esi.
221 void LeaveExitFrame(bool save_doubles); 214 void LeaveExitFrame();
222 215
223 // Leave the current exit frame. Expects the return value in 216 // Leave the current exit frame. Expects the return value in
224 // register eax (untouched). 217 // register eax (untouched).
225 void LeaveApiExitFrame(bool restore_context); 218 void LeaveApiExitFrame(bool restore_context);
226 219
227 // Find the function context up the context chain. 220 // Find the function context up the context chain.
228 void LoadContext(Register dst, int context_chain_length); 221 void LoadContext(Register dst, int context_chain_length);
229 222
230 // Conditionally load the cached Array transitioned map of type 223 // Conditionally load the cached Array transitioned map of type
231 // transitioned_kind from the native context if the map in register 224 // transitioned_kind from the native context if the map in register
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 InvokeFlag flag, 312 InvokeFlag flag,
320 const CallWrapper& call_wrapper = NullCallWrapper()); 313 const CallWrapper& call_wrapper = NullCallWrapper());
321 314
322 // Store the function for the given builtin in the target register. 315 // Store the function for the given builtin in the target register.
323 void GetBuiltinFunction(Register target, Builtins::JavaScript id); 316 void GetBuiltinFunction(Register target, Builtins::JavaScript id);
324 317
325 // Store the code object for the given builtin in the target register. 318 // Store the code object for the given builtin in the target register.
326 void GetBuiltinEntry(Register target, Builtins::JavaScript id); 319 void GetBuiltinEntry(Register target, Builtins::JavaScript id);
327 320
328 // Expression support 321 // Expression support
329 // cvtsi2sd instruction only writes to the low 64-bit of dst register, which
330 // hinders register renaming and makes dependence chains longer. So we use
331 // xorps to clear the dst register before cvtsi2sd to solve this issue.
332 void Cvtsi2sd(XMMRegister dst, Register src) { Cvtsi2sd(dst, Operand(src)); }
333 void Cvtsi2sd(XMMRegister dst, const Operand& src);
334
335 // Support for constant splitting. 322 // Support for constant splitting.
336 bool IsUnsafeImmediate(const Immediate& x); 323 bool IsUnsafeImmediate(const Immediate& x);
337 void SafeMove(Register dst, const Immediate& x); 324 void SafeMove(Register dst, const Immediate& x);
338 void SafePush(const Immediate& x); 325 void SafePush(const Immediate& x);
339 326
340 // Compare object type for heap object. 327 // Compare object type for heap object.
341 // Incoming register is heap_object and outgoing register is map. 328 // Incoming register is heap_object and outgoing register is map.
342 void CmpObjectType(Register heap_object, InstanceType type, Register map); 329 void CmpObjectType(Register heap_object, InstanceType type, Register map);
343 330
344 // Compare instance type for map. 331 // Compare instance type for map.
(...skipping 16 matching lines...) Expand all
361 void CheckFastSmiElements(Register map, 348 void CheckFastSmiElements(Register map,
362 Label* fail, 349 Label* fail,
363 Label::Distance distance = Label::kFar); 350 Label::Distance distance = Label::kFar);
364 351
365 // Check to see if maybe_number can be stored as a double in 352 // Check to see if maybe_number can be stored as a double in
366 // FastDoubleElements. If it can, store it at the index specified by key in 353 // FastDoubleElements. If it can, store it at the index specified by key in
367 // the FastDoubleElements array elements, otherwise jump to fail. 354 // the FastDoubleElements array elements, otherwise jump to fail.
368 void StoreNumberToDoubleElements(Register maybe_number, 355 void StoreNumberToDoubleElements(Register maybe_number,
369 Register elements, 356 Register elements,
370 Register key, 357 Register key,
371 Register scratch1, 358 Register scratch,
372 XMMRegister scratch2,
373 Label* fail, 359 Label* fail,
374 int offset = 0); 360 int offset = 0);
375 361
376 // Compare an object's map with the specified map. 362 // Compare an object's map with the specified map.
377 void CompareMap(Register obj, Handle<Map> map); 363 void CompareMap(Register obj, Handle<Map> map);
378 364
379 // Check if the map of an object is equal to a specified map and branch to 365 // Check if the map of an object is equal to a specified map and branch to
380 // label if not. Skip the smi check if not required (object is known to be a 366 // label if not. Skip the smi check if not required (object is known to be a
381 // heap object). If mode is ALLOW_ELEMENT_TRANSITION_MAPS, then also match 367 // heap object). If mode is ALLOW_ELEMENT_TRANSITION_MAPS, then also match
382 // against maps that are ElementsKind transition maps of the specified map. 368 // against maps that are ElementsKind transition maps of the specified map.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 409
424 // The contents of the scratch register will be overwritten. 410 // The contents of the scratch register will be overwritten.
425 void IsInstanceJSObjectType(Register map, Register scratch, Label* fail); 411 void IsInstanceJSObjectType(Register map, Register scratch, Label* fail);
426 412
427 // FCmp is similar to integer cmp, but requires unsigned 413 // FCmp is similar to integer cmp, but requires unsigned
428 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). 414 // jcc instructions (je, ja, jae, jb, jbe, je, and jz).
429 void FCmp(); 415 void FCmp();
430 416
431 void ClampUint8(Register reg); 417 void ClampUint8(Register reg);
432 418
433 void ClampDoubleToUint8(XMMRegister input_reg,
434 XMMRegister scratch_reg,
435 Register result_reg);
436
437 void SlowTruncateToI(Register result_reg, Register input_reg, 419 void SlowTruncateToI(Register result_reg, Register input_reg,
438 int offset = HeapNumber::kValueOffset - kHeapObjectTag); 420 int offset = HeapNumber::kValueOffset - kHeapObjectTag);
439 421
440 void TruncateHeapNumberToI(Register result_reg, Register input_reg); 422 void TruncateHeapNumberToI(Register result_reg, Register input_reg);
441 void TruncateDoubleToI(Register result_reg, XMMRegister input_reg); 423 void TruncateX87TOSToI(Register result_reg);
442 424
443 void DoubleToI(Register result_reg, XMMRegister input_reg, 425 void X87TOSToI(Register result_reg, MinusZeroMode minus_zero_mode,
444 XMMRegister scratch, MinusZeroMode minus_zero_mode,
445 Label* conversion_failed, Label::Distance dst = Label::kFar); 426 Label* conversion_failed, Label::Distance dst = Label::kFar);
446 427
447 void TaggedToI(Register result_reg, Register input_reg, XMMRegister temp, 428 void TaggedToI(Register result_reg, Register input_reg,
448 MinusZeroMode minus_zero_mode, Label* lost_precision); 429 MinusZeroMode minus_zero_mode, Label* lost_precision);
449 430
450 // Smi tagging support. 431 // Smi tagging support.
451 void SmiTag(Register reg) { 432 void SmiTag(Register reg) {
452 STATIC_ASSERT(kSmiTag == 0); 433 STATIC_ASSERT(kSmiTag == 0);
453 STATIC_ASSERT(kSmiTagSize == 1); 434 STATIC_ASSERT(kSmiTagSize == 1);
454 add(reg, reg); 435 add(reg, reg);
455 } 436 }
456 void SmiUntag(Register reg) { 437 void SmiUntag(Register reg) {
457 sar(reg, kSmiTagSize); 438 sar(reg, kSmiTagSize);
458 } 439 }
459 440
460 // Modifies the register even if it does not contain a Smi! 441 // Modifies the register even if it does not contain a Smi!
461 void SmiUntag(Register reg, Label* is_smi) { 442 void SmiUntag(Register reg, Label* is_smi) {
462 STATIC_ASSERT(kSmiTagSize == 1); 443 STATIC_ASSERT(kSmiTagSize == 1);
463 sar(reg, kSmiTagSize); 444 sar(reg, kSmiTagSize);
464 STATIC_ASSERT(kSmiTag == 0); 445 STATIC_ASSERT(kSmiTag == 0);
465 j(not_carry, is_smi); 446 j(not_carry, is_smi);
466 } 447 }
467 448
468 void LoadUint32(XMMRegister dst, Register src, XMMRegister scratch); 449 void LoadUint32NoSSE2(Register src);
469 450
470 // Jump the register contains a smi. 451 // Jump the register contains a smi.
471 inline void JumpIfSmi(Register value, 452 inline void JumpIfSmi(Register value,
472 Label* smi_label, 453 Label* smi_label,
473 Label::Distance distance = Label::kFar) { 454 Label::Distance distance = Label::kFar) {
474 test(value, Immediate(kSmiTagMask)); 455 test(value, Immediate(kSmiTagMask));
475 j(zero, smi_label, distance); 456 j(zero, smi_label, distance);
476 } 457 }
477 // Jump if the operand is a smi. 458 // Jump if the operand is a smi.
478 inline void JumpIfSmi(Operand value, 459 inline void JumpIfSmi(Operand value,
(...skipping 14 matching lines...) Expand all
493 void EnumLength(Register dst, Register map); 474 void EnumLength(Register dst, Register map);
494 void NumberOfOwnDescriptors(Register dst, Register map); 475 void NumberOfOwnDescriptors(Register dst, Register map);
495 476
496 template<typename Field> 477 template<typename Field>
497 void DecodeField(Register reg) { 478 void DecodeField(Register reg) {
498 static const int shift = Field::kShift; 479 static const int shift = Field::kShift;
499 static const int mask = Field::kMask >> Field::kShift; 480 static const int mask = Field::kMask >> Field::kShift;
500 sar(reg, shift); 481 sar(reg, shift);
501 and_(reg, Immediate(mask)); 482 and_(reg, Immediate(mask));
502 } 483 }
503 void LoadPowerOf2(XMMRegister dst, Register scratch, int power);
504 484
505 // Abort execution if argument is not a number, enabled via --debug-code. 485 // Abort execution if argument is not a number, enabled via --debug-code.
506 void AssertNumber(Register object); 486 void AssertNumber(Register object);
507 487
508 // Abort execution if argument is not a smi, enabled via --debug-code. 488 // Abort execution if argument is not a smi, enabled via --debug-code.
509 void AssertSmi(Register object); 489 void AssertSmi(Register object);
510 490
511 // Abort execution if argument is a smi, enabled via --debug-code. 491 // Abort execution if argument is a smi, enabled via --debug-code.
512 void AssertNotSmi(Register object); 492 void AssertNotSmi(Register object);
513 493
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 // Call a code stub. Generate the code if necessary. 690 // Call a code stub. Generate the code if necessary.
711 void CallStub(CodeStub* stub, TypeFeedbackId ast_id = TypeFeedbackId::None()); 691 void CallStub(CodeStub* stub, TypeFeedbackId ast_id = TypeFeedbackId::None());
712 692
713 // Tail call a code stub (jump). Generate the code if necessary. 693 // Tail call a code stub (jump). Generate the code if necessary.
714 void TailCallStub(CodeStub* stub); 694 void TailCallStub(CodeStub* stub);
715 695
716 // Return from a code stub after popping its arguments. 696 // Return from a code stub after popping its arguments.
717 void StubReturn(int argc); 697 void StubReturn(int argc);
718 698
719 // Call a runtime routine. 699 // Call a runtime routine.
720 void CallRuntime(const Runtime::Function* f, 700 void CallRuntime(const Runtime::Function* f, int num_arguments);
721 int num_arguments, 701 // Convenience function: Same as above, but takes the fid instead.
722 SaveFPRegsMode save_doubles = kDontSaveFPRegs); 702 void CallRuntime(Runtime::FunctionId id) {
723 void CallRuntimeSaveDoubles(Runtime::FunctionId id) {
724 const Runtime::Function* function = Runtime::FunctionForId(id); 703 const Runtime::Function* function = Runtime::FunctionForId(id);
725 CallRuntime(function, function->nargs, kSaveFPRegs); 704 CallRuntime(function, function->nargs);
726 } 705 }
727 706 void CallRuntime(Runtime::FunctionId id, int num_arguments) {
728 // Convenience function: Same as above, but takes the fid instead. 707 CallRuntime(Runtime::FunctionForId(id), num_arguments);
729 void CallRuntime(Runtime::FunctionId id,
730 int num_arguments,
731 SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
732 CallRuntime(Runtime::FunctionForId(id), num_arguments, save_doubles);
733 } 708 }
734 709
735 // Convenience function: call an external reference. 710 // Convenience function: call an external reference.
736 void CallExternalReference(ExternalReference ref, int num_arguments); 711 void CallExternalReference(ExternalReference ref, int num_arguments);
737 712
738 // Tail call of a runtime routine (jump). 713 // Tail call of a runtime routine (jump).
739 // Like JumpToExternalReference, but also takes care of passing the number 714 // Like JumpToExternalReference, but also takes care of passing the number
740 // of parameters. 715 // of parameters.
741 void TailCallExternalReference(const ExternalReference& ext, 716 void TailCallExternalReference(const ExternalReference& ext,
742 int num_arguments, 717 int num_arguments,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 call(self, RelocInfo::CODE_TARGET); 783 call(self, RelocInfo::CODE_TARGET);
809 } 784 }
810 785
811 // Move if the registers are not identical. 786 // Move if the registers are not identical.
812 void Move(Register target, Register source); 787 void Move(Register target, Register source);
813 788
814 // Move a constant into a destination using the most efficient encoding. 789 // Move a constant into a destination using the most efficient encoding.
815 void Move(Register dst, const Immediate& x); 790 void Move(Register dst, const Immediate& x);
816 void Move(const Operand& dst, const Immediate& x); 791 void Move(const Operand& dst, const Immediate& x);
817 792
818 // Move an immediate into an XMM register.
819 void Move(XMMRegister dst, double val);
820
821 // Push a handle value. 793 // Push a handle value.
822 void Push(Handle<Object> handle) { push(Immediate(handle)); } 794 void Push(Handle<Object> handle) { push(Immediate(handle)); }
823 void Push(Smi* smi) { Push(Handle<Smi>(smi, isolate())); } 795 void Push(Smi* smi) { Push(Handle<Smi>(smi, isolate())); }
824 796
825 Handle<Object> CodeObject() { 797 Handle<Object> CodeObject() {
826 ASSERT(!code_object_.is_null()); 798 ASSERT(!code_object_.is_null());
827 return code_object_; 799 return code_object_;
828 } 800 }
829 801
802 // Insert code to verify that the x87 stack has the specified depth (0-7)
803 void VerifyX87StackDepth(uint32_t depth);
804
830 // Emit code for a truncating division by a constant. The dividend register is 805 // Emit code for a truncating division by a constant. The dividend register is
831 // unchanged, the result is in edx, and eax gets clobbered. 806 // unchanged, the result is in edx, and eax gets clobbered.
832 void TruncatingDiv(Register dividend, int32_t divisor); 807 void TruncatingDiv(Register dividend, int32_t divisor);
833 808
834 // --------------------------------------------------------------------------- 809 // ---------------------------------------------------------------------------
835 // StatsCounter support 810 // StatsCounter support
836 811
837 void SetCounter(StatsCounter* counter, int value); 812 void SetCounter(StatsCounter* counter, int value);
838 void IncrementCounter(StatsCounter* counter, int value); 813 void IncrementCounter(StatsCounter* counter, int value);
839 void DecrementCounter(StatsCounter* counter, int value); 814 void DecrementCounter(StatsCounter* counter, int value);
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 const ParameterCount& actual, 931 const ParameterCount& actual,
957 Handle<Code> code_constant, 932 Handle<Code> code_constant,
958 const Operand& code_operand, 933 const Operand& code_operand,
959 Label* done, 934 Label* done,
960 bool* definitely_mismatches, 935 bool* definitely_mismatches,
961 InvokeFlag flag, 936 InvokeFlag flag,
962 Label::Distance done_distance, 937 Label::Distance done_distance,
963 const CallWrapper& call_wrapper = NullCallWrapper()); 938 const CallWrapper& call_wrapper = NullCallWrapper());
964 939
965 void EnterExitFramePrologue(); 940 void EnterExitFramePrologue();
966 void EnterExitFrameEpilogue(int argc, bool save_doubles); 941 void EnterExitFrameEpilogue(int argc);
967 942
968 void LeaveExitFrameEpilogue(bool restore_context); 943 void LeaveExitFrameEpilogue(bool restore_context);
969 944
970 // Allocation support helpers. 945 // Allocation support helpers.
971 void LoadAllocationTopHelper(Register result, 946 void LoadAllocationTopHelper(Register result,
972 Register scratch, 947 Register scratch,
973 AllocationFlags flags); 948 AllocationFlags flags);
974 949
975 void UpdateAllocationTopHelper(Register result_end, 950 void UpdateAllocationTopHelper(Register result_end,
976 Register scratch, 951 Register scratch,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 masm->popfd(); \ 1057 masm->popfd(); \
1083 } \ 1058 } \
1084 masm-> 1059 masm->
1085 #else 1060 #else
1086 #define ACCESS_MASM(masm) masm-> 1061 #define ACCESS_MASM(masm) masm->
1087 #endif 1062 #endif
1088 1063
1089 1064
1090 } } // namespace v8::internal 1065 } } // namespace v8::internal
1091 1066
1092 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 1067 #endif // V8_X87_MACRO_ASSEMBLER_X87_H_
OLDNEW
« no previous file with comments | « src/x87/lithium-x87.cc ('k') | src/x87/macro-assembler-x87.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698