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

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

Issue 9227007: Version 3.8.6 (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 8 years, 11 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/ia32/full-codegen-ia32.cc ('k') | src/ia32/lithium-codegen-ia32.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 2011 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
11 // with the distribution. 11 // with the distribution.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 void DoDeferredNumberTagD(LNumberTagD* instr); 103 void DoDeferredNumberTagD(LNumberTagD* instr);
104 void DoDeferredNumberTagI(LNumberTagI* instr); 104 void DoDeferredNumberTagI(LNumberTagI* instr);
105 void DoDeferredTaggedToI(LTaggedToI* instr); 105 void DoDeferredTaggedToI(LTaggedToI* instr);
106 void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr); 106 void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr);
107 void DoDeferredStackCheck(LStackCheck* instr); 107 void DoDeferredStackCheck(LStackCheck* instr);
108 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); 108 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr);
109 void DoDeferredStringCharFromCode(LStringCharFromCode* instr); 109 void DoDeferredStringCharFromCode(LStringCharFromCode* instr);
110 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, 110 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
111 Label* map_check); 111 Label* map_check);
112 112
113 void DoCheckMapCommon(Register reg, Handle<Map> map,
114 CompareMapMode mode, LEnvironment* env);
115
113 // Parallel move support. 116 // Parallel move support.
114 void DoParallelMove(LParallelMove* move); 117 void DoParallelMove(LParallelMove* move);
115 void DoGap(LGap* instr); 118 void DoGap(LGap* instr);
116 119
117 // Emit frame translation commands for an environment. 120 // Emit frame translation commands for an environment.
118 void WriteTranslation(LEnvironment* environment, Translation* translation); 121 void WriteTranslation(LEnvironment* environment, Translation* translation);
119 122
120 void EnsureRelocSpaceForDeoptimization(); 123 void EnsureRelocSpaceForDeoptimization();
121 124
122 // Declare methods that deal with the individual node types. 125 // Declare methods that deal with the individual node types.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 void RecordSafepoint(Safepoint::DeoptMode mode); 261 void RecordSafepoint(Safepoint::DeoptMode mode);
259 void RecordSafepointWithRegisters(LPointerMap* pointers, 262 void RecordSafepointWithRegisters(LPointerMap* pointers,
260 int arguments, 263 int arguments,
261 Safepoint::DeoptMode mode); 264 Safepoint::DeoptMode mode);
262 void RecordPosition(int position); 265 void RecordPosition(int position);
263 266
264 static Condition TokenToCondition(Token::Value op, bool is_unsigned); 267 static Condition TokenToCondition(Token::Value op, bool is_unsigned);
265 void EmitGoto(int block); 268 void EmitGoto(int block);
266 void EmitBranch(int left_block, int right_block, Condition cc); 269 void EmitBranch(int left_block, int right_block, Condition cc);
267 void EmitNumberUntagD(Register input, 270 void EmitNumberUntagD(Register input,
271 Register temp,
268 XMMRegister result, 272 XMMRegister result,
269 bool deoptimize_on_undefined, 273 bool deoptimize_on_undefined,
274 bool deoptimize_on_minus_zero,
270 LEnvironment* env); 275 LEnvironment* env);
271 276
272 // Emits optimized code for typeof x == "y". Modifies input register. 277 // Emits optimized code for typeof x == "y". Modifies input register.
273 // Returns the condition on which a final split to 278 // Returns the condition on which a final split to
274 // true and false label should be made, to optimize fallthrough. 279 // true and false label should be made, to optimize fallthrough.
275 Condition EmitTypeofIs(Label* true_label, 280 Condition EmitTypeofIs(Label* true_label,
276 Label* false_label, 281 Label* false_label,
277 Register input, 282 Register input,
278 Handle<String> type_name); 283 Handle<String> type_name);
279 284
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 : codegen_(codegen), 378 : codegen_(codegen),
374 external_exit_(NULL), 379 external_exit_(NULL),
375 instruction_index_(codegen->current_instruction_) { 380 instruction_index_(codegen->current_instruction_) {
376 codegen->AddDeferredCode(this); 381 codegen->AddDeferredCode(this);
377 } 382 }
378 383
379 virtual ~LDeferredCode() { } 384 virtual ~LDeferredCode() { }
380 virtual void Generate() = 0; 385 virtual void Generate() = 0;
381 virtual LInstruction* instr() = 0; 386 virtual LInstruction* instr() = 0;
382 387
383 void SetExit(Label *exit) { external_exit_ = exit; } 388 void SetExit(Label* exit) { external_exit_ = exit; }
384 Label* entry() { return &entry_; } 389 Label* entry() { return &entry_; }
385 Label* exit() { return external_exit_ != NULL ? external_exit_ : &exit_; } 390 Label* exit() { return external_exit_ != NULL ? external_exit_ : &exit_; }
386 int instruction_index() const { return instruction_index_; } 391 int instruction_index() const { return instruction_index_; }
387 392
388 protected: 393 protected:
389 LCodeGen* codegen() const { return codegen_; } 394 LCodeGen* codegen() const { return codegen_; }
390 MacroAssembler* masm() const { return codegen_->masm(); } 395 MacroAssembler* masm() const { return codegen_->masm(); }
391 396
392 private: 397 private:
393 LCodeGen* codegen_; 398 LCodeGen* codegen_;
394 Label entry_; 399 Label entry_;
395 Label exit_; 400 Label exit_;
396 Label* external_exit_; 401 Label* external_exit_;
397 int instruction_index_; 402 int instruction_index_;
398 }; 403 };
399 404
400 } } // namespace v8::internal 405 } } // namespace v8::internal
401 406
402 #endif // V8_IA32_LITHIUM_CODEGEN_IA32_H_ 407 #endif // V8_IA32_LITHIUM_CODEGEN_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/full-codegen-ia32.cc ('k') | src/ia32/lithium-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698