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

Side by Side Diff: src/x64/lithium-codegen-x64.h

Issue 21014003: Optionally use 31-bits SMI value for 64-bit system (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed danno's comments Created 7 years, 4 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 25 matching lines...) Expand all
36 #include "scopes.h" 36 #include "scopes.h"
37 #include "v8utils.h" 37 #include "v8utils.h"
38 #include "x64/lithium-gap-resolver-x64.h" 38 #include "x64/lithium-gap-resolver-x64.h"
39 39
40 namespace v8 { 40 namespace v8 {
41 namespace internal { 41 namespace internal {
42 42
43 // Forward declarations. 43 // Forward declarations.
44 class LDeferredCode; 44 class LDeferredCode;
45 class SafepointGenerator; 45 class SafepointGenerator;
46 class LithiumSmiInstructionWrapper;
46 47
47 class LCodeGen BASE_EMBEDDED { 48 class LCodeGen BASE_EMBEDDED {
48 public: 49 public:
49 LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info) 50 LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info)
50 : zone_(info->zone()), 51 : zone_(info->zone()),
51 chunk_(static_cast<LPlatformChunk*>(chunk)), 52 chunk_(static_cast<LPlatformChunk*>(chunk)),
52 masm_(assembler), 53 masm_(assembler),
53 info_(info), 54 info_(info),
54 current_block_(-1), 55 current_block_(-1),
55 current_instruction_(-1), 56 current_instruction_(-1),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 // chunk contains constructs we cannot handle. Returns true if the 116 // chunk contains constructs we cannot handle. Returns true if the
116 // code generation attempt succeeded. 117 // code generation attempt succeeded.
117 bool GenerateCode(); 118 bool GenerateCode();
118 119
119 // Finish the code by setting stack height, safepoint, and bailout 120 // Finish the code by setting stack height, safepoint, and bailout
120 // information on it. 121 // information on it.
121 void FinishCode(Handle<Code> code); 122 void FinishCode(Handle<Code> code);
122 123
123 // Deferred code support. 124 // Deferred code support.
124 void DoDeferredNumberTagD(LNumberTagD* instr); 125 void DoDeferredNumberTagD(LNumberTagD* instr);
126 void DoDeferredNumberTagI(LNumberTagI* instr);
125 void DoDeferredNumberTagU(LNumberTagU* instr); 127 void DoDeferredNumberTagU(LNumberTagU* instr);
126 void DoDeferredTaggedToI(LTaggedToI* instr); 128 void DoDeferredTaggedToI(LTaggedToI* instr);
127 void DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr); 129 void DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr);
128 void DoDeferredStackCheck(LStackCheck* instr); 130 void DoDeferredStackCheck(LStackCheck* instr);
129 void DoDeferredRandom(LRandom* instr); 131 void DoDeferredRandom(LRandom* instr);
130 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); 132 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr);
131 void DoDeferredStringCharFromCode(LStringCharFromCode* instr); 133 void DoDeferredStringCharFromCode(LStringCharFromCode* instr);
132 void DoDeferredAllocate(LAllocate* instr); 134 void DoDeferredAllocate(LAllocate* instr);
133 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, 135 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
134 Label* map_check); 136 Label* map_check);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 Register ToRegister(int index) const; 263 Register ToRegister(int index) const;
262 XMMRegister ToDoubleRegister(int index) const; 264 XMMRegister ToDoubleRegister(int index) const;
263 Operand BuildFastArrayOperand( 265 Operand BuildFastArrayOperand(
264 LOperand* elements_pointer, 266 LOperand* elements_pointer,
265 LOperand* key, 267 LOperand* key,
266 ElementsKind elements_kind, 268 ElementsKind elements_kind,
267 uint32_t offset, 269 uint32_t offset,
268 uint32_t additional_index = 0); 270 uint32_t additional_index = 0);
269 271
270 void EmitIntegerMathAbs(LMathAbs* instr); 272 void EmitIntegerMathAbs(LMathAbs* instr);
271 void EmitInteger64MathAbs(LMathAbs* instr); 273 void EmitSmiMathAbs(LMathAbs* instr);
272 274
273 // Support for recording safepoint and position information. 275 // Support for recording safepoint and position information.
274 void RecordSafepoint(LPointerMap* pointers, 276 void RecordSafepoint(LPointerMap* pointers,
275 Safepoint::Kind kind, 277 Safepoint::Kind kind,
276 int arguments, 278 int arguments,
277 Safepoint::DeoptMode mode); 279 Safepoint::DeoptMode mode);
278 void RecordSafepoint(LPointerMap* pointers, Safepoint::DeoptMode mode); 280 void RecordSafepoint(LPointerMap* pointers, Safepoint::DeoptMode mode);
279 void RecordSafepoint(Safepoint::DeoptMode mode); 281 void RecordSafepoint(Safepoint::DeoptMode mode);
280 void RecordSafepointWithRegisters(LPointerMap* pointers, 282 void RecordSafepointWithRegisters(LPointerMap* pointers,
281 int arguments, 283 int arguments,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 codegen_->expected_safepoint_kind_ = Safepoint::kSimple; 401 codegen_->expected_safepoint_kind_ = Safepoint::kSimple;
400 } 402 }
401 403
402 private: 404 private:
403 LCodeGen* codegen_; 405 LCodeGen* codegen_;
404 }; 406 };
405 407
406 friend class LDeferredCode; 408 friend class LDeferredCode;
407 friend class LEnvironment; 409 friend class LEnvironment;
408 friend class SafepointGenerator; 410 friend class SafepointGenerator;
411 friend class LithiumSmiInstructionWrapper;
409 DISALLOW_COPY_AND_ASSIGN(LCodeGen); 412 DISALLOW_COPY_AND_ASSIGN(LCodeGen);
410 }; 413 };
411 414
412 415
413 class LDeferredCode: public ZoneObject { 416 class LDeferredCode: public ZoneObject {
414 public: 417 public:
415 explicit LDeferredCode(LCodeGen* codegen) 418 explicit LDeferredCode(LCodeGen* codegen)
416 : codegen_(codegen), 419 : codegen_(codegen),
417 external_exit_(NULL), 420 external_exit_(NULL),
418 instruction_index_(codegen->current_instruction_) { 421 instruction_index_(codegen->current_instruction_) {
(...skipping 17 matching lines...) Expand all
436 LCodeGen* codegen_; 439 LCodeGen* codegen_;
437 Label entry_; 440 Label entry_;
438 Label exit_; 441 Label exit_;
439 Label* external_exit_; 442 Label* external_exit_;
440 int instruction_index_; 443 int instruction_index_;
441 }; 444 };
442 445
443 } } // namespace v8::internal 446 } } // namespace v8::internal
444 447
445 #endif // V8_X64_LITHIUM_CODEGEN_X64_H_ 448 #endif // V8_X64_LITHIUM_CODEGEN_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698