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

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

Issue 797943002: Consistently use only one of virtual/OVERRIDE/FINAL. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Removed temporary hack. Created 6 years 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/x64/lithium-codegen-x64.cc ('k') | src/x87/code-stubs-x87.h » ('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_X64_LITHIUM_X64_H_ 5 #ifndef V8_X64_LITHIUM_X64_H_
6 #define V8_X64_LITHIUM_X64_H_ 6 #define V8_X64_LITHIUM_X64_H_
7 7
8 #include "src/hydrogen.h" 8 #include "src/hydrogen.h"
9 #include "src/lithium.h" 9 #include "src/lithium.h"
10 #include "src/lithium-allocator.h" 10 #include "src/lithium-allocator.h"
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 V(ToFastProperties) \ 156 V(ToFastProperties) \
157 V(TransitionElementsKind) \ 157 V(TransitionElementsKind) \
158 V(TrapAllocationMemento) \ 158 V(TrapAllocationMemento) \
159 V(Typeof) \ 159 V(Typeof) \
160 V(TypeofIsAndBranch) \ 160 V(TypeofIsAndBranch) \
161 V(Uint32ToDouble) \ 161 V(Uint32ToDouble) \
162 V(UnknownOSRValue) \ 162 V(UnknownOSRValue) \
163 V(WrapReceiver) 163 V(WrapReceiver)
164 164
165 165
166 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ 166 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
167 virtual Opcode opcode() const FINAL OVERRIDE { \ 167 Opcode opcode() const FINAL { return LInstruction::k##type; } \
168 return LInstruction::k##type; \ 168 void CompileToNative(LCodeGen* generator) FINAL; \
169 } \ 169 const char* Mnemonic() const FINAL { return mnemonic; } \
170 virtual void CompileToNative(LCodeGen* generator) FINAL OVERRIDE; \ 170 static L##type* cast(LInstruction* instr) { \
171 virtual const char* Mnemonic() const FINAL OVERRIDE { \ 171 DCHECK(instr->Is##type()); \
172 return mnemonic; \ 172 return reinterpret_cast<L##type*>(instr); \
173 } \
174 static L##type* cast(LInstruction* instr) { \
175 DCHECK(instr->Is##type()); \
176 return reinterpret_cast<L##type*>(instr); \
177 } 173 }
178 174
179 175
180 #define DECLARE_HYDROGEN_ACCESSOR(type) \ 176 #define DECLARE_HYDROGEN_ACCESSOR(type) \
181 H##type* hydrogen() const { \ 177 H##type* hydrogen() const { \
182 return H##type::cast(hydrogen_value()); \ 178 return H##type::cast(hydrogen_value()); \
183 } 179 }
184 180
185 181
186 class LInstruction : public ZoneObject { 182 class LInstruction : public ZoneObject {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 int bit_field_; 281 int bit_field_;
286 }; 282 };
287 283
288 284
289 // R = number of result operands (0 or 1). 285 // R = number of result operands (0 or 1).
290 template<int R> 286 template<int R>
291 class LTemplateResultInstruction : public LInstruction { 287 class LTemplateResultInstruction : public LInstruction {
292 public: 288 public:
293 // Allow 0 or 1 output operands. 289 // Allow 0 or 1 output operands.
294 STATIC_ASSERT(R == 0 || R == 1); 290 STATIC_ASSERT(R == 0 || R == 1);
295 virtual bool HasResult() const FINAL OVERRIDE { 291 bool HasResult() const FINAL { return R != 0 && result() != NULL; }
296 return R != 0 && result() != NULL;
297 }
298 void set_result(LOperand* operand) { results_[0] = operand; } 292 void set_result(LOperand* operand) { results_[0] = operand; }
299 LOperand* result() const { return results_[0]; } 293 LOperand* result() const OVERRIDE { return results_[0]; }
300 294
301 virtual bool MustSignExtendResult( 295 bool MustSignExtendResult(LPlatformChunk* chunk) const FINAL;
302 LPlatformChunk* chunk) const FINAL OVERRIDE;
303 296
304 protected: 297 protected:
305 EmbeddedContainer<LOperand*, R> results_; 298 EmbeddedContainer<LOperand*, R> results_;
306 }; 299 };
307 300
308 301
309 // R = number of result operands (0 or 1). 302 // R = number of result operands (0 or 1).
310 // I = number of input operands. 303 // I = number of input operands.
311 // T = number of temporary operands. 304 // T = number of temporary operands.
312 template<int R, int I, int T> 305 template<int R, int I, int T>
313 class LTemplateInstruction : public LTemplateResultInstruction<R> { 306 class LTemplateInstruction : public LTemplateResultInstruction<R> {
314 protected: 307 protected:
315 EmbeddedContainer<LOperand*, I> inputs_; 308 EmbeddedContainer<LOperand*, I> inputs_;
316 EmbeddedContainer<LOperand*, T> temps_; 309 EmbeddedContainer<LOperand*, T> temps_;
317 310
318 private: 311 private:
319 // Iterator support. 312 // Iterator support.
320 virtual int InputCount() FINAL OVERRIDE { return I; } 313 int InputCount() FINAL { return I; }
321 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; } 314 LOperand* InputAt(int i) FINAL { return inputs_[i]; }
322 315
323 virtual int TempCount() FINAL OVERRIDE { return T; } 316 int TempCount() FINAL { return T; }
324 virtual LOperand* TempAt(int i) FINAL OVERRIDE { return temps_[i]; } 317 LOperand* TempAt(int i) FINAL { return temps_[i]; }
325 }; 318 };
326 319
327 320
328 class LGap : public LTemplateInstruction<0, 0, 0> { 321 class LGap : public LTemplateInstruction<0, 0, 0> {
329 public: 322 public:
330 explicit LGap(HBasicBlock* block) 323 explicit LGap(HBasicBlock* block)
331 : block_(block) { 324 : block_(block) {
332 parallel_moves_[BEFORE] = NULL; 325 parallel_moves_[BEFORE] = NULL;
333 parallel_moves_[START] = NULL; 326 parallel_moves_[START] = NULL;
334 parallel_moves_[END] = NULL; 327 parallel_moves_[END] = NULL;
335 parallel_moves_[AFTER] = NULL; 328 parallel_moves_[AFTER] = NULL;
336 } 329 }
337 330
338 // Can't use the DECLARE-macro here because of sub-classes. 331 // Can't use the DECLARE-macro here because of sub-classes.
339 virtual bool IsGap() const FINAL OVERRIDE { return true; } 332 bool IsGap() const FINAL { return true; }
340 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 333 void PrintDataTo(StringStream* stream) OVERRIDE;
341 static LGap* cast(LInstruction* instr) { 334 static LGap* cast(LInstruction* instr) {
342 DCHECK(instr->IsGap()); 335 DCHECK(instr->IsGap());
343 return reinterpret_cast<LGap*>(instr); 336 return reinterpret_cast<LGap*>(instr);
344 } 337 }
345 338
346 bool IsRedundant() const; 339 bool IsRedundant() const;
347 340
348 HBasicBlock* block() const { return block_; } 341 HBasicBlock* block() const { return block_; }
349 342
350 enum InnerPosition { 343 enum InnerPosition {
(...skipping 20 matching lines...) Expand all
371 private: 364 private:
372 LParallelMove* parallel_moves_[LAST_INNER_POSITION + 1]; 365 LParallelMove* parallel_moves_[LAST_INNER_POSITION + 1];
373 HBasicBlock* block_; 366 HBasicBlock* block_;
374 }; 367 };
375 368
376 369
377 class LInstructionGap FINAL : public LGap { 370 class LInstructionGap FINAL : public LGap {
378 public: 371 public:
379 explicit LInstructionGap(HBasicBlock* block) : LGap(block) { } 372 explicit LInstructionGap(HBasicBlock* block) : LGap(block) { }
380 373
381 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 374 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE {
382 return !IsRedundant(); 375 return !IsRedundant();
383 } 376 }
384 377
385 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap") 378 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap")
386 }; 379 };
387 380
388 381
389 class LGoto FINAL : public LTemplateInstruction<0, 0, 0> { 382 class LGoto FINAL : public LTemplateInstruction<0, 0, 0> {
390 public: 383 public:
391 explicit LGoto(HBasicBlock* block) : block_(block) { } 384 explicit LGoto(HBasicBlock* block) : block_(block) { }
392 385
393 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE; 386 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE;
394 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto") 387 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
395 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 388 void PrintDataTo(StringStream* stream) OVERRIDE;
396 virtual bool IsControl() const OVERRIDE { return true; } 389 bool IsControl() const OVERRIDE { return true; }
397 390
398 int block_id() const { return block_->block_id(); } 391 int block_id() const { return block_->block_id(); }
399 392
400 private: 393 private:
401 HBasicBlock* block_; 394 HBasicBlock* block_;
402 }; 395 };
403 396
404 397
405 class LLazyBailout FINAL : public LTemplateInstruction<0, 0, 0> { 398 class LLazyBailout FINAL : public LTemplateInstruction<0, 0, 0> {
406 public: 399 public:
(...skipping 22 matching lines...) Expand all
429 public: 422 public:
430 explicit LDummyUse(LOperand* value) { 423 explicit LDummyUse(LOperand* value) {
431 inputs_[0] = value; 424 inputs_[0] = value;
432 } 425 }
433 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use") 426 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use")
434 }; 427 };
435 428
436 429
437 class LDeoptimize FINAL : public LTemplateInstruction<0, 0, 0> { 430 class LDeoptimize FINAL : public LTemplateInstruction<0, 0, 0> {
438 public: 431 public:
439 virtual bool IsControl() const OVERRIDE { return true; } 432 bool IsControl() const OVERRIDE { return true; }
440 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") 433 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
441 DECLARE_HYDROGEN_ACCESSOR(Deoptimize) 434 DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
442 }; 435 };
443 436
444 437
445 class LLabel FINAL : public LGap { 438 class LLabel FINAL : public LGap {
446 public: 439 public:
447 explicit LLabel(HBasicBlock* block) 440 explicit LLabel(HBasicBlock* block)
448 : LGap(block), replacement_(NULL) { } 441 : LGap(block), replacement_(NULL) { }
449 442
450 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 443 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { return false; }
451 return false;
452 }
453 DECLARE_CONCRETE_INSTRUCTION(Label, "label") 444 DECLARE_CONCRETE_INSTRUCTION(Label, "label")
454 445
455 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 446 void PrintDataTo(StringStream* stream) OVERRIDE;
456 447
457 int block_id() const { return block()->block_id(); } 448 int block_id() const { return block()->block_id(); }
458 bool is_loop_header() const { return block()->IsLoopHeader(); } 449 bool is_loop_header() const { return block()->IsLoopHeader(); }
459 bool is_osr_entry() const { return block()->is_osr_entry(); } 450 bool is_osr_entry() const { return block()->is_osr_entry(); }
460 Label* label() { return &label_; } 451 Label* label() { return &label_; }
461 LLabel* replacement() const { return replacement_; } 452 LLabel* replacement() const { return replacement_; }
462 void set_replacement(LLabel* label) { replacement_ = label; } 453 void set_replacement(LLabel* label) { replacement_ = label; }
463 bool HasReplacement() const { return replacement_ != NULL; } 454 bool HasReplacement() const { return replacement_ != NULL; }
464 455
465 private: 456 private:
466 Label label_; 457 Label label_;
467 LLabel* replacement_; 458 LLabel* replacement_;
468 }; 459 };
469 460
470 461
471 class LParameter FINAL : public LTemplateInstruction<1, 0, 0> { 462 class LParameter FINAL : public LTemplateInstruction<1, 0, 0> {
472 public: 463 public:
473 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 464 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { return false; }
474 return false;
475 }
476 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter") 465 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter")
477 }; 466 };
478 467
479 468
480 class LCallStub FINAL : public LTemplateInstruction<1, 1, 0> { 469 class LCallStub FINAL : public LTemplateInstruction<1, 1, 0> {
481 public: 470 public:
482 explicit LCallStub(LOperand* context) { 471 explicit LCallStub(LOperand* context) {
483 inputs_[0] = context; 472 inputs_[0] = context;
484 } 473 }
485 474
(...skipping 20 matching lines...) Expand all
506 LOperand* name() { return inputs_[2]; } 495 LOperand* name() { return inputs_[2]; }
507 496
508 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache, 497 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache,
509 "tail-call-through-megamorphic-cache") 498 "tail-call-through-megamorphic-cache")
510 DECLARE_HYDROGEN_ACCESSOR(TailCallThroughMegamorphicCache) 499 DECLARE_HYDROGEN_ACCESSOR(TailCallThroughMegamorphicCache)
511 }; 500 };
512 501
513 502
514 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> { 503 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> {
515 public: 504 public:
516 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 505 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { return false; }
517 return false;
518 }
519 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") 506 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value")
520 }; 507 };
521 508
522 509
523 template<int I, int T> 510 template<int I, int T>
524 class LControlInstruction : public LTemplateInstruction<0, I, T> { 511 class LControlInstruction : public LTemplateInstruction<0, I, T> {
525 public: 512 public:
526 LControlInstruction() : false_label_(NULL), true_label_(NULL) { } 513 LControlInstruction() : false_label_(NULL), true_label_(NULL) { }
527 514
528 virtual bool IsControl() const FINAL OVERRIDE { return true; } 515 bool IsControl() const FINAL { return true; }
529 516
530 int SuccessorCount() { return hydrogen()->SuccessorCount(); } 517 int SuccessorCount() { return hydrogen()->SuccessorCount(); }
531 HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); } 518 HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
532 519
533 int TrueDestination(LChunk* chunk) { 520 int TrueDestination(LChunk* chunk) {
534 return chunk->LookupDestination(true_block_id()); 521 return chunk->LookupDestination(true_block_id());
535 } 522 }
536 int FalseDestination(LChunk* chunk) { 523 int FalseDestination(LChunk* chunk) {
537 return chunk->LookupDestination(false_block_id()); 524 return chunk->LookupDestination(false_block_id());
538 } 525 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 inputs_[1] = length; 594 inputs_[1] = length;
608 inputs_[2] = index; 595 inputs_[2] = index;
609 } 596 }
610 597
611 LOperand* arguments() { return inputs_[0]; } 598 LOperand* arguments() { return inputs_[0]; }
612 LOperand* length() { return inputs_[1]; } 599 LOperand* length() { return inputs_[1]; }
613 LOperand* index() { return inputs_[2]; } 600 LOperand* index() { return inputs_[2]; }
614 601
615 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at") 602 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at")
616 603
617 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 604 void PrintDataTo(StringStream* stream) OVERRIDE;
618 }; 605 };
619 606
620 607
621 class LArgumentsLength FINAL : public LTemplateInstruction<1, 1, 0> { 608 class LArgumentsLength FINAL : public LTemplateInstruction<1, 1, 0> {
622 public: 609 public:
623 explicit LArgumentsLength(LOperand* elements) { 610 explicit LArgumentsLength(LOperand* elements) {
624 inputs_[0] = elements; 611 inputs_[0] = elements;
625 } 612 }
626 613
627 LOperand* elements() { return inputs_[0]; } 614 LOperand* elements() { return inputs_[0]; }
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 835
849 DECLARE_CONCRETE_INSTRUCTION(CompareNumericAndBranch, 836 DECLARE_CONCRETE_INSTRUCTION(CompareNumericAndBranch,
850 "compare-numeric-and-branch") 837 "compare-numeric-and-branch")
851 DECLARE_HYDROGEN_ACCESSOR(CompareNumericAndBranch) 838 DECLARE_HYDROGEN_ACCESSOR(CompareNumericAndBranch)
852 839
853 Token::Value op() const { return hydrogen()->token(); } 840 Token::Value op() const { return hydrogen()->token(); }
854 bool is_double() const { 841 bool is_double() const {
855 return hydrogen()->representation().IsDouble(); 842 return hydrogen()->representation().IsDouble();
856 } 843 }
857 844
858 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 845 void PrintDataTo(StringStream* stream) OVERRIDE;
859 }; 846 };
860 847
861 848
862 class LMathFloor FINAL : public LTemplateInstruction<1, 1, 0> { 849 class LMathFloor FINAL : public LTemplateInstruction<1, 1, 0> {
863 public: 850 public:
864 explicit LMathFloor(LOperand* value) { 851 explicit LMathFloor(LOperand* value) {
865 inputs_[0] = value; 852 inputs_[0] = value;
866 } 853 }
867 854
868 LOperand* value() { return inputs_[0]; } 855 LOperand* value() { return inputs_[0]; }
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 public: 1010 public:
1024 explicit LIsObjectAndBranch(LOperand* value) { 1011 explicit LIsObjectAndBranch(LOperand* value) {
1025 inputs_[0] = value; 1012 inputs_[0] = value;
1026 } 1013 }
1027 1014
1028 LOperand* value() { return inputs_[0]; } 1015 LOperand* value() { return inputs_[0]; }
1029 1016
1030 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") 1017 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
1031 DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch) 1018 DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
1032 1019
1033 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1020 void PrintDataTo(StringStream* stream) OVERRIDE;
1034 }; 1021 };
1035 1022
1036 1023
1037 class LIsStringAndBranch FINAL : public LControlInstruction<1, 1> { 1024 class LIsStringAndBranch FINAL : public LControlInstruction<1, 1> {
1038 public: 1025 public:
1039 explicit LIsStringAndBranch(LOperand* value, LOperand* temp) { 1026 explicit LIsStringAndBranch(LOperand* value, LOperand* temp) {
1040 inputs_[0] = value; 1027 inputs_[0] = value;
1041 temps_[0] = temp; 1028 temps_[0] = temp;
1042 } 1029 }
1043 1030
1044 LOperand* value() { return inputs_[0]; } 1031 LOperand* value() { return inputs_[0]; }
1045 LOperand* temp() { return temps_[0]; } 1032 LOperand* temp() { return temps_[0]; }
1046 1033
1047 DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch") 1034 DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch")
1048 DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch) 1035 DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch)
1049 1036
1050 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1037 void PrintDataTo(StringStream* stream) OVERRIDE;
1051 }; 1038 };
1052 1039
1053 1040
1054 class LIsSmiAndBranch FINAL : public LControlInstruction<1, 0> { 1041 class LIsSmiAndBranch FINAL : public LControlInstruction<1, 0> {
1055 public: 1042 public:
1056 explicit LIsSmiAndBranch(LOperand* value) { 1043 explicit LIsSmiAndBranch(LOperand* value) {
1057 inputs_[0] = value; 1044 inputs_[0] = value;
1058 } 1045 }
1059 1046
1060 LOperand* value() { return inputs_[0]; } 1047 LOperand* value() { return inputs_[0]; }
1061 1048
1062 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch") 1049 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
1063 DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch) 1050 DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
1064 1051
1065 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1052 void PrintDataTo(StringStream* stream) OVERRIDE;
1066 }; 1053 };
1067 1054
1068 1055
1069 class LIsUndetectableAndBranch FINAL : public LControlInstruction<1, 1> { 1056 class LIsUndetectableAndBranch FINAL : public LControlInstruction<1, 1> {
1070 public: 1057 public:
1071 explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) { 1058 explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
1072 inputs_[0] = value; 1059 inputs_[0] = value;
1073 temps_[0] = temp; 1060 temps_[0] = temp;
1074 } 1061 }
1075 1062
1076 LOperand* value() { return inputs_[0]; } 1063 LOperand* value() { return inputs_[0]; }
1077 LOperand* temp() { return temps_[0]; } 1064 LOperand* temp() { return temps_[0]; }
1078 1065
1079 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch, 1066 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
1080 "is-undetectable-and-branch") 1067 "is-undetectable-and-branch")
1081 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch) 1068 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
1082 1069
1083 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1070 void PrintDataTo(StringStream* stream) OVERRIDE;
1084 }; 1071 };
1085 1072
1086 1073
1087 class LStringCompareAndBranch FINAL : public LControlInstruction<3, 0> { 1074 class LStringCompareAndBranch FINAL : public LControlInstruction<3, 0> {
1088 public: 1075 public:
1089 explicit LStringCompareAndBranch(LOperand* context, 1076 explicit LStringCompareAndBranch(LOperand* context,
1090 LOperand* left, 1077 LOperand* left,
1091 LOperand* right) { 1078 LOperand* right) {
1092 inputs_[0] = context; 1079 inputs_[0] = context;
1093 inputs_[1] = left; 1080 inputs_[1] = left;
1094 inputs_[2] = right; 1081 inputs_[2] = right;
1095 } 1082 }
1096 1083
1097 LOperand* context() { return inputs_[0]; } 1084 LOperand* context() { return inputs_[0]; }
1098 LOperand* left() { return inputs_[1]; } 1085 LOperand* left() { return inputs_[1]; }
1099 LOperand* right() { return inputs_[2]; } 1086 LOperand* right() { return inputs_[2]; }
1100 1087
1101 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch, 1088 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
1102 "string-compare-and-branch") 1089 "string-compare-and-branch")
1103 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch) 1090 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
1104 1091
1105 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1092 void PrintDataTo(StringStream* stream) OVERRIDE;
1106 1093
1107 Token::Value op() const { return hydrogen()->token(); } 1094 Token::Value op() const { return hydrogen()->token(); }
1108 }; 1095 };
1109 1096
1110 1097
1111 class LHasInstanceTypeAndBranch FINAL : public LControlInstruction<1, 0> { 1098 class LHasInstanceTypeAndBranch FINAL : public LControlInstruction<1, 0> {
1112 public: 1099 public:
1113 explicit LHasInstanceTypeAndBranch(LOperand* value) { 1100 explicit LHasInstanceTypeAndBranch(LOperand* value) {
1114 inputs_[0] = value; 1101 inputs_[0] = value;
1115 } 1102 }
1116 1103
1117 LOperand* value() { return inputs_[0]; } 1104 LOperand* value() { return inputs_[0]; }
1118 1105
1119 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch, 1106 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
1120 "has-instance-type-and-branch") 1107 "has-instance-type-and-branch")
1121 DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch) 1108 DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
1122 1109
1123 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1110 void PrintDataTo(StringStream* stream) OVERRIDE;
1124 }; 1111 };
1125 1112
1126 1113
1127 class LGetCachedArrayIndex FINAL : public LTemplateInstruction<1, 1, 0> { 1114 class LGetCachedArrayIndex FINAL : public LTemplateInstruction<1, 1, 0> {
1128 public: 1115 public:
1129 explicit LGetCachedArrayIndex(LOperand* value) { 1116 explicit LGetCachedArrayIndex(LOperand* value) {
1130 inputs_[0] = value; 1117 inputs_[0] = value;
1131 } 1118 }
1132 1119
1133 LOperand* value() { return inputs_[0]; } 1120 LOperand* value() { return inputs_[0]; }
1134 1121
1135 DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index") 1122 DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
1136 DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex) 1123 DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
1137 }; 1124 };
1138 1125
1139 1126
1140 class LHasCachedArrayIndexAndBranch FINAL 1127 class LHasCachedArrayIndexAndBranch FINAL
1141 : public LControlInstruction<1, 0> { 1128 : public LControlInstruction<1, 0> {
1142 public: 1129 public:
1143 explicit LHasCachedArrayIndexAndBranch(LOperand* value) { 1130 explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
1144 inputs_[0] = value; 1131 inputs_[0] = value;
1145 } 1132 }
1146 1133
1147 LOperand* value() { return inputs_[0]; } 1134 LOperand* value() { return inputs_[0]; }
1148 1135
1149 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch, 1136 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
1150 "has-cached-array-index-and-branch") 1137 "has-cached-array-index-and-branch")
1151 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch) 1138 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
1152 1139
1153 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1140 void PrintDataTo(StringStream* stream) OVERRIDE;
1154 }; 1141 };
1155 1142
1156 1143
1157 class LClassOfTestAndBranch FINAL : public LControlInstruction<1, 2> { 1144 class LClassOfTestAndBranch FINAL : public LControlInstruction<1, 2> {
1158 public: 1145 public:
1159 LClassOfTestAndBranch(LOperand* value, LOperand* temp, LOperand* temp2) { 1146 LClassOfTestAndBranch(LOperand* value, LOperand* temp, LOperand* temp2) {
1160 inputs_[0] = value; 1147 inputs_[0] = value;
1161 temps_[0] = temp; 1148 temps_[0] = temp;
1162 temps_[1] = temp2; 1149 temps_[1] = temp2;
1163 } 1150 }
1164 1151
1165 LOperand* value() { return inputs_[0]; } 1152 LOperand* value() { return inputs_[0]; }
1166 LOperand* temp() { return temps_[0]; } 1153 LOperand* temp() { return temps_[0]; }
1167 LOperand* temp2() { return temps_[1]; } 1154 LOperand* temp2() { return temps_[1]; }
1168 1155
1169 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch, 1156 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
1170 "class-of-test-and-branch") 1157 "class-of-test-and-branch")
1171 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch) 1158 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
1172 1159
1173 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1160 void PrintDataTo(StringStream* stream) OVERRIDE;
1174 }; 1161 };
1175 1162
1176 1163
1177 class LCmpT FINAL : public LTemplateInstruction<1, 3, 0> { 1164 class LCmpT FINAL : public LTemplateInstruction<1, 3, 0> {
1178 public: 1165 public:
1179 LCmpT(LOperand* context, LOperand* left, LOperand* right) { 1166 LCmpT(LOperand* context, LOperand* left, LOperand* right) {
1180 inputs_[0] = context; 1167 inputs_[0] = context;
1181 inputs_[1] = left; 1168 inputs_[1] = left;
1182 inputs_[2] = right; 1169 inputs_[2] = right;
1183 } 1170 }
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 public: 1356 public:
1370 explicit LBranch(LOperand* value) { 1357 explicit LBranch(LOperand* value) {
1371 inputs_[0] = value; 1358 inputs_[0] = value;
1372 } 1359 }
1373 1360
1374 LOperand* value() { return inputs_[0]; } 1361 LOperand* value() { return inputs_[0]; }
1375 1362
1376 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch") 1363 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
1377 DECLARE_HYDROGEN_ACCESSOR(Branch) 1364 DECLARE_HYDROGEN_ACCESSOR(Branch)
1378 1365
1379 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1366 void PrintDataTo(StringStream* stream) OVERRIDE;
1380 }; 1367 };
1381 1368
1382 1369
1383 class LDebugBreak FINAL : public LTemplateInstruction<0, 0, 0> { 1370 class LDebugBreak FINAL : public LTemplateInstruction<0, 0, 0> {
1384 public: 1371 public:
1385 DECLARE_CONCRETE_INSTRUCTION(DebugBreak, "break") 1372 DECLARE_CONCRETE_INSTRUCTION(DebugBreak, "break")
1386 }; 1373 };
1387 1374
1388 1375
1389 class LCmpMapAndBranch FINAL : public LControlInstruction<1, 0> { 1376 class LCmpMapAndBranch FINAL : public LControlInstruction<1, 0> {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) 1508 LArithmeticD(Token::Value op, LOperand* left, LOperand* right)
1522 : op_(op) { 1509 : op_(op) {
1523 inputs_[0] = left; 1510 inputs_[0] = left;
1524 inputs_[1] = right; 1511 inputs_[1] = right;
1525 } 1512 }
1526 1513
1527 Token::Value op() const { return op_; } 1514 Token::Value op() const { return op_; }
1528 LOperand* left() { return inputs_[0]; } 1515 LOperand* left() { return inputs_[0]; }
1529 LOperand* right() { return inputs_[1]; } 1516 LOperand* right() { return inputs_[1]; }
1530 1517
1531 virtual Opcode opcode() const OVERRIDE { 1518 Opcode opcode() const OVERRIDE { return LInstruction::kArithmeticD; }
1532 return LInstruction::kArithmeticD; 1519 void CompileToNative(LCodeGen* generator) OVERRIDE;
1533 } 1520 const char* Mnemonic() const OVERRIDE;
1534 virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
1535 virtual const char* Mnemonic() const OVERRIDE;
1536 1521
1537 private: 1522 private:
1538 Token::Value op_; 1523 Token::Value op_;
1539 }; 1524 };
1540 1525
1541 1526
1542 class LArithmeticT FINAL : public LTemplateInstruction<1, 3, 0> { 1527 class LArithmeticT FINAL : public LTemplateInstruction<1, 3, 0> {
1543 public: 1528 public:
1544 LArithmeticT(Token::Value op, 1529 LArithmeticT(Token::Value op,
1545 LOperand* context, 1530 LOperand* context,
1546 LOperand* left, 1531 LOperand* left,
1547 LOperand* right) 1532 LOperand* right)
1548 : op_(op) { 1533 : op_(op) {
1549 inputs_[0] = context; 1534 inputs_[0] = context;
1550 inputs_[1] = left; 1535 inputs_[1] = left;
1551 inputs_[2] = right; 1536 inputs_[2] = right;
1552 } 1537 }
1553 1538
1554 Token::Value op() const { return op_; } 1539 Token::Value op() const { return op_; }
1555 LOperand* context() { return inputs_[0]; } 1540 LOperand* context() { return inputs_[0]; }
1556 LOperand* left() { return inputs_[1]; } 1541 LOperand* left() { return inputs_[1]; }
1557 LOperand* right() { return inputs_[2]; } 1542 LOperand* right() { return inputs_[2]; }
1558 1543
1559 virtual Opcode opcode() const OVERRIDE { 1544 Opcode opcode() const OVERRIDE { return LInstruction::kArithmeticT; }
1560 return LInstruction::kArithmeticT; 1545 void CompileToNative(LCodeGen* generator) OVERRIDE;
1561 } 1546 const char* Mnemonic() const OVERRIDE;
1562 virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
1563 virtual const char* Mnemonic() const OVERRIDE;
1564 1547
1565 private: 1548 private:
1566 Token::Value op_; 1549 Token::Value op_;
1567 }; 1550 };
1568 1551
1569 1552
1570 class LReturn FINAL : public LTemplateInstruction<0, 3, 0> { 1553 class LReturn FINAL : public LTemplateInstruction<0, 3, 0> {
1571 public: 1554 public:
1572 explicit LReturn(LOperand* value, 1555 explicit LReturn(LOperand* value,
1573 LOperand* context, 1556 LOperand* context,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1679 return hydrogen()->is_external(); 1662 return hydrogen()->is_external();
1680 } 1663 }
1681 bool is_fixed_typed_array() const { 1664 bool is_fixed_typed_array() const {
1682 return hydrogen()->is_fixed_typed_array(); 1665 return hydrogen()->is_fixed_typed_array();
1683 } 1666 }
1684 bool is_typed_elements() const { 1667 bool is_typed_elements() const {
1685 return is_external() || is_fixed_typed_array(); 1668 return is_external() || is_fixed_typed_array();
1686 } 1669 }
1687 LOperand* elements() { return inputs_[0]; } 1670 LOperand* elements() { return inputs_[0]; }
1688 LOperand* key() { return inputs_[1]; } 1671 LOperand* key() { return inputs_[1]; }
1689 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1672 void PrintDataTo(StringStream* stream) OVERRIDE;
1690 uint32_t base_offset() const { return hydrogen()->base_offset(); } 1673 uint32_t base_offset() const { return hydrogen()->base_offset(); }
1691 ElementsKind elements_kind() const { 1674 ElementsKind elements_kind() const {
1692 return hydrogen()->elements_kind(); 1675 return hydrogen()->elements_kind();
1693 } 1676 }
1694 }; 1677 };
1695 1678
1696 1679
1697 class LLoadKeyedGeneric FINAL : public LTemplateInstruction<1, 3, 1> { 1680 class LLoadKeyedGeneric FINAL : public LTemplateInstruction<1, 3, 1> {
1698 public: 1681 public:
1699 LLoadKeyedGeneric(LOperand* context, LOperand* obj, LOperand* key, 1682 LLoadKeyedGeneric(LOperand* context, LOperand* obj, LOperand* key,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1763 inputs_[0] = context; 1746 inputs_[0] = context;
1764 } 1747 }
1765 1748
1766 LOperand* context() { return inputs_[0]; } 1749 LOperand* context() { return inputs_[0]; }
1767 1750
1768 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot") 1751 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
1769 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot) 1752 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
1770 1753
1771 int slot_index() { return hydrogen()->slot_index(); } 1754 int slot_index() { return hydrogen()->slot_index(); }
1772 1755
1773 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1756 void PrintDataTo(StringStream* stream) OVERRIDE;
1774 }; 1757 };
1775 1758
1776 1759
1777 class LStoreContextSlot FINAL : public LTemplateInstruction<0, 2, 1> { 1760 class LStoreContextSlot FINAL : public LTemplateInstruction<0, 2, 1> {
1778 public: 1761 public:
1779 LStoreContextSlot(LOperand* context, LOperand* value, LOperand* temp) { 1762 LStoreContextSlot(LOperand* context, LOperand* value, LOperand* temp) {
1780 inputs_[0] = context; 1763 inputs_[0] = context;
1781 inputs_[1] = value; 1764 inputs_[1] = value;
1782 temps_[0] = temp; 1765 temps_[0] = temp;
1783 } 1766 }
1784 1767
1785 LOperand* context() { return inputs_[0]; } 1768 LOperand* context() { return inputs_[0]; }
1786 LOperand* value() { return inputs_[1]; } 1769 LOperand* value() { return inputs_[1]; }
1787 LOperand* temp() { return temps_[0]; } 1770 LOperand* temp() { return temps_[0]; }
1788 1771
1789 DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot") 1772 DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot")
1790 DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot) 1773 DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot)
1791 1774
1792 int slot_index() { return hydrogen()->slot_index(); } 1775 int slot_index() { return hydrogen()->slot_index(); }
1793 1776
1794 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1777 void PrintDataTo(StringStream* stream) OVERRIDE;
1795 }; 1778 };
1796 1779
1797 1780
1798 class LPushArgument FINAL : public LTemplateInstruction<0, 1, 0> { 1781 class LPushArgument FINAL : public LTemplateInstruction<0, 1, 0> {
1799 public: 1782 public:
1800 explicit LPushArgument(LOperand* value) { 1783 explicit LPushArgument(LOperand* value) {
1801 inputs_[0] = value; 1784 inputs_[0] = value;
1802 } 1785 }
1803 1786
1804 LOperand* value() { return inputs_[0]; } 1787 LOperand* value() { return inputs_[0]; }
(...skipping 18 matching lines...) Expand all
1823 class LStoreCodeEntry FINAL: public LTemplateInstruction<0, 2, 0> { 1806 class LStoreCodeEntry FINAL: public LTemplateInstruction<0, 2, 0> {
1824 public: 1807 public:
1825 LStoreCodeEntry(LOperand* function, LOperand* code_object) { 1808 LStoreCodeEntry(LOperand* function, LOperand* code_object) {
1826 inputs_[0] = function; 1809 inputs_[0] = function;
1827 inputs_[1] = code_object; 1810 inputs_[1] = code_object;
1828 } 1811 }
1829 1812
1830 LOperand* function() { return inputs_[0]; } 1813 LOperand* function() { return inputs_[0]; }
1831 LOperand* code_object() { return inputs_[1]; } 1814 LOperand* code_object() { return inputs_[1]; }
1832 1815
1833 virtual void PrintDataTo(StringStream* stream); 1816 void PrintDataTo(StringStream* stream) OVERRIDE;
1834 1817
1835 DECLARE_CONCRETE_INSTRUCTION(StoreCodeEntry, "store-code-entry") 1818 DECLARE_CONCRETE_INSTRUCTION(StoreCodeEntry, "store-code-entry")
1836 DECLARE_HYDROGEN_ACCESSOR(StoreCodeEntry) 1819 DECLARE_HYDROGEN_ACCESSOR(StoreCodeEntry)
1837 }; 1820 };
1838 1821
1839 1822
1840 class LInnerAllocatedObject FINAL: public LTemplateInstruction<1, 2, 0> { 1823 class LInnerAllocatedObject FINAL: public LTemplateInstruction<1, 2, 0> {
1841 public: 1824 public:
1842 LInnerAllocatedObject(LOperand* base_object, LOperand* offset) { 1825 LInnerAllocatedObject(LOperand* base_object, LOperand* offset) {
1843 inputs_[0] = base_object; 1826 inputs_[0] = base_object;
1844 inputs_[1] = offset; 1827 inputs_[1] = offset;
1845 } 1828 }
1846 1829
1847 LOperand* base_object() const { return inputs_[0]; } 1830 LOperand* base_object() const { return inputs_[0]; }
1848 LOperand* offset() const { return inputs_[1]; } 1831 LOperand* offset() const { return inputs_[1]; }
1849 1832
1850 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1833 void PrintDataTo(StringStream* stream) OVERRIDE;
1851 1834
1852 DECLARE_CONCRETE_INSTRUCTION(InnerAllocatedObject, "inner-allocated-object") 1835 DECLARE_CONCRETE_INSTRUCTION(InnerAllocatedObject, "inner-allocated-object")
1853 }; 1836 };
1854 1837
1855 1838
1856 class LThisFunction FINAL : public LTemplateInstruction<1, 0, 0> { 1839 class LThisFunction FINAL : public LTemplateInstruction<1, 0, 0> {
1857 public: 1840 public:
1858 DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function") 1841 DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
1859 DECLARE_HYDROGEN_ACCESSOR(ThisFunction) 1842 DECLARE_HYDROGEN_ACCESSOR(ThisFunction)
1860 }; 1843 };
(...skipping 23 matching lines...) Expand all
1884 public: 1867 public:
1885 explicit LCallJSFunction(LOperand* function) { 1868 explicit LCallJSFunction(LOperand* function) {
1886 inputs_[0] = function; 1869 inputs_[0] = function;
1887 } 1870 }
1888 1871
1889 LOperand* function() { return inputs_[0]; } 1872 LOperand* function() { return inputs_[0]; }
1890 1873
1891 DECLARE_CONCRETE_INSTRUCTION(CallJSFunction, "call-js-function") 1874 DECLARE_CONCRETE_INSTRUCTION(CallJSFunction, "call-js-function")
1892 DECLARE_HYDROGEN_ACCESSOR(CallJSFunction) 1875 DECLARE_HYDROGEN_ACCESSOR(CallJSFunction)
1893 1876
1894 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1877 void PrintDataTo(StringStream* stream) OVERRIDE;
1895 1878
1896 int arity() const { return hydrogen()->argument_count() - 1; } 1879 int arity() const { return hydrogen()->argument_count() - 1; }
1897 }; 1880 };
1898 1881
1899 1882
1900 class LCallWithDescriptor FINAL : public LTemplateResultInstruction<1> { 1883 class LCallWithDescriptor FINAL : public LTemplateResultInstruction<1> {
1901 public: 1884 public:
1902 LCallWithDescriptor(CallInterfaceDescriptor descriptor, 1885 LCallWithDescriptor(CallInterfaceDescriptor descriptor,
1903 const ZoneList<LOperand*>& operands, Zone* zone) 1886 const ZoneList<LOperand*>& operands, Zone* zone)
1904 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) { 1887 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) {
1905 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length()); 1888 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length());
1906 inputs_.AddAll(operands, zone); 1889 inputs_.AddAll(operands, zone);
1907 } 1890 }
1908 1891
1909 LOperand* target() const { return inputs_[0]; } 1892 LOperand* target() const { return inputs_[0]; }
1910 1893
1911 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor) 1894 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor)
1912 1895
1913 private: 1896 private:
1914 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor") 1897 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
1915 1898
1916 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1899 void PrintDataTo(StringStream* stream) OVERRIDE;
1917 1900
1918 int arity() const { return hydrogen()->argument_count() - 1; } 1901 int arity() const { return hydrogen()->argument_count() - 1; }
1919 1902
1920 ZoneList<LOperand*> inputs_; 1903 ZoneList<LOperand*> inputs_;
1921 1904
1922 // Iterator support. 1905 // Iterator support.
1923 virtual int InputCount() FINAL OVERRIDE { return inputs_.length(); } 1906 int InputCount() FINAL { return inputs_.length(); }
1924 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; } 1907 LOperand* InputAt(int i) FINAL { return inputs_[i]; }
1925 1908
1926 virtual int TempCount() FINAL OVERRIDE { return 0; } 1909 int TempCount() FINAL { return 0; }
1927 virtual LOperand* TempAt(int i) FINAL OVERRIDE { return NULL; } 1910 LOperand* TempAt(int i) FINAL { return NULL; }
1928 }; 1911 };
1929 1912
1930 1913
1931 class LInvokeFunction FINAL : public LTemplateInstruction<1, 2, 0> { 1914 class LInvokeFunction FINAL : public LTemplateInstruction<1, 2, 0> {
1932 public: 1915 public:
1933 LInvokeFunction(LOperand* context, LOperand* function) { 1916 LInvokeFunction(LOperand* context, LOperand* function) {
1934 inputs_[0] = context; 1917 inputs_[0] = context;
1935 inputs_[1] = function; 1918 inputs_[1] = function;
1936 } 1919 }
1937 1920
1938 LOperand* context() { return inputs_[0]; } 1921 LOperand* context() { return inputs_[0]; }
1939 LOperand* function() { return inputs_[1]; } 1922 LOperand* function() { return inputs_[1]; }
1940 1923
1941 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function") 1924 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
1942 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction) 1925 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
1943 1926
1944 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1927 void PrintDataTo(StringStream* stream) OVERRIDE;
1945 1928
1946 int arity() const { return hydrogen()->argument_count() - 1; } 1929 int arity() const { return hydrogen()->argument_count() - 1; }
1947 }; 1930 };
1948 1931
1949 1932
1950 class LCallFunction FINAL : public LTemplateInstruction<1, 2, 0> { 1933 class LCallFunction FINAL : public LTemplateInstruction<1, 2, 0> {
1951 public: 1934 public:
1952 LCallFunction(LOperand* context, LOperand* function) { 1935 LCallFunction(LOperand* context, LOperand* function) {
1953 inputs_[0] = context; 1936 inputs_[0] = context;
1954 inputs_[1] = function; 1937 inputs_[1] = function;
(...skipping 14 matching lines...) Expand all
1969 inputs_[0] = context; 1952 inputs_[0] = context;
1970 inputs_[1] = constructor; 1953 inputs_[1] = constructor;
1971 } 1954 }
1972 1955
1973 LOperand* context() { return inputs_[0]; } 1956 LOperand* context() { return inputs_[0]; }
1974 LOperand* constructor() { return inputs_[1]; } 1957 LOperand* constructor() { return inputs_[1]; }
1975 1958
1976 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") 1959 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
1977 DECLARE_HYDROGEN_ACCESSOR(CallNew) 1960 DECLARE_HYDROGEN_ACCESSOR(CallNew)
1978 1961
1979 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1962 void PrintDataTo(StringStream* stream) OVERRIDE;
1980 1963
1981 int arity() const { return hydrogen()->argument_count() - 1; } 1964 int arity() const { return hydrogen()->argument_count() - 1; }
1982 }; 1965 };
1983 1966
1984 1967
1985 class LCallNewArray FINAL : public LTemplateInstruction<1, 2, 0> { 1968 class LCallNewArray FINAL : public LTemplateInstruction<1, 2, 0> {
1986 public: 1969 public:
1987 LCallNewArray(LOperand* context, LOperand* constructor) { 1970 LCallNewArray(LOperand* context, LOperand* constructor) {
1988 inputs_[0] = context; 1971 inputs_[0] = context;
1989 inputs_[1] = constructor; 1972 inputs_[1] = constructor;
1990 } 1973 }
1991 1974
1992 LOperand* context() { return inputs_[0]; } 1975 LOperand* context() { return inputs_[0]; }
1993 LOperand* constructor() { return inputs_[1]; } 1976 LOperand* constructor() { return inputs_[1]; }
1994 1977
1995 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array") 1978 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array")
1996 DECLARE_HYDROGEN_ACCESSOR(CallNewArray) 1979 DECLARE_HYDROGEN_ACCESSOR(CallNewArray)
1997 1980
1998 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1981 void PrintDataTo(StringStream* stream) OVERRIDE;
1999 1982
2000 int arity() const { return hydrogen()->argument_count() - 1; } 1983 int arity() const { return hydrogen()->argument_count() - 1; }
2001 }; 1984 };
2002 1985
2003 1986
2004 class LCallRuntime FINAL : public LTemplateInstruction<1, 1, 0> { 1987 class LCallRuntime FINAL : public LTemplateInstruction<1, 1, 0> {
2005 public: 1988 public:
2006 explicit LCallRuntime(LOperand* context) { 1989 explicit LCallRuntime(LOperand* context) {
2007 inputs_[0] = context; 1990 inputs_[0] = context;
2008 } 1991 }
2009 1992
2010 LOperand* context() { return inputs_[0]; } 1993 LOperand* context() { return inputs_[0]; }
2011 1994
2012 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") 1995 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
2013 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) 1996 DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
2014 1997
2015 virtual bool ClobbersDoubleRegisters(Isolate* isolate) const OVERRIDE { 1998 bool ClobbersDoubleRegisters(Isolate* isolate) const OVERRIDE {
2016 return save_doubles() == kDontSaveFPRegs; 1999 return save_doubles() == kDontSaveFPRegs;
2017 } 2000 }
2018 2001
2019 const Runtime::Function* function() const { return hydrogen()->function(); } 2002 const Runtime::Function* function() const { return hydrogen()->function(); }
2020 int arity() const { return hydrogen()->argument_count(); } 2003 int arity() const { return hydrogen()->argument_count(); }
2021 SaveFPRegsMode save_doubles() const { return hydrogen()->save_doubles(); } 2004 SaveFPRegsMode save_doubles() const { return hydrogen()->save_doubles(); }
2022 }; 2005 };
2023 2006
2024 2007
2025 class LInteger32ToDouble FINAL : public LTemplateInstruction<1, 1, 0> { 2008 class LInteger32ToDouble FINAL : public LTemplateInstruction<1, 1, 0> {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
2191 temps_[0] = temp; 2174 temps_[0] = temp;
2192 } 2175 }
2193 2176
2194 LOperand* object() { return inputs_[0]; } 2177 LOperand* object() { return inputs_[0]; }
2195 LOperand* value() { return inputs_[1]; } 2178 LOperand* value() { return inputs_[1]; }
2196 LOperand* temp() { return temps_[0]; } 2179 LOperand* temp() { return temps_[0]; }
2197 2180
2198 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") 2181 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
2199 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) 2182 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
2200 2183
2201 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2184 void PrintDataTo(StringStream* stream) OVERRIDE;
2202 2185
2203 Representation representation() const { 2186 Representation representation() const {
2204 return hydrogen()->field_representation(); 2187 return hydrogen()->field_representation();
2205 } 2188 }
2206 }; 2189 };
2207 2190
2208 2191
2209 class LStoreNamedGeneric FINAL : public LTemplateInstruction<0, 3, 0> { 2192 class LStoreNamedGeneric FINAL : public LTemplateInstruction<0, 3, 0> {
2210 public: 2193 public:
2211 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) { 2194 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) {
2212 inputs_[0] = context; 2195 inputs_[0] = context;
2213 inputs_[1] = object; 2196 inputs_[1] = object;
2214 inputs_[2] = value; 2197 inputs_[2] = value;
2215 } 2198 }
2216 2199
2217 LOperand* context() { return inputs_[0]; } 2200 LOperand* context() { return inputs_[0]; }
2218 LOperand* object() { return inputs_[1]; } 2201 LOperand* object() { return inputs_[1]; }
2219 LOperand* value() { return inputs_[2]; } 2202 LOperand* value() { return inputs_[2]; }
2220 2203
2221 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 2204 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
2222 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 2205 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
2223 2206
2224 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2207 void PrintDataTo(StringStream* stream) OVERRIDE;
2225 2208
2226 Handle<Object> name() const { return hydrogen()->name(); } 2209 Handle<Object> name() const { return hydrogen()->name(); }
2227 StrictMode strict_mode() { return hydrogen()->strict_mode(); } 2210 StrictMode strict_mode() { return hydrogen()->strict_mode(); }
2228 }; 2211 };
2229 2212
2230 2213
2231 class LStoreKeyed FINAL : public LTemplateInstruction<0, 3, 0> { 2214 class LStoreKeyed FINAL : public LTemplateInstruction<0, 3, 0> {
2232 public: 2215 public:
2233 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) { 2216 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) {
2234 inputs_[0] = object; 2217 inputs_[0] = object;
2235 inputs_[1] = key; 2218 inputs_[1] = key;
2236 inputs_[2] = value; 2219 inputs_[2] = value;
2237 } 2220 }
2238 2221
2239 bool is_external() const { return hydrogen()->is_external(); } 2222 bool is_external() const { return hydrogen()->is_external(); }
2240 bool is_fixed_typed_array() const { 2223 bool is_fixed_typed_array() const {
2241 return hydrogen()->is_fixed_typed_array(); 2224 return hydrogen()->is_fixed_typed_array();
2242 } 2225 }
2243 bool is_typed_elements() const { 2226 bool is_typed_elements() const {
2244 return is_external() || is_fixed_typed_array(); 2227 return is_external() || is_fixed_typed_array();
2245 } 2228 }
2246 LOperand* elements() { return inputs_[0]; } 2229 LOperand* elements() { return inputs_[0]; }
2247 LOperand* key() { return inputs_[1]; } 2230 LOperand* key() { return inputs_[1]; }
2248 LOperand* value() { return inputs_[2]; } 2231 LOperand* value() { return inputs_[2]; }
2249 ElementsKind elements_kind() const { return hydrogen()->elements_kind(); } 2232 ElementsKind elements_kind() const { return hydrogen()->elements_kind(); }
2250 2233
2251 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") 2234 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2252 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) 2235 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
2253 2236
2254 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2237 void PrintDataTo(StringStream* stream) OVERRIDE;
2255 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } 2238 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
2256 uint32_t base_offset() const { return hydrogen()->base_offset(); } 2239 uint32_t base_offset() const { return hydrogen()->base_offset(); }
2257 }; 2240 };
2258 2241
2259 2242
2260 class LStoreKeyedGeneric FINAL : public LTemplateInstruction<0, 4, 0> { 2243 class LStoreKeyedGeneric FINAL : public LTemplateInstruction<0, 4, 0> {
2261 public: 2244 public:
2262 LStoreKeyedGeneric(LOperand* context, 2245 LStoreKeyedGeneric(LOperand* context,
2263 LOperand* object, 2246 LOperand* object,
2264 LOperand* key, 2247 LOperand* key,
2265 LOperand* value) { 2248 LOperand* value) {
2266 inputs_[0] = context; 2249 inputs_[0] = context;
2267 inputs_[1] = object; 2250 inputs_[1] = object;
2268 inputs_[2] = key; 2251 inputs_[2] = key;
2269 inputs_[3] = value; 2252 inputs_[3] = value;
2270 } 2253 }
2271 2254
2272 LOperand* context() { return inputs_[0]; } 2255 LOperand* context() { return inputs_[0]; }
2273 LOperand* object() { return inputs_[1]; } 2256 LOperand* object() { return inputs_[1]; }
2274 LOperand* key() { return inputs_[2]; } 2257 LOperand* key() { return inputs_[2]; }
2275 LOperand* value() { return inputs_[3]; } 2258 LOperand* value() { return inputs_[3]; }
2276 2259
2277 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") 2260 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
2278 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) 2261 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
2279 2262
2280 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2263 void PrintDataTo(StringStream* stream) OVERRIDE;
2281 2264
2282 StrictMode strict_mode() { return hydrogen()->strict_mode(); } 2265 StrictMode strict_mode() { return hydrogen()->strict_mode(); }
2283 }; 2266 };
2284 2267
2285 2268
2286 class LTransitionElementsKind FINAL : public LTemplateInstruction<0, 2, 2> { 2269 class LTransitionElementsKind FINAL : public LTemplateInstruction<0, 2, 2> {
2287 public: 2270 public:
2288 LTransitionElementsKind(LOperand* object, 2271 LTransitionElementsKind(LOperand* object,
2289 LOperand* context, 2272 LOperand* context,
2290 LOperand* new_map_temp, 2273 LOperand* new_map_temp,
2291 LOperand* temp) { 2274 LOperand* temp) {
2292 inputs_[0] = object; 2275 inputs_[0] = object;
2293 inputs_[1] = context; 2276 inputs_[1] = context;
2294 temps_[0] = new_map_temp; 2277 temps_[0] = new_map_temp;
2295 temps_[1] = temp; 2278 temps_[1] = temp;
2296 } 2279 }
2297 2280
2298 LOperand* object() { return inputs_[0]; } 2281 LOperand* object() { return inputs_[0]; }
2299 LOperand* context() { return inputs_[1]; } 2282 LOperand* context() { return inputs_[1]; }
2300 LOperand* new_map_temp() { return temps_[0]; } 2283 LOperand* new_map_temp() { return temps_[0]; }
2301 LOperand* temp() { return temps_[1]; } 2284 LOperand* temp() { return temps_[1]; }
2302 2285
2303 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, 2286 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
2304 "transition-elements-kind") 2287 "transition-elements-kind")
2305 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind) 2288 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
2306 2289
2307 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2290 void PrintDataTo(StringStream* stream) OVERRIDE;
2308 2291
2309 Handle<Map> original_map() { return hydrogen()->original_map().handle(); } 2292 Handle<Map> original_map() { return hydrogen()->original_map().handle(); }
2310 Handle<Map> transitioned_map() { 2293 Handle<Map> transitioned_map() {
2311 return hydrogen()->transitioned_map().handle(); 2294 return hydrogen()->transitioned_map().handle();
2312 } 2295 }
2313 ElementsKind from_kind() { return hydrogen()->from_kind(); } 2296 ElementsKind from_kind() { return hydrogen()->from_kind(); }
2314 ElementsKind to_kind() { return hydrogen()->to_kind(); } 2297 ElementsKind to_kind() { return hydrogen()->to_kind(); }
2315 }; 2298 };
2316 2299
2317 2300
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
2586 inputs_[0] = value; 2569 inputs_[0] = value;
2587 } 2570 }
2588 2571
2589 LOperand* value() { return inputs_[0]; } 2572 LOperand* value() { return inputs_[0]; }
2590 2573
2591 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch") 2574 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
2592 DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch) 2575 DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
2593 2576
2594 Handle<String> type_literal() { return hydrogen()->type_literal(); } 2577 Handle<String> type_literal() { return hydrogen()->type_literal(); }
2595 2578
2596 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2579 void PrintDataTo(StringStream* stream) OVERRIDE;
2597 }; 2580 };
2598 2581
2599 2582
2600 class LIsConstructCallAndBranch FINAL : public LControlInstruction<0, 1> { 2583 class LIsConstructCallAndBranch FINAL : public LControlInstruction<0, 1> {
2601 public: 2584 public:
2602 explicit LIsConstructCallAndBranch(LOperand* temp) { 2585 explicit LIsConstructCallAndBranch(LOperand* temp) {
2603 temps_[0] = temp; 2586 temps_[0] = temp;
2604 } 2587 }
2605 2588
2606 LOperand* temp() { return temps_[0]; } 2589 LOperand* temp() { return temps_[0]; }
2607 2590
2608 DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch, 2591 DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
2609 "is-construct-call-and-branch") 2592 "is-construct-call-and-branch")
2610 DECLARE_HYDROGEN_ACCESSOR(IsConstructCallAndBranch) 2593 DECLARE_HYDROGEN_ACCESSOR(IsConstructCallAndBranch)
2611 }; 2594 };
2612 2595
2613 2596
2614 class LOsrEntry FINAL : public LTemplateInstruction<0, 0, 0> { 2597 class LOsrEntry FINAL : public LTemplateInstruction<0, 0, 0> {
2615 public: 2598 public:
2616 LOsrEntry() {} 2599 LOsrEntry() {}
2617 2600
2618 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 2601 bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { return false; }
2619 return false;
2620 }
2621 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry") 2602 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry")
2622 }; 2603 };
2623 2604
2624 2605
2625 class LStackCheck FINAL : public LTemplateInstruction<0, 1, 0> { 2606 class LStackCheck FINAL : public LTemplateInstruction<0, 1, 0> {
2626 public: 2607 public:
2627 explicit LStackCheck(LOperand* context) { 2608 explicit LStackCheck(LOperand* context) {
2628 inputs_[0] = context; 2609 inputs_[0] = context;
2629 } 2610 }
2630 2611
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
2820 2801
2821 // An input operand in a register or a constant operand. 2802 // An input operand in a register or a constant operand.
2822 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); 2803 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
2823 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); 2804 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
2824 2805
2825 // An input operand in a constant operand. 2806 // An input operand in a constant operand.
2826 MUST_USE_RESULT LOperand* UseConstant(HValue* value); 2807 MUST_USE_RESULT LOperand* UseConstant(HValue* value);
2827 2808
2828 // An input operand in register, stack slot or a constant operand. 2809 // An input operand in register, stack slot or a constant operand.
2829 // Will not be moved to a register even if one is freely available. 2810 // Will not be moved to a register even if one is freely available.
2830 virtual MUST_USE_RESULT LOperand* UseAny(HValue* value) OVERRIDE; 2811 MUST_USE_RESULT LOperand* UseAny(HValue* value) OVERRIDE;
2831 2812
2832 // Temporary operand that must be in a register. 2813 // Temporary operand that must be in a register.
2833 MUST_USE_RESULT LUnallocated* TempRegister(); 2814 MUST_USE_RESULT LUnallocated* TempRegister();
2834 MUST_USE_RESULT LOperand* FixedTemp(Register reg); 2815 MUST_USE_RESULT LOperand* FixedTemp(Register reg);
2835 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg); 2816 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg);
2836 2817
2837 // Methods for setting up define-use relationships. 2818 // Methods for setting up define-use relationships.
2838 // Return the same instruction that they are passed. 2819 // Return the same instruction that they are passed.
2839 LInstruction* Define(LTemplateResultInstruction<1>* instr, 2820 LInstruction* Define(LTemplateResultInstruction<1>* instr,
2840 LUnallocated* result); 2821 LUnallocated* result);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2881 2862
2882 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2863 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2883 }; 2864 };
2884 2865
2885 #undef DECLARE_HYDROGEN_ACCESSOR 2866 #undef DECLARE_HYDROGEN_ACCESSOR
2886 #undef DECLARE_CONCRETE_INSTRUCTION 2867 #undef DECLARE_CONCRETE_INSTRUCTION
2887 2868
2888 } } // namespace v8::int 2869 } } // namespace v8::int
2889 2870
2890 #endif // V8_X64_LITHIUM_X64_H_ 2871 #endif // V8_X64_LITHIUM_X64_H_
OLDNEW
« no previous file with comments | « src/x64/lithium-codegen-x64.cc ('k') | src/x87/code-stubs-x87.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698