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

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

Issue 23064017: Use V8_FINAL and V8_OVERRIDE in various places, fixing bugs revealed by them. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Use V8_FINAL and V8_OVERRIDE instead. 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
« no previous file with comments | « no previous file | src/arm/lithium-codegen-arm.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 // 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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 V(TrapAllocationMemento) \ 183 V(TrapAllocationMemento) \
184 V(Typeof) \ 184 V(Typeof) \
185 V(TypeofIsAndBranch) \ 185 V(TypeofIsAndBranch) \
186 V(Uint32ToDouble) \ 186 V(Uint32ToDouble) \
187 V(UnknownOSRValue) \ 187 V(UnknownOSRValue) \
188 V(ValueOf) \ 188 V(ValueOf) \
189 V(WrapReceiver) 189 V(WrapReceiver)
190 190
191 191
192 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ 192 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
193 virtual Opcode opcode() const FINAL OVERRIDE { \ 193 virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \
194 return LInstruction::k##type; \ 194 return LInstruction::k##type; \
195 } \ 195 } \
196 virtual void CompileToNative(LCodeGen* generator) FINAL OVERRIDE; \ 196 virtual void CompileToNative(LCodeGen* generator) V8_FINAL V8_OVERRIDE; \
197 virtual const char* Mnemonic() const FINAL OVERRIDE { return mnemonic; } \ 197 virtual const char* Mnemonic() const V8_FINAL V8_OVERRIDE { \
198 return mnemonic; \
199 } \
198 static L##type* cast(LInstruction* instr) { \ 200 static L##type* cast(LInstruction* instr) { \
199 ASSERT(instr->Is##type()); \ 201 ASSERT(instr->Is##type()); \
200 return reinterpret_cast<L##type*>(instr); \ 202 return reinterpret_cast<L##type*>(instr); \
201 } 203 }
202 204
203 205
204 #define DECLARE_HYDROGEN_ACCESSOR(type) \ 206 #define DECLARE_HYDROGEN_ACCESSOR(type) \
205 H##type* hydrogen() const { \ 207 H##type* hydrogen() const { \
206 return H##type::cast(hydrogen_value()); \ 208 return H##type::cast(hydrogen_value()); \
207 } 209 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 314
313 315
314 // R = number of result operands (0 or 1). 316 // R = number of result operands (0 or 1).
315 // I = number of input operands. 317 // I = number of input operands.
316 // T = number of temporary operands. 318 // T = number of temporary operands.
317 template<int R, int I, int T> 319 template<int R, int I, int T>
318 class LTemplateInstruction : public LInstruction { 320 class LTemplateInstruction : public LInstruction {
319 public: 321 public:
320 // Allow 0 or 1 output operands. 322 // Allow 0 or 1 output operands.
321 STATIC_ASSERT(R == 0 || R == 1); 323 STATIC_ASSERT(R == 0 || R == 1);
322 virtual bool HasResult() const FINAL OVERRIDE { 324 virtual bool HasResult() const V8_FINAL V8_OVERRIDE {
323 return R != 0 && result() != NULL; 325 return R != 0 && result() != NULL;
324 } 326 }
325 void set_result(LOperand* operand) { results_[0] = operand; } 327 void set_result(LOperand* operand) { results_[0] = operand; }
326 LOperand* result() const { return results_[0]; } 328 LOperand* result() const { return results_[0]; }
327 329
328 protected: 330 protected:
329 EmbeddedContainer<LOperand*, R> results_; 331 EmbeddedContainer<LOperand*, R> results_;
330 EmbeddedContainer<LOperand*, I> inputs_; 332 EmbeddedContainer<LOperand*, I> inputs_;
331 EmbeddedContainer<LOperand*, T> temps_; 333 EmbeddedContainer<LOperand*, T> temps_;
332 334
333 private: 335 private:
334 virtual int InputCount() FINAL OVERRIDE { return I; } 336 virtual int InputCount() V8_FINAL V8_OVERRIDE { return I; }
335 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; } 337 virtual LOperand* InputAt(int i) V8_FINAL V8_OVERRIDE { return inputs_[i]; }
336 338
337 virtual int TempCount() FINAL OVERRIDE { return T; } 339 virtual int TempCount() V8_FINAL V8_OVERRIDE { return T; }
338 virtual LOperand* TempAt(int i) FINAL OVERRIDE { return temps_[i]; } 340 virtual LOperand* TempAt(int i) V8_FINAL V8_OVERRIDE { return temps_[i]; }
339 }; 341 };
340 342
341 343
342 class LGap : public LTemplateInstruction<0, 0, 0> { 344 class LGap : public LTemplateInstruction<0, 0, 0> {
343 public: 345 public:
344 explicit LGap(HBasicBlock* block) 346 explicit LGap(HBasicBlock* block)
345 : block_(block) { 347 : block_(block) {
346 parallel_moves_[BEFORE] = NULL; 348 parallel_moves_[BEFORE] = NULL;
347 parallel_moves_[START] = NULL; 349 parallel_moves_[START] = NULL;
348 parallel_moves_[END] = NULL; 350 parallel_moves_[END] = NULL;
349 parallel_moves_[AFTER] = NULL; 351 parallel_moves_[AFTER] = NULL;
350 } 352 }
351 353
352 // Can't use the DECLARE-macro here because of sub-classes. 354 // Can't use the DECLARE-macro here because of sub-classes.
353 virtual bool IsGap() const OVERRIDE { return true; } 355 virtual bool IsGap() const V8_OVERRIDE { return true; }
354 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 356 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
355 static LGap* cast(LInstruction* instr) { 357 static LGap* cast(LInstruction* instr) {
356 ASSERT(instr->IsGap()); 358 ASSERT(instr->IsGap());
357 return reinterpret_cast<LGap*>(instr); 359 return reinterpret_cast<LGap*>(instr);
358 } 360 }
359 361
360 bool IsRedundant() const; 362 bool IsRedundant() const;
361 363
362 HBasicBlock* block() const { return block_; } 364 HBasicBlock* block() const { return block_; }
363 365
364 enum InnerPosition { 366 enum InnerPosition {
(...skipping 15 matching lines...) Expand all
380 LParallelMove* GetParallelMove(InnerPosition pos) { 382 LParallelMove* GetParallelMove(InnerPosition pos) {
381 return parallel_moves_[pos]; 383 return parallel_moves_[pos];
382 } 384 }
383 385
384 private: 386 private:
385 LParallelMove* parallel_moves_[LAST_INNER_POSITION + 1]; 387 LParallelMove* parallel_moves_[LAST_INNER_POSITION + 1];
386 HBasicBlock* block_; 388 HBasicBlock* block_;
387 }; 389 };
388 390
389 391
390 class LInstructionGap FINAL : public LGap { 392 class LInstructionGap V8_FINAL : public LGap {
391 public: 393 public:
392 explicit LInstructionGap(HBasicBlock* block) : LGap(block) { } 394 explicit LInstructionGap(HBasicBlock* block) : LGap(block) { }
393 395
394 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 396 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
395 return !IsRedundant(); 397 return !IsRedundant();
396 } 398 }
397 399
398 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap") 400 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap")
399 }; 401 };
400 402
401 403
402 class LGoto FINAL : public LTemplateInstruction<0, 0, 0> { 404 class LGoto V8_FINAL : public LTemplateInstruction<0, 0, 0> {
403 public: 405 public:
404 explicit LGoto(int block_id) : block_id_(block_id) { } 406 explicit LGoto(int block_id) : block_id_(block_id) { }
405 407
406 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE; 408 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE;
407 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto") 409 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
408 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 410 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
409 virtual bool IsControl() const OVERRIDE { return true; } 411 virtual bool IsControl() const V8_OVERRIDE { return true; }
410 412
411 int block_id() const { return block_id_; } 413 int block_id() const { return block_id_; }
412 414
413 private: 415 private:
414 int block_id_; 416 int block_id_;
415 }; 417 };
416 418
417 419
418 class LLazyBailout FINAL : public LTemplateInstruction<0, 0, 0> { 420 class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> {
419 public: 421 public:
420 LLazyBailout() : gap_instructions_size_(0) { } 422 LLazyBailout() : gap_instructions_size_(0) { }
421 423
422 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout") 424 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout")
423 425
424 void set_gap_instructions_size(int gap_instructions_size) { 426 void set_gap_instructions_size(int gap_instructions_size) {
425 gap_instructions_size_ = gap_instructions_size; 427 gap_instructions_size_ = gap_instructions_size;
426 } 428 }
427 int gap_instructions_size() { return gap_instructions_size_; } 429 int gap_instructions_size() { return gap_instructions_size_; }
428 430
429 private: 431 private:
430 int gap_instructions_size_; 432 int gap_instructions_size_;
431 }; 433 };
432 434
433 435
434 class LDummyUse FINAL : public LTemplateInstruction<1, 1, 0> { 436 class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> {
435 public: 437 public:
436 explicit LDummyUse(LOperand* value) { 438 explicit LDummyUse(LOperand* value) {
437 inputs_[0] = value; 439 inputs_[0] = value;
438 } 440 }
439 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use") 441 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use")
440 }; 442 };
441 443
442 444
443 class LDeoptimize FINAL : public LTemplateInstruction<0, 0, 0> { 445 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
444 public: 446 public:
445 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") 447 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
446 DECLARE_HYDROGEN_ACCESSOR(Deoptimize) 448 DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
447 }; 449 };
448 450
449 451
450 class LLabel FINAL : public LGap { 452 class LLabel V8_FINAL : public LGap {
451 public: 453 public:
452 explicit LLabel(HBasicBlock* block) 454 explicit LLabel(HBasicBlock* block)
453 : LGap(block), replacement_(NULL) { } 455 : LGap(block), replacement_(NULL) { }
454 456
455 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 457 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
456 return false; 458 return false;
457 } 459 }
458 DECLARE_CONCRETE_INSTRUCTION(Label, "label") 460 DECLARE_CONCRETE_INSTRUCTION(Label, "label")
459 461
460 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 462 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
461 463
462 int block_id() const { return block()->block_id(); } 464 int block_id() const { return block()->block_id(); }
463 bool is_loop_header() const { return block()->IsLoopHeader(); } 465 bool is_loop_header() const { return block()->IsLoopHeader(); }
464 bool is_osr_entry() const { return block()->is_osr_entry(); } 466 bool is_osr_entry() const { return block()->is_osr_entry(); }
465 Label* label() { return &label_; } 467 Label* label() { return &label_; }
466 LLabel* replacement() const { return replacement_; } 468 LLabel* replacement() const { return replacement_; }
467 void set_replacement(LLabel* label) { replacement_ = label; } 469 void set_replacement(LLabel* label) { replacement_ = label; }
468 bool HasReplacement() const { return replacement_ != NULL; } 470 bool HasReplacement() const { return replacement_ != NULL; }
469 471
470 private: 472 private:
471 Label label_; 473 Label label_;
472 LLabel* replacement_; 474 LLabel* replacement_;
473 }; 475 };
474 476
475 477
476 class LParameter FINAL : public LTemplateInstruction<1, 0, 0> { 478 class LParameter V8_FINAL : public LTemplateInstruction<1, 0, 0> {
477 public: 479 public:
478 virtual bool HasInterestingComment(LCodeGen* gen) const { return false; } 480 virtual bool HasInterestingComment(LCodeGen* gen) const { return false; }
479 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter") 481 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter")
480 }; 482 };
481 483
482 484
483 class LCallStub FINAL : public LTemplateInstruction<1, 0, 0> { 485 class LCallStub V8_FINAL : public LTemplateInstruction<1, 0, 0> {
484 public: 486 public:
485 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") 487 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
486 DECLARE_HYDROGEN_ACCESSOR(CallStub) 488 DECLARE_HYDROGEN_ACCESSOR(CallStub)
487 489
488 TranscendentalCache::Type transcendental_type() { 490 TranscendentalCache::Type transcendental_type() {
489 return hydrogen()->transcendental_type(); 491 return hydrogen()->transcendental_type();
490 } 492 }
491 }; 493 };
492 494
493 495
494 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> { 496 class LUnknownOSRValue V8_FINAL : public LTemplateInstruction<1, 0, 0> {
495 public: 497 public:
496 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 498 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
497 return false; 499 return false;
498 } 500 }
499 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") 501 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value")
500 }; 502 };
501 503
502 504
503 template<int I, int T> 505 template<int I, int T>
504 class LControlInstruction : public LTemplateInstruction<0, I, T> { 506 class LControlInstruction : public LTemplateInstruction<0, I, T> {
505 public: 507 public:
506 LControlInstruction() : false_label_(NULL), true_label_(NULL) { } 508 LControlInstruction() : false_label_(NULL), true_label_(NULL) { }
507 509
508 virtual bool IsControl() const FINAL OVERRIDE { return true; } 510 virtual bool IsControl() const V8_FINAL V8_OVERRIDE { return true; }
509 511
510 int SuccessorCount() { return hydrogen()->SuccessorCount(); } 512 int SuccessorCount() { return hydrogen()->SuccessorCount(); }
511 HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); } 513 HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
512 514
513 int TrueDestination(LChunk* chunk) { 515 int TrueDestination(LChunk* chunk) {
514 return chunk->LookupDestination(true_block_id()); 516 return chunk->LookupDestination(true_block_id());
515 } 517 }
516 int FalseDestination(LChunk* chunk) { 518 int FalseDestination(LChunk* chunk) {
517 return chunk->LookupDestination(false_block_id()); 519 return chunk->LookupDestination(false_block_id());
518 } 520 }
(...skipping 18 matching lines...) Expand all
537 private: 539 private:
538 HControlInstruction* hydrogen() { 540 HControlInstruction* hydrogen() {
539 return HControlInstruction::cast(this->hydrogen_value()); 541 return HControlInstruction::cast(this->hydrogen_value());
540 } 542 }
541 543
542 Label* false_label_; 544 Label* false_label_;
543 Label* true_label_; 545 Label* true_label_;
544 }; 546 };
545 547
546 548
547 class LWrapReceiver FINAL : public LTemplateInstruction<1, 2, 0> { 549 class LWrapReceiver V8_FINAL : public LTemplateInstruction<1, 2, 0> {
548 public: 550 public:
549 LWrapReceiver(LOperand* receiver, LOperand* function) { 551 LWrapReceiver(LOperand* receiver, LOperand* function) {
550 inputs_[0] = receiver; 552 inputs_[0] = receiver;
551 inputs_[1] = function; 553 inputs_[1] = function;
552 } 554 }
553 555
554 DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver") 556 DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
555 557
556 LOperand* receiver() { return inputs_[0]; } 558 LOperand* receiver() { return inputs_[0]; }
557 LOperand* function() { return inputs_[1]; } 559 LOperand* function() { return inputs_[1]; }
558 }; 560 };
559 561
560 562
561 class LApplyArguments FINAL : public LTemplateInstruction<1, 4, 0> { 563 class LApplyArguments V8_FINAL : public LTemplateInstruction<1, 4, 0> {
562 public: 564 public:
563 LApplyArguments(LOperand* function, 565 LApplyArguments(LOperand* function,
564 LOperand* receiver, 566 LOperand* receiver,
565 LOperand* length, 567 LOperand* length,
566 LOperand* elements) { 568 LOperand* elements) {
567 inputs_[0] = function; 569 inputs_[0] = function;
568 inputs_[1] = receiver; 570 inputs_[1] = receiver;
569 inputs_[2] = length; 571 inputs_[2] = length;
570 inputs_[3] = elements; 572 inputs_[3] = elements;
571 } 573 }
572 574
573 DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply-arguments") 575 DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply-arguments")
574 576
575 LOperand* function() { return inputs_[0]; } 577 LOperand* function() { return inputs_[0]; }
576 LOperand* receiver() { return inputs_[1]; } 578 LOperand* receiver() { return inputs_[1]; }
577 LOperand* length() { return inputs_[2]; } 579 LOperand* length() { return inputs_[2]; }
578 LOperand* elements() { return inputs_[3]; } 580 LOperand* elements() { return inputs_[3]; }
579 }; 581 };
580 582
581 583
582 class LAccessArgumentsAt FINAL : public LTemplateInstruction<1, 3, 0> { 584 class LAccessArgumentsAt V8_FINAL : public LTemplateInstruction<1, 3, 0> {
583 public: 585 public:
584 LAccessArgumentsAt(LOperand* arguments, LOperand* length, LOperand* index) { 586 LAccessArgumentsAt(LOperand* arguments, LOperand* length, LOperand* index) {
585 inputs_[0] = arguments; 587 inputs_[0] = arguments;
586 inputs_[1] = length; 588 inputs_[1] = length;
587 inputs_[2] = index; 589 inputs_[2] = index;
588 } 590 }
589 591
590 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at") 592 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at")
591 593
592 LOperand* arguments() { return inputs_[0]; } 594 LOperand* arguments() { return inputs_[0]; }
593 LOperand* length() { return inputs_[1]; } 595 LOperand* length() { return inputs_[1]; }
594 LOperand* index() { return inputs_[2]; } 596 LOperand* index() { return inputs_[2]; }
595 597
596 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 598 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
597 }; 599 };
598 600
599 601
600 class LArgumentsLength FINAL : public LTemplateInstruction<1, 1, 0> { 602 class LArgumentsLength V8_FINAL : public LTemplateInstruction<1, 1, 0> {
601 public: 603 public:
602 explicit LArgumentsLength(LOperand* elements) { 604 explicit LArgumentsLength(LOperand* elements) {
603 inputs_[0] = elements; 605 inputs_[0] = elements;
604 } 606 }
605 607
606 LOperand* elements() { return inputs_[0]; } 608 LOperand* elements() { return inputs_[0]; }
607 609
608 DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length") 610 DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length")
609 }; 611 };
610 612
611 613
612 class LArgumentsElements FINAL : public LTemplateInstruction<1, 0, 0> { 614 class LArgumentsElements V8_FINAL : public LTemplateInstruction<1, 0, 0> {
613 public: 615 public:
614 DECLARE_CONCRETE_INSTRUCTION(ArgumentsElements, "arguments-elements") 616 DECLARE_CONCRETE_INSTRUCTION(ArgumentsElements, "arguments-elements")
615 DECLARE_HYDROGEN_ACCESSOR(ArgumentsElements) 617 DECLARE_HYDROGEN_ACCESSOR(ArgumentsElements)
616 }; 618 };
617 619
618 620
619 class LModI FINAL : public LTemplateInstruction<1, 2, 2> { 621 class LModI V8_FINAL : public LTemplateInstruction<1, 2, 2> {
620 public: 622 public:
621 LModI(LOperand* left, 623 LModI(LOperand* left,
622 LOperand* right, 624 LOperand* right,
623 LOperand* temp = NULL, 625 LOperand* temp = NULL,
624 LOperand* temp2 = NULL) { 626 LOperand* temp2 = NULL) {
625 inputs_[0] = left; 627 inputs_[0] = left;
626 inputs_[1] = right; 628 inputs_[1] = right;
627 temps_[0] = temp; 629 temps_[0] = temp;
628 temps_[1] = temp2; 630 temps_[1] = temp2;
629 } 631 }
630 632
631 LOperand* left() { return inputs_[0]; } 633 LOperand* left() { return inputs_[0]; }
632 LOperand* right() { return inputs_[1]; } 634 LOperand* right() { return inputs_[1]; }
633 LOperand* temp() { return temps_[0]; } 635 LOperand* temp() { return temps_[0]; }
634 LOperand* temp2() { return temps_[1]; } 636 LOperand* temp2() { return temps_[1]; }
635 637
636 DECLARE_CONCRETE_INSTRUCTION(ModI, "mod-i") 638 DECLARE_CONCRETE_INSTRUCTION(ModI, "mod-i")
637 DECLARE_HYDROGEN_ACCESSOR(Mod) 639 DECLARE_HYDROGEN_ACCESSOR(Mod)
638 }; 640 };
639 641
640 642
641 class LDivI FINAL : public LTemplateInstruction<1, 2, 1> { 643 class LDivI V8_FINAL : public LTemplateInstruction<1, 2, 1> {
642 public: 644 public:
643 LDivI(LOperand* left, LOperand* right, LOperand* temp) { 645 LDivI(LOperand* left, LOperand* right, LOperand* temp) {
644 inputs_[0] = left; 646 inputs_[0] = left;
645 inputs_[1] = right; 647 inputs_[1] = right;
646 temps_[0] = temp; 648 temps_[0] = temp;
647 } 649 }
648 650
649 LOperand* left() { return inputs_[0]; } 651 LOperand* left() { return inputs_[0]; }
650 LOperand* right() { return inputs_[1]; } 652 LOperand* right() { return inputs_[1]; }
651 LOperand* temp() { return temps_[0]; } 653 LOperand* temp() { return temps_[0]; }
652 654
653 DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i") 655 DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i")
654 DECLARE_HYDROGEN_ACCESSOR(Div) 656 DECLARE_HYDROGEN_ACCESSOR(Div)
655 }; 657 };
656 658
657 659
658 class LMathFloorOfDiv FINAL : public LTemplateInstruction<1, 2, 1> { 660 class LMathFloorOfDiv V8_FINAL : public LTemplateInstruction<1, 2, 1> {
659 public: 661 public:
660 LMathFloorOfDiv(LOperand* left, 662 LMathFloorOfDiv(LOperand* left,
661 LOperand* right, 663 LOperand* right,
662 LOperand* temp = NULL) { 664 LOperand* temp = NULL) {
663 inputs_[0] = left; 665 inputs_[0] = left;
664 inputs_[1] = right; 666 inputs_[1] = right;
665 temps_[0] = temp; 667 temps_[0] = temp;
666 } 668 }
667 669
668 LOperand* left() { return inputs_[0]; } 670 LOperand* left() { return inputs_[0]; }
669 LOperand* right() { return inputs_[1]; } 671 LOperand* right() { return inputs_[1]; }
670 LOperand* temp() { return temps_[0]; } 672 LOperand* temp() { return temps_[0]; }
671 673
672 DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div") 674 DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div")
673 DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv) 675 DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv)
674 }; 676 };
675 677
676 678
677 class LMulI FINAL : public LTemplateInstruction<1, 2, 1> { 679 class LMulI V8_FINAL : public LTemplateInstruction<1, 2, 1> {
678 public: 680 public:
679 LMulI(LOperand* left, LOperand* right, LOperand* temp) { 681 LMulI(LOperand* left, LOperand* right, LOperand* temp) {
680 inputs_[0] = left; 682 inputs_[0] = left;
681 inputs_[1] = right; 683 inputs_[1] = right;
682 temps_[0] = temp; 684 temps_[0] = temp;
683 } 685 }
684 686
685 LOperand* left() { return inputs_[0]; } 687 LOperand* left() { return inputs_[0]; }
686 LOperand* right() { return inputs_[1]; } 688 LOperand* right() { return inputs_[1]; }
687 LOperand* temp() { return temps_[0]; } 689 LOperand* temp() { return temps_[0]; }
688 690
689 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i") 691 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
690 DECLARE_HYDROGEN_ACCESSOR(Mul) 692 DECLARE_HYDROGEN_ACCESSOR(Mul)
691 }; 693 };
692 694
693 695
694 // Instruction for computing multiplier * multiplicand + addend. 696 // Instruction for computing multiplier * multiplicand + addend.
695 class LMultiplyAddD FINAL : public LTemplateInstruction<1, 3, 0> { 697 class LMultiplyAddD V8_FINAL : public LTemplateInstruction<1, 3, 0> {
696 public: 698 public:
697 LMultiplyAddD(LOperand* addend, LOperand* multiplier, 699 LMultiplyAddD(LOperand* addend, LOperand* multiplier,
698 LOperand* multiplicand) { 700 LOperand* multiplicand) {
699 inputs_[0] = addend; 701 inputs_[0] = addend;
700 inputs_[1] = multiplier; 702 inputs_[1] = multiplier;
701 inputs_[2] = multiplicand; 703 inputs_[2] = multiplicand;
702 } 704 }
703 705
704 LOperand* addend() { return inputs_[0]; } 706 LOperand* addend() { return inputs_[0]; }
705 LOperand* multiplier() { return inputs_[1]; } 707 LOperand* multiplier() { return inputs_[1]; }
706 LOperand* multiplicand() { return inputs_[2]; } 708 LOperand* multiplicand() { return inputs_[2]; }
707 709
708 DECLARE_CONCRETE_INSTRUCTION(MultiplyAddD, "multiply-add-d") 710 DECLARE_CONCRETE_INSTRUCTION(MultiplyAddD, "multiply-add-d")
709 }; 711 };
710 712
711 713
712 // Instruction for computing minuend - multiplier * multiplicand. 714 // Instruction for computing minuend - multiplier * multiplicand.
713 class LMultiplySubD FINAL : public LTemplateInstruction<1, 3, 0> { 715 class LMultiplySubD V8_FINAL : public LTemplateInstruction<1, 3, 0> {
714 public: 716 public:
715 LMultiplySubD(LOperand* minuend, LOperand* multiplier, 717 LMultiplySubD(LOperand* minuend, LOperand* multiplier,
716 LOperand* multiplicand) { 718 LOperand* multiplicand) {
717 inputs_[0] = minuend; 719 inputs_[0] = minuend;
718 inputs_[1] = multiplier; 720 inputs_[1] = multiplier;
719 inputs_[2] = multiplicand; 721 inputs_[2] = multiplicand;
720 } 722 }
721 723
722 LOperand* minuend() { return inputs_[0]; } 724 LOperand* minuend() { return inputs_[0]; }
723 LOperand* multiplier() { return inputs_[1]; } 725 LOperand* multiplier() { return inputs_[1]; }
724 LOperand* multiplicand() { return inputs_[2]; } 726 LOperand* multiplicand() { return inputs_[2]; }
725 727
726 DECLARE_CONCRETE_INSTRUCTION(MultiplySubD, "multiply-sub-d") 728 DECLARE_CONCRETE_INSTRUCTION(MultiplySubD, "multiply-sub-d")
727 }; 729 };
728 730
729 731
730 class LDebugBreak FINAL : public LTemplateInstruction<0, 0, 0> { 732 class LDebugBreak V8_FINAL : public LTemplateInstruction<0, 0, 0> {
731 public: 733 public:
732 DECLARE_CONCRETE_INSTRUCTION(DebugBreak, "break") 734 DECLARE_CONCRETE_INSTRUCTION(DebugBreak, "break")
733 }; 735 };
734 736
735 737
736 class LCompareNumericAndBranch FINAL : public LControlInstruction<2, 0> { 738 class LCompareNumericAndBranch V8_FINAL : public LControlInstruction<2, 0> {
737 public: 739 public:
738 LCompareNumericAndBranch(LOperand* left, LOperand* right) { 740 LCompareNumericAndBranch(LOperand* left, LOperand* right) {
739 inputs_[0] = left; 741 inputs_[0] = left;
740 inputs_[1] = right; 742 inputs_[1] = right;
741 } 743 }
742 744
743 LOperand* left() { return inputs_[0]; } 745 LOperand* left() { return inputs_[0]; }
744 LOperand* right() { return inputs_[1]; } 746 LOperand* right() { return inputs_[1]; }
745 747
746 DECLARE_CONCRETE_INSTRUCTION(CompareNumericAndBranch, 748 DECLARE_CONCRETE_INSTRUCTION(CompareNumericAndBranch,
747 "compare-numeric-and-branch") 749 "compare-numeric-and-branch")
748 DECLARE_HYDROGEN_ACCESSOR(CompareNumericAndBranch) 750 DECLARE_HYDROGEN_ACCESSOR(CompareNumericAndBranch)
749 751
750 Token::Value op() const { return hydrogen()->token(); } 752 Token::Value op() const { return hydrogen()->token(); }
751 bool is_double() const { 753 bool is_double() const {
752 return hydrogen()->representation().IsDouble(); 754 return hydrogen()->representation().IsDouble();
753 } 755 }
754 756
755 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 757 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
756 }; 758 };
757 759
758 760
759 class LMathFloor FINAL : public LTemplateInstruction<1, 1, 0> { 761 class LMathFloor V8_FINAL : public LTemplateInstruction<1, 1, 0> {
760 public: 762 public:
761 explicit LMathFloor(LOperand* value) { 763 explicit LMathFloor(LOperand* value) {
762 inputs_[0] = value; 764 inputs_[0] = value;
763 } 765 }
764 766
765 LOperand* value() { return inputs_[0]; } 767 LOperand* value() { return inputs_[0]; }
766 768
767 DECLARE_CONCRETE_INSTRUCTION(MathFloor, "math-floor") 769 DECLARE_CONCRETE_INSTRUCTION(MathFloor, "math-floor")
768 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 770 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
769 }; 771 };
770 772
771 773
772 class LMathRound FINAL : public LTemplateInstruction<1, 1, 1> { 774 class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 1> {
773 public: 775 public:
774 LMathRound(LOperand* value, LOperand* temp) { 776 LMathRound(LOperand* value, LOperand* temp) {
775 inputs_[0] = value; 777 inputs_[0] = value;
776 temps_[0] = temp; 778 temps_[0] = temp;
777 } 779 }
778 780
779 LOperand* value() { return inputs_[0]; } 781 LOperand* value() { return inputs_[0]; }
780 LOperand* temp() { return temps_[0]; } 782 LOperand* temp() { return temps_[0]; }
781 783
782 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round") 784 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round")
783 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 785 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
784 }; 786 };
785 787
786 788
787 class LMathAbs FINAL : public LTemplateInstruction<1, 1, 0> { 789 class LMathAbs V8_FINAL : public LTemplateInstruction<1, 1, 0> {
788 public: 790 public:
789 explicit LMathAbs(LOperand* value) { 791 explicit LMathAbs(LOperand* value) {
790 inputs_[0] = value; 792 inputs_[0] = value;
791 } 793 }
792 794
793 LOperand* value() { return inputs_[0]; } 795 LOperand* value() { return inputs_[0]; }
794 796
795 DECLARE_CONCRETE_INSTRUCTION(MathAbs, "math-abs") 797 DECLARE_CONCRETE_INSTRUCTION(MathAbs, "math-abs")
796 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 798 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
797 }; 799 };
798 800
799 801
800 class LMathLog FINAL : public LTemplateInstruction<1, 1, 0> { 802 class LMathLog V8_FINAL : public LTemplateInstruction<1, 1, 0> {
801 public: 803 public:
802 explicit LMathLog(LOperand* value) { 804 explicit LMathLog(LOperand* value) {
803 inputs_[0] = value; 805 inputs_[0] = value;
804 } 806 }
805 807
806 LOperand* value() { return inputs_[0]; } 808 LOperand* value() { return inputs_[0]; }
807 809
808 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log") 810 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log")
809 }; 811 };
810 812
811 813
812 class LMathSin FINAL : public LTemplateInstruction<1, 1, 0> { 814 class LMathSin V8_FINAL : public LTemplateInstruction<1, 1, 0> {
813 public: 815 public:
814 explicit LMathSin(LOperand* value) { 816 explicit LMathSin(LOperand* value) {
815 inputs_[0] = value; 817 inputs_[0] = value;
816 } 818 }
817 819
818 LOperand* value() { return inputs_[0]; } 820 LOperand* value() { return inputs_[0]; }
819 821
820 DECLARE_CONCRETE_INSTRUCTION(MathSin, "math-sin") 822 DECLARE_CONCRETE_INSTRUCTION(MathSin, "math-sin")
821 }; 823 };
822 824
823 825
824 class LMathCos FINAL : public LTemplateInstruction<1, 1, 0> { 826 class LMathCos V8_FINAL : public LTemplateInstruction<1, 1, 0> {
825 public: 827 public:
826 explicit LMathCos(LOperand* value) { 828 explicit LMathCos(LOperand* value) {
827 inputs_[0] = value; 829 inputs_[0] = value;
828 } 830 }
829 831
830 LOperand* value() { return inputs_[0]; } 832 LOperand* value() { return inputs_[0]; }
831 833
832 DECLARE_CONCRETE_INSTRUCTION(MathCos, "math-cos") 834 DECLARE_CONCRETE_INSTRUCTION(MathCos, "math-cos")
833 }; 835 };
834 836
835 837
836 class LMathTan FINAL : public LTemplateInstruction<1, 1, 0> { 838 class LMathTan V8_FINAL : public LTemplateInstruction<1, 1, 0> {
837 public: 839 public:
838 explicit LMathTan(LOperand* value) { 840 explicit LMathTan(LOperand* value) {
839 inputs_[0] = value; 841 inputs_[0] = value;
840 } 842 }
841 843
842 LOperand* value() { return inputs_[0]; } 844 LOperand* value() { return inputs_[0]; }
843 845
844 DECLARE_CONCRETE_INSTRUCTION(MathTan, "math-tan") 846 DECLARE_CONCRETE_INSTRUCTION(MathTan, "math-tan")
845 }; 847 };
846 848
847 849
848 class LMathExp FINAL : public LTemplateInstruction<1, 1, 3> { 850 class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> {
849 public: 851 public:
850 LMathExp(LOperand* value, 852 LMathExp(LOperand* value,
851 LOperand* double_temp, 853 LOperand* double_temp,
852 LOperand* temp1, 854 LOperand* temp1,
853 LOperand* temp2) { 855 LOperand* temp2) {
854 inputs_[0] = value; 856 inputs_[0] = value;
855 temps_[0] = temp1; 857 temps_[0] = temp1;
856 temps_[1] = temp2; 858 temps_[1] = temp2;
857 temps_[2] = double_temp; 859 temps_[2] = double_temp;
858 ExternalReference::InitializeMathExpData(); 860 ExternalReference::InitializeMathExpData();
859 } 861 }
860 862
861 LOperand* value() { return inputs_[0]; } 863 LOperand* value() { return inputs_[0]; }
862 LOperand* temp1() { return temps_[0]; } 864 LOperand* temp1() { return temps_[0]; }
863 LOperand* temp2() { return temps_[1]; } 865 LOperand* temp2() { return temps_[1]; }
864 LOperand* double_temp() { return temps_[2]; } 866 LOperand* double_temp() { return temps_[2]; }
865 867
866 DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp") 868 DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp")
867 }; 869 };
868 870
869 871
870 class LMathSqrt FINAL : public LTemplateInstruction<1, 1, 0> { 872 class LMathSqrt V8_FINAL : public LTemplateInstruction<1, 1, 0> {
871 public: 873 public:
872 explicit LMathSqrt(LOperand* value) { 874 explicit LMathSqrt(LOperand* value) {
873 inputs_[0] = value; 875 inputs_[0] = value;
874 } 876 }
875 877
876 LOperand* value() { return inputs_[0]; } 878 LOperand* value() { return inputs_[0]; }
877 879
878 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt") 880 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt")
879 }; 881 };
880 882
881 883
882 class LMathPowHalf FINAL : public LTemplateInstruction<1, 1, 1> { 884 class LMathPowHalf V8_FINAL : public LTemplateInstruction<1, 1, 1> {
883 public: 885 public:
884 LMathPowHalf(LOperand* value, LOperand* temp) { 886 LMathPowHalf(LOperand* value, LOperand* temp) {
885 inputs_[0] = value; 887 inputs_[0] = value;
886 temps_[0] = temp; 888 temps_[0] = temp;
887 } 889 }
888 890
889 LOperand* value() { return inputs_[0]; } 891 LOperand* value() { return inputs_[0]; }
890 LOperand* temp() { return temps_[0]; } 892 LOperand* temp() { return temps_[0]; }
891 893
892 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half") 894 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half")
893 }; 895 };
894 896
895 897
896 class LCmpObjectEqAndBranch FINAL : public LControlInstruction<2, 0> { 898 class LCmpObjectEqAndBranch V8_FINAL : public LControlInstruction<2, 0> {
897 public: 899 public:
898 LCmpObjectEqAndBranch(LOperand* left, LOperand* right) { 900 LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
899 inputs_[0] = left; 901 inputs_[0] = left;
900 inputs_[1] = right; 902 inputs_[1] = right;
901 } 903 }
902 904
903 LOperand* left() { return inputs_[0]; } 905 LOperand* left() { return inputs_[0]; }
904 LOperand* right() { return inputs_[1]; } 906 LOperand* right() { return inputs_[1]; }
905 907
906 DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch, "cmp-object-eq-and-branch") 908 DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch, "cmp-object-eq-and-branch")
907 DECLARE_HYDROGEN_ACCESSOR(CompareObjectEqAndBranch) 909 DECLARE_HYDROGEN_ACCESSOR(CompareObjectEqAndBranch)
908 }; 910 };
909 911
910 912
911 class LCmpHoleAndBranch FINAL : public LControlInstruction<1, 0> { 913 class LCmpHoleAndBranch V8_FINAL : public LControlInstruction<1, 0> {
912 public: 914 public:
913 explicit LCmpHoleAndBranch(LOperand* object) { 915 explicit LCmpHoleAndBranch(LOperand* object) {
914 inputs_[0] = object; 916 inputs_[0] = object;
915 } 917 }
916 918
917 LOperand* object() { return inputs_[0]; } 919 LOperand* object() { return inputs_[0]; }
918 920
919 DECLARE_CONCRETE_INSTRUCTION(CmpHoleAndBranch, "cmp-hole-and-branch") 921 DECLARE_CONCRETE_INSTRUCTION(CmpHoleAndBranch, "cmp-hole-and-branch")
920 DECLARE_HYDROGEN_ACCESSOR(CompareHoleAndBranch) 922 DECLARE_HYDROGEN_ACCESSOR(CompareHoleAndBranch)
921 }; 923 };
922 924
923 925
924 class LIsObjectAndBranch FINAL : public LControlInstruction<1, 1> { 926 class LIsObjectAndBranch V8_FINAL : public LControlInstruction<1, 1> {
925 public: 927 public:
926 LIsObjectAndBranch(LOperand* value, LOperand* temp) { 928 LIsObjectAndBranch(LOperand* value, LOperand* temp) {
927 inputs_[0] = value; 929 inputs_[0] = value;
928 temps_[0] = temp; 930 temps_[0] = temp;
929 } 931 }
930 932
931 LOperand* value() { return inputs_[0]; } 933 LOperand* value() { return inputs_[0]; }
932 LOperand* temp() { return temps_[0]; } 934 LOperand* temp() { return temps_[0]; }
933 935
934 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") 936 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
935 DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch) 937 DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
936 938
937 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 939 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
938 }; 940 };
939 941
940 942
941 class LIsNumberAndBranch FINAL : public LControlInstruction<1, 0> { 943 class LIsNumberAndBranch V8_FINAL : public LControlInstruction<1, 0> {
942 public: 944 public:
943 explicit LIsNumberAndBranch(LOperand* value) { 945 explicit LIsNumberAndBranch(LOperand* value) {
944 inputs_[0] = value; 946 inputs_[0] = value;
945 } 947 }
946 948
947 LOperand* value() { return inputs_[0]; } 949 LOperand* value() { return inputs_[0]; }
948 950
949 DECLARE_CONCRETE_INSTRUCTION(IsNumberAndBranch, "is-number-and-branch") 951 DECLARE_CONCRETE_INSTRUCTION(IsNumberAndBranch, "is-number-and-branch")
950 DECLARE_HYDROGEN_ACCESSOR(IsNumberAndBranch) 952 DECLARE_HYDROGEN_ACCESSOR(IsNumberAndBranch)
951 }; 953 };
952 954
953 955
954 class LIsStringAndBranch FINAL : public LControlInstruction<1, 1> { 956 class LIsStringAndBranch V8_FINAL : public LControlInstruction<1, 1> {
955 public: 957 public:
956 LIsStringAndBranch(LOperand* value, LOperand* temp) { 958 LIsStringAndBranch(LOperand* value, LOperand* temp) {
957 inputs_[0] = value; 959 inputs_[0] = value;
958 temps_[0] = temp; 960 temps_[0] = temp;
959 } 961 }
960 962
961 LOperand* value() { return inputs_[0]; } 963 LOperand* value() { return inputs_[0]; }
962 LOperand* temp() { return temps_[0]; } 964 LOperand* temp() { return temps_[0]; }
963 965
964 DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch") 966 DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch")
965 DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch) 967 DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch)
966 968
967 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 969 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
968 }; 970 };
969 971
970 972
971 class LIsSmiAndBranch FINAL : public LControlInstruction<1, 0> { 973 class LIsSmiAndBranch V8_FINAL : public LControlInstruction<1, 0> {
972 public: 974 public:
973 explicit LIsSmiAndBranch(LOperand* value) { 975 explicit LIsSmiAndBranch(LOperand* value) {
974 inputs_[0] = value; 976 inputs_[0] = value;
975 } 977 }
976 978
977 LOperand* value() { return inputs_[0]; } 979 LOperand* value() { return inputs_[0]; }
978 980
979 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch") 981 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
980 DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch) 982 DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
981 983
982 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 984 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
983 }; 985 };
984 986
985 987
986 class LIsUndetectableAndBranch FINAL : public LControlInstruction<1, 1> { 988 class LIsUndetectableAndBranch V8_FINAL : public LControlInstruction<1, 1> {
987 public: 989 public:
988 explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) { 990 explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
989 inputs_[0] = value; 991 inputs_[0] = value;
990 temps_[0] = temp; 992 temps_[0] = temp;
991 } 993 }
992 994
993 LOperand* value() { return inputs_[0]; } 995 LOperand* value() { return inputs_[0]; }
994 LOperand* temp() { return temps_[0]; } 996 LOperand* temp() { return temps_[0]; }
995 997
996 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch, 998 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
997 "is-undetectable-and-branch") 999 "is-undetectable-and-branch")
998 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch) 1000 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
999 1001
1000 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1002 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1001 }; 1003 };
1002 1004
1003 1005
1004 class LStringCompareAndBranch FINAL : public LControlInstruction<2, 0> { 1006 class LStringCompareAndBranch V8_FINAL : public LControlInstruction<2, 0> {
1005 public: 1007 public:
1006 LStringCompareAndBranch(LOperand* left, LOperand* right) { 1008 LStringCompareAndBranch(LOperand* left, LOperand* right) {
1007 inputs_[0] = left; 1009 inputs_[0] = left;
1008 inputs_[1] = right; 1010 inputs_[1] = right;
1009 } 1011 }
1010 1012
1011 LOperand* left() { return inputs_[0]; } 1013 LOperand* left() { return inputs_[0]; }
1012 LOperand* right() { return inputs_[1]; } 1014 LOperand* right() { return inputs_[1]; }
1013 1015
1014 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch, 1016 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
1015 "string-compare-and-branch") 1017 "string-compare-and-branch")
1016 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch) 1018 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
1017 1019
1018 Token::Value op() const { return hydrogen()->token(); } 1020 Token::Value op() const { return hydrogen()->token(); }
1019 1021
1020 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1022 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1021 }; 1023 };
1022 1024
1023 1025
1024 class LHasInstanceTypeAndBranch FINAL : public LControlInstruction<1, 0> { 1026 class LHasInstanceTypeAndBranch V8_FINAL : public LControlInstruction<1, 0> {
1025 public: 1027 public:
1026 explicit LHasInstanceTypeAndBranch(LOperand* value) { 1028 explicit LHasInstanceTypeAndBranch(LOperand* value) {
1027 inputs_[0] = value; 1029 inputs_[0] = value;
1028 } 1030 }
1029 1031
1030 LOperand* value() { return inputs_[0]; } 1032 LOperand* value() { return inputs_[0]; }
1031 1033
1032 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch, 1034 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
1033 "has-instance-type-and-branch") 1035 "has-instance-type-and-branch")
1034 DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch) 1036 DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
1035 1037
1036 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1038 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1037 }; 1039 };
1038 1040
1039 1041
1040 class LGetCachedArrayIndex FINAL : public LTemplateInstruction<1, 1, 0> { 1042 class LGetCachedArrayIndex V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1041 public: 1043 public:
1042 explicit LGetCachedArrayIndex(LOperand* value) { 1044 explicit LGetCachedArrayIndex(LOperand* value) {
1043 inputs_[0] = value; 1045 inputs_[0] = value;
1044 } 1046 }
1045 1047
1046 LOperand* value() { return inputs_[0]; } 1048 LOperand* value() { return inputs_[0]; }
1047 1049
1048 DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index") 1050 DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
1049 DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex) 1051 DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
1050 }; 1052 };
1051 1053
1052 1054
1053 class LHasCachedArrayIndexAndBranch FINAL : public LControlInstruction<1, 0> { 1055 class LHasCachedArrayIndexAndBranch V8_FINAL
1056 : public LControlInstruction<1, 0> {
1054 public: 1057 public:
1055 explicit LHasCachedArrayIndexAndBranch(LOperand* value) { 1058 explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
1056 inputs_[0] = value; 1059 inputs_[0] = value;
1057 } 1060 }
1058 1061
1059 LOperand* value() { return inputs_[0]; } 1062 LOperand* value() { return inputs_[0]; }
1060 1063
1061 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch, 1064 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
1062 "has-cached-array-index-and-branch") 1065 "has-cached-array-index-and-branch")
1063 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch) 1066 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
1064 1067
1065 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1068 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1066 }; 1069 };
1067 1070
1068 1071
1069 class LClassOfTestAndBranch FINAL : public LControlInstruction<1, 1> { 1072 class LClassOfTestAndBranch V8_FINAL : public LControlInstruction<1, 1> {
1070 public: 1073 public:
1071 LClassOfTestAndBranch(LOperand* value, LOperand* temp) { 1074 LClassOfTestAndBranch(LOperand* value, LOperand* temp) {
1072 inputs_[0] = value; 1075 inputs_[0] = value;
1073 temps_[0] = temp; 1076 temps_[0] = temp;
1074 } 1077 }
1075 1078
1076 LOperand* value() { return inputs_[0]; } 1079 LOperand* value() { return inputs_[0]; }
1077 LOperand* temp() { return temps_[0]; } 1080 LOperand* temp() { return temps_[0]; }
1078 1081
1079 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch, 1082 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
1080 "class-of-test-and-branch") 1083 "class-of-test-and-branch")
1081 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch) 1084 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
1082 1085
1083 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1086 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1084 }; 1087 };
1085 1088
1086 1089
1087 class LCmpT FINAL : public LTemplateInstruction<1, 2, 0> { 1090 class LCmpT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1088 public: 1091 public:
1089 LCmpT(LOperand* left, LOperand* right) { 1092 LCmpT(LOperand* left, LOperand* right) {
1090 inputs_[0] = left; 1093 inputs_[0] = left;
1091 inputs_[1] = right; 1094 inputs_[1] = right;
1092 } 1095 }
1093 1096
1094 LOperand* left() { return inputs_[0]; } 1097 LOperand* left() { return inputs_[0]; }
1095 LOperand* right() { return inputs_[1]; } 1098 LOperand* right() { return inputs_[1]; }
1096 1099
1097 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") 1100 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
1098 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric) 1101 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
1099 1102
1100 Token::Value op() const { return hydrogen()->token(); } 1103 Token::Value op() const { return hydrogen()->token(); }
1101 }; 1104 };
1102 1105
1103 1106
1104 class LInstanceOf FINAL : public LTemplateInstruction<1, 2, 0> { 1107 class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1105 public: 1108 public:
1106 LInstanceOf(LOperand* left, LOperand* right) { 1109 LInstanceOf(LOperand* left, LOperand* right) {
1107 inputs_[0] = left; 1110 inputs_[0] = left;
1108 inputs_[1] = right; 1111 inputs_[1] = right;
1109 } 1112 }
1110 1113
1111 LOperand* left() { return inputs_[0]; } 1114 LOperand* left() { return inputs_[0]; }
1112 LOperand* right() { return inputs_[1]; } 1115 LOperand* right() { return inputs_[1]; }
1113 1116
1114 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") 1117 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
1115 }; 1118 };
1116 1119
1117 1120
1118 class LInstanceOfKnownGlobal FINAL : public LTemplateInstruction<1, 1, 1> { 1121 class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 1, 1> {
1119 public: 1122 public:
1120 LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) { 1123 LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) {
1121 inputs_[0] = value; 1124 inputs_[0] = value;
1122 temps_[0] = temp; 1125 temps_[0] = temp;
1123 } 1126 }
1124 1127
1125 LOperand* value() { return inputs_[0]; } 1128 LOperand* value() { return inputs_[0]; }
1126 LOperand* temp() { return temps_[0]; } 1129 LOperand* temp() { return temps_[0]; }
1127 1130
1128 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal, 1131 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
1129 "instance-of-known-global") 1132 "instance-of-known-global")
1130 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal) 1133 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
1131 1134
1132 Handle<JSFunction> function() const { return hydrogen()->function(); } 1135 Handle<JSFunction> function() const { return hydrogen()->function(); }
1133 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() { 1136 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() {
1134 return lazy_deopt_env_; 1137 return lazy_deopt_env_;
1135 } 1138 }
1136 virtual void SetDeferredLazyDeoptimizationEnvironment( 1139 virtual void SetDeferredLazyDeoptimizationEnvironment(
1137 LEnvironment* env) OVERRIDE { 1140 LEnvironment* env) V8_OVERRIDE {
1138 lazy_deopt_env_ = env; 1141 lazy_deopt_env_ = env;
1139 } 1142 }
1140 1143
1141 private: 1144 private:
1142 LEnvironment* lazy_deopt_env_; 1145 LEnvironment* lazy_deopt_env_;
1143 }; 1146 };
1144 1147
1145 1148
1146 class LInstanceSize FINAL : public LTemplateInstruction<1, 1, 0> { 1149 class LInstanceSize V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1147 public: 1150 public:
1148 explicit LInstanceSize(LOperand* object) { 1151 explicit LInstanceSize(LOperand* object) {
1149 inputs_[0] = object; 1152 inputs_[0] = object;
1150 } 1153 }
1151 1154
1152 LOperand* object() { return inputs_[0]; } 1155 LOperand* object() { return inputs_[0]; }
1153 1156
1154 DECLARE_CONCRETE_INSTRUCTION(InstanceSize, "instance-size") 1157 DECLARE_CONCRETE_INSTRUCTION(InstanceSize, "instance-size")
1155 DECLARE_HYDROGEN_ACCESSOR(InstanceSize) 1158 DECLARE_HYDROGEN_ACCESSOR(InstanceSize)
1156 }; 1159 };
1157 1160
1158 1161
1159 class LBoundsCheck FINAL : public LTemplateInstruction<0, 2, 0> { 1162 class LBoundsCheck V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1160 public: 1163 public:
1161 LBoundsCheck(LOperand* index, LOperand* length) { 1164 LBoundsCheck(LOperand* index, LOperand* length) {
1162 inputs_[0] = index; 1165 inputs_[0] = index;
1163 inputs_[1] = length; 1166 inputs_[1] = length;
1164 } 1167 }
1165 1168
1166 LOperand* index() { return inputs_[0]; } 1169 LOperand* index() { return inputs_[0]; }
1167 LOperand* length() { return inputs_[1]; } 1170 LOperand* length() { return inputs_[1]; }
1168 1171
1169 DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check") 1172 DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check")
1170 DECLARE_HYDROGEN_ACCESSOR(BoundsCheck) 1173 DECLARE_HYDROGEN_ACCESSOR(BoundsCheck)
1171 }; 1174 };
1172 1175
1173 1176
1174 class LBitI FINAL : public LTemplateInstruction<1, 2, 0> { 1177 class LBitI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1175 public: 1178 public:
1176 LBitI(LOperand* left, LOperand* right) { 1179 LBitI(LOperand* left, LOperand* right) {
1177 inputs_[0] = left; 1180 inputs_[0] = left;
1178 inputs_[1] = right; 1181 inputs_[1] = right;
1179 } 1182 }
1180 1183
1181 LOperand* left() { return inputs_[0]; } 1184 LOperand* left() { return inputs_[0]; }
1182 LOperand* right() { return inputs_[1]; } 1185 LOperand* right() { return inputs_[1]; }
1183 1186
1184 Token::Value op() const { return hydrogen()->op(); } 1187 Token::Value op() const { return hydrogen()->op(); }
1185 1188
1186 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i") 1189 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i")
1187 DECLARE_HYDROGEN_ACCESSOR(Bitwise) 1190 DECLARE_HYDROGEN_ACCESSOR(Bitwise)
1188 }; 1191 };
1189 1192
1190 1193
1191 class LShiftI FINAL : public LTemplateInstruction<1, 2, 0> { 1194 class LShiftI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1192 public: 1195 public:
1193 LShiftI(Token::Value op, LOperand* left, LOperand* right, bool can_deopt) 1196 LShiftI(Token::Value op, LOperand* left, LOperand* right, bool can_deopt)
1194 : op_(op), can_deopt_(can_deopt) { 1197 : op_(op), can_deopt_(can_deopt) {
1195 inputs_[0] = left; 1198 inputs_[0] = left;
1196 inputs_[1] = right; 1199 inputs_[1] = right;
1197 } 1200 }
1198 1201
1199 Token::Value op() const { return op_; } 1202 Token::Value op() const { return op_; }
1200 LOperand* left() { return inputs_[0]; } 1203 LOperand* left() { return inputs_[0]; }
1201 LOperand* right() { return inputs_[1]; } 1204 LOperand* right() { return inputs_[1]; }
1202 bool can_deopt() const { return can_deopt_; } 1205 bool can_deopt() const { return can_deopt_; }
1203 1206
1204 DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i") 1207 DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i")
1205 1208
1206 private: 1209 private:
1207 Token::Value op_; 1210 Token::Value op_;
1208 bool can_deopt_; 1211 bool can_deopt_;
1209 }; 1212 };
1210 1213
1211 1214
1212 class LSubI FINAL : public LTemplateInstruction<1, 2, 0> { 1215 class LSubI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1213 public: 1216 public:
1214 LSubI(LOperand* left, LOperand* right) { 1217 LSubI(LOperand* left, LOperand* right) {
1215 inputs_[0] = left; 1218 inputs_[0] = left;
1216 inputs_[1] = right; 1219 inputs_[1] = right;
1217 } 1220 }
1218 1221
1219 LOperand* left() { return inputs_[0]; } 1222 LOperand* left() { return inputs_[0]; }
1220 LOperand* right() { return inputs_[1]; } 1223 LOperand* right() { return inputs_[1]; }
1221 1224
1222 DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i") 1225 DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i")
1223 DECLARE_HYDROGEN_ACCESSOR(Sub) 1226 DECLARE_HYDROGEN_ACCESSOR(Sub)
1224 }; 1227 };
1225 1228
1226 1229
1227 class LRSubI FINAL : public LTemplateInstruction<1, 2, 0> { 1230 class LRSubI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1228 public: 1231 public:
1229 LRSubI(LOperand* left, LOperand* right) { 1232 LRSubI(LOperand* left, LOperand* right) {
1230 inputs_[0] = left; 1233 inputs_[0] = left;
1231 inputs_[1] = right; 1234 inputs_[1] = right;
1232 } 1235 }
1233 1236
1234 LOperand* left() { return inputs_[0]; } 1237 LOperand* left() { return inputs_[0]; }
1235 LOperand* right() { return inputs_[1]; } 1238 LOperand* right() { return inputs_[1]; }
1236 1239
1237 DECLARE_CONCRETE_INSTRUCTION(RSubI, "rsub-i") 1240 DECLARE_CONCRETE_INSTRUCTION(RSubI, "rsub-i")
1238 DECLARE_HYDROGEN_ACCESSOR(Sub) 1241 DECLARE_HYDROGEN_ACCESSOR(Sub)
1239 }; 1242 };
1240 1243
1241 1244
1242 class LConstantI FINAL : public LTemplateInstruction<1, 0, 0> { 1245 class LConstantI V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1243 public: 1246 public:
1244 DECLARE_CONCRETE_INSTRUCTION(ConstantI, "constant-i") 1247 DECLARE_CONCRETE_INSTRUCTION(ConstantI, "constant-i")
1245 DECLARE_HYDROGEN_ACCESSOR(Constant) 1248 DECLARE_HYDROGEN_ACCESSOR(Constant)
1246 1249
1247 int32_t value() const { return hydrogen()->Integer32Value(); } 1250 int32_t value() const { return hydrogen()->Integer32Value(); }
1248 }; 1251 };
1249 1252
1250 1253
1251 class LConstantS FINAL : public LTemplateInstruction<1, 0, 0> { 1254 class LConstantS V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1252 public: 1255 public:
1253 DECLARE_CONCRETE_INSTRUCTION(ConstantS, "constant-s") 1256 DECLARE_CONCRETE_INSTRUCTION(ConstantS, "constant-s")
1254 DECLARE_HYDROGEN_ACCESSOR(Constant) 1257 DECLARE_HYDROGEN_ACCESSOR(Constant)
1255 1258
1256 Smi* value() const { return Smi::FromInt(hydrogen()->Integer32Value()); } 1259 Smi* value() const { return Smi::FromInt(hydrogen()->Integer32Value()); }
1257 }; 1260 };
1258 1261
1259 1262
1260 class LConstantD FINAL : public LTemplateInstruction<1, 0, 0> { 1263 class LConstantD V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1261 public: 1264 public:
1262 DECLARE_CONCRETE_INSTRUCTION(ConstantD, "constant-d") 1265 DECLARE_CONCRETE_INSTRUCTION(ConstantD, "constant-d")
1263 DECLARE_HYDROGEN_ACCESSOR(Constant) 1266 DECLARE_HYDROGEN_ACCESSOR(Constant)
1264 1267
1265 double value() const { return hydrogen()->DoubleValue(); } 1268 double value() const { return hydrogen()->DoubleValue(); }
1266 }; 1269 };
1267 1270
1268 1271
1269 class LConstantE FINAL : public LTemplateInstruction<1, 0, 0> { 1272 class LConstantE V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1270 public: 1273 public:
1271 DECLARE_CONCRETE_INSTRUCTION(ConstantE, "constant-e") 1274 DECLARE_CONCRETE_INSTRUCTION(ConstantE, "constant-e")
1272 DECLARE_HYDROGEN_ACCESSOR(Constant) 1275 DECLARE_HYDROGEN_ACCESSOR(Constant)
1273 1276
1274 ExternalReference value() const { 1277 ExternalReference value() const {
1275 return hydrogen()->ExternalReferenceValue(); 1278 return hydrogen()->ExternalReferenceValue();
1276 } 1279 }
1277 }; 1280 };
1278 1281
1279 1282
1280 class LConstantT FINAL : public LTemplateInstruction<1, 0, 0> { 1283 class LConstantT V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1281 public: 1284 public:
1282 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t") 1285 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t")
1283 DECLARE_HYDROGEN_ACCESSOR(Constant) 1286 DECLARE_HYDROGEN_ACCESSOR(Constant)
1284 1287
1285 Handle<Object> value() const { return hydrogen()->handle(); } 1288 Handle<Object> value() const { return hydrogen()->handle(); }
1286 }; 1289 };
1287 1290
1288 1291
1289 class LBranch FINAL : public LControlInstruction<1, 0> { 1292 class LBranch V8_FINAL : public LControlInstruction<1, 0> {
1290 public: 1293 public:
1291 explicit LBranch(LOperand* value) { 1294 explicit LBranch(LOperand* value) {
1292 inputs_[0] = value; 1295 inputs_[0] = value;
1293 } 1296 }
1294 1297
1295 LOperand* value() { return inputs_[0]; } 1298 LOperand* value() { return inputs_[0]; }
1296 1299
1297 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch") 1300 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
1298 DECLARE_HYDROGEN_ACCESSOR(Branch) 1301 DECLARE_HYDROGEN_ACCESSOR(Branch)
1299 1302
1300 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1303 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1301 }; 1304 };
1302 1305
1303 1306
1304 class LCmpMapAndBranch FINAL : public LControlInstruction<1, 1> { 1307 class LCmpMapAndBranch V8_FINAL : public LControlInstruction<1, 1> {
1305 public: 1308 public:
1306 LCmpMapAndBranch(LOperand* value, LOperand* temp) { 1309 LCmpMapAndBranch(LOperand* value, LOperand* temp) {
1307 inputs_[0] = value; 1310 inputs_[0] = value;
1308 temps_[0] = temp; 1311 temps_[0] = temp;
1309 } 1312 }
1310 1313
1311 LOperand* value() { return inputs_[0]; } 1314 LOperand* value() { return inputs_[0]; }
1312 LOperand* temp() { return temps_[0]; } 1315 LOperand* temp() { return temps_[0]; }
1313 1316
1314 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch") 1317 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
1315 DECLARE_HYDROGEN_ACCESSOR(CompareMap) 1318 DECLARE_HYDROGEN_ACCESSOR(CompareMap)
1316 1319
1317 Handle<Map> map() const { return hydrogen()->map(); } 1320 Handle<Map> map() const { return hydrogen()->map(); }
1318 }; 1321 };
1319 1322
1320 1323
1321 class LMapEnumLength FINAL : public LTemplateInstruction<1, 1, 0> { 1324 class LMapEnumLength V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1322 public: 1325 public:
1323 explicit LMapEnumLength(LOperand* value) { 1326 explicit LMapEnumLength(LOperand* value) {
1324 inputs_[0] = value; 1327 inputs_[0] = value;
1325 } 1328 }
1326 1329
1327 LOperand* value() { return inputs_[0]; } 1330 LOperand* value() { return inputs_[0]; }
1328 1331
1329 DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length") 1332 DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length")
1330 }; 1333 };
1331 1334
1332 1335
1333 class LElementsKind FINAL : public LTemplateInstruction<1, 1, 0> { 1336 class LElementsKind V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1334 public: 1337 public:
1335 explicit LElementsKind(LOperand* value) { 1338 explicit LElementsKind(LOperand* value) {
1336 inputs_[0] = value; 1339 inputs_[0] = value;
1337 } 1340 }
1338 1341
1339 LOperand* value() { return inputs_[0]; } 1342 LOperand* value() { return inputs_[0]; }
1340 1343
1341 DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind") 1344 DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
1342 DECLARE_HYDROGEN_ACCESSOR(ElementsKind) 1345 DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
1343 }; 1346 };
1344 1347
1345 1348
1346 class LValueOf FINAL : public LTemplateInstruction<1, 1, 1> { 1349 class LValueOf V8_FINAL : public LTemplateInstruction<1, 1, 1> {
1347 public: 1350 public:
1348 LValueOf(LOperand* value, LOperand* temp) { 1351 LValueOf(LOperand* value, LOperand* temp) {
1349 inputs_[0] = value; 1352 inputs_[0] = value;
1350 temps_[0] = temp; 1353 temps_[0] = temp;
1351 } 1354 }
1352 1355
1353 LOperand* value() { return inputs_[0]; } 1356 LOperand* value() { return inputs_[0]; }
1354 LOperand* temp() { return temps_[0]; } 1357 LOperand* temp() { return temps_[0]; }
1355 1358
1356 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of") 1359 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1357 DECLARE_HYDROGEN_ACCESSOR(ValueOf) 1360 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1358 }; 1361 };
1359 1362
1360 1363
1361 class LDateField FINAL : public LTemplateInstruction<1, 1, 1> { 1364 class LDateField V8_FINAL : public LTemplateInstruction<1, 1, 1> {
1362 public: 1365 public:
1363 LDateField(LOperand* date, LOperand* temp, Smi* index) : index_(index) { 1366 LDateField(LOperand* date, LOperand* temp, Smi* index) : index_(index) {
1364 inputs_[0] = date; 1367 inputs_[0] = date;
1365 temps_[0] = temp; 1368 temps_[0] = temp;
1366 } 1369 }
1367 1370
1368 LOperand* date() { return inputs_[0]; } 1371 LOperand* date() { return inputs_[0]; }
1369 LOperand* temp() { return temps_[0]; } 1372 LOperand* temp() { return temps_[0]; }
1370 Smi* index() const { return index_; } 1373 Smi* index() const { return index_; }
1371 1374
1372 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "date-field") 1375 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "date-field")
1373 DECLARE_HYDROGEN_ACCESSOR(ValueOf) 1376 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1374 1377
1375 private: 1378 private:
1376 Smi* index_; 1379 Smi* index_;
1377 }; 1380 };
1378 1381
1379 1382
1380 class LSeqStringSetChar FINAL : public LTemplateInstruction<1, 3, 0> { 1383 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1381 public: 1384 public:
1382 LSeqStringSetChar(String::Encoding encoding, 1385 LSeqStringSetChar(String::Encoding encoding,
1383 LOperand* string, 1386 LOperand* string,
1384 LOperand* index, 1387 LOperand* index,
1385 LOperand* value) : encoding_(encoding) { 1388 LOperand* value) : encoding_(encoding) {
1386 inputs_[0] = string; 1389 inputs_[0] = string;
1387 inputs_[1] = index; 1390 inputs_[1] = index;
1388 inputs_[2] = value; 1391 inputs_[2] = value;
1389 } 1392 }
1390 1393
1391 String::Encoding encoding() { return encoding_; } 1394 String::Encoding encoding() { return encoding_; }
1392 LOperand* string() { return inputs_[0]; } 1395 LOperand* string() { return inputs_[0]; }
1393 LOperand* index() { return inputs_[1]; } 1396 LOperand* index() { return inputs_[1]; }
1394 LOperand* value() { return inputs_[2]; } 1397 LOperand* value() { return inputs_[2]; }
1395 1398
1396 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") 1399 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
1397 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) 1400 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
1398 1401
1399 private: 1402 private:
1400 String::Encoding encoding_; 1403 String::Encoding encoding_;
1401 }; 1404 };
1402 1405
1403 1406
1404 class LThrow FINAL : public LTemplateInstruction<0, 1, 0> { 1407 class LThrow V8_FINAL : public LTemplateInstruction<0, 1, 0> {
1405 public: 1408 public:
1406 explicit LThrow(LOperand* value) { 1409 explicit LThrow(LOperand* value) {
1407 inputs_[0] = value; 1410 inputs_[0] = value;
1408 } 1411 }
1409 1412
1410 LOperand* value() { return inputs_[0]; } 1413 LOperand* value() { return inputs_[0]; }
1411 1414
1412 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw") 1415 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
1413 }; 1416 };
1414 1417
1415 1418
1416 class LAddI FINAL : public LTemplateInstruction<1, 2, 0> { 1419 class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1417 public: 1420 public:
1418 LAddI(LOperand* left, LOperand* right) { 1421 LAddI(LOperand* left, LOperand* right) {
1419 inputs_[0] = left; 1422 inputs_[0] = left;
1420 inputs_[1] = right; 1423 inputs_[1] = right;
1421 } 1424 }
1422 1425
1423 LOperand* left() { return inputs_[0]; } 1426 LOperand* left() { return inputs_[0]; }
1424 LOperand* right() { return inputs_[1]; } 1427 LOperand* right() { return inputs_[1]; }
1425 1428
1426 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") 1429 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i")
1427 DECLARE_HYDROGEN_ACCESSOR(Add) 1430 DECLARE_HYDROGEN_ACCESSOR(Add)
1428 }; 1431 };
1429 1432
1430 1433
1431 class LMathMinMax FINAL : public LTemplateInstruction<1, 2, 0> { 1434 class LMathMinMax V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1432 public: 1435 public:
1433 LMathMinMax(LOperand* left, LOperand* right) { 1436 LMathMinMax(LOperand* left, LOperand* right) {
1434 inputs_[0] = left; 1437 inputs_[0] = left;
1435 inputs_[1] = right; 1438 inputs_[1] = right;
1436 } 1439 }
1437 1440
1438 LOperand* left() { return inputs_[0]; } 1441 LOperand* left() { return inputs_[0]; }
1439 LOperand* right() { return inputs_[1]; } 1442 LOperand* right() { return inputs_[1]; }
1440 1443
1441 DECLARE_CONCRETE_INSTRUCTION(MathMinMax, "math-min-max") 1444 DECLARE_CONCRETE_INSTRUCTION(MathMinMax, "math-min-max")
1442 DECLARE_HYDROGEN_ACCESSOR(MathMinMax) 1445 DECLARE_HYDROGEN_ACCESSOR(MathMinMax)
1443 }; 1446 };
1444 1447
1445 1448
1446 class LPower FINAL : public LTemplateInstruction<1, 2, 0> { 1449 class LPower V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1447 public: 1450 public:
1448 LPower(LOperand* left, LOperand* right) { 1451 LPower(LOperand* left, LOperand* right) {
1449 inputs_[0] = left; 1452 inputs_[0] = left;
1450 inputs_[1] = right; 1453 inputs_[1] = right;
1451 } 1454 }
1452 1455
1453 LOperand* left() { return inputs_[0]; } 1456 LOperand* left() { return inputs_[0]; }
1454 LOperand* right() { return inputs_[1]; } 1457 LOperand* right() { return inputs_[1]; }
1455 1458
1456 DECLARE_CONCRETE_INSTRUCTION(Power, "power") 1459 DECLARE_CONCRETE_INSTRUCTION(Power, "power")
1457 DECLARE_HYDROGEN_ACCESSOR(Power) 1460 DECLARE_HYDROGEN_ACCESSOR(Power)
1458 }; 1461 };
1459 1462
1460 1463
1461 class LRandom FINAL : public LTemplateInstruction<1, 1, 0> { 1464 class LRandom V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1462 public: 1465 public:
1463 explicit LRandom(LOperand* global_object) { 1466 explicit LRandom(LOperand* global_object) {
1464 inputs_[0] = global_object; 1467 inputs_[0] = global_object;
1465 } 1468 }
1466 1469
1467 LOperand* global_object() { return inputs_[0]; } 1470 LOperand* global_object() { return inputs_[0]; }
1468 1471
1469 DECLARE_CONCRETE_INSTRUCTION(Random, "random") 1472 DECLARE_CONCRETE_INSTRUCTION(Random, "random")
1470 DECLARE_HYDROGEN_ACCESSOR(Random) 1473 DECLARE_HYDROGEN_ACCESSOR(Random)
1471 }; 1474 };
1472 1475
1473 1476
1474 class LArithmeticD FINAL : public LTemplateInstruction<1, 2, 0> { 1477 class LArithmeticD V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1475 public: 1478 public:
1476 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) 1479 LArithmeticD(Token::Value op, LOperand* left, LOperand* right)
1477 : op_(op) { 1480 : op_(op) {
1478 inputs_[0] = left; 1481 inputs_[0] = left;
1479 inputs_[1] = right; 1482 inputs_[1] = right;
1480 } 1483 }
1481 1484
1482 Token::Value op() const { return op_; } 1485 Token::Value op() const { return op_; }
1483 LOperand* left() { return inputs_[0]; } 1486 LOperand* left() { return inputs_[0]; }
1484 LOperand* right() { return inputs_[1]; } 1487 LOperand* right() { return inputs_[1]; }
1485 1488
1486 virtual Opcode opcode() const OVERRIDE { return LInstruction::kArithmeticD; } 1489 virtual Opcode opcode() const V8_OVERRIDE {
1487 virtual void CompileToNative(LCodeGen* generator) OVERRIDE; 1490 return LInstruction::kArithmeticD;
1488 virtual const char* Mnemonic() const OVERRIDE; 1491 }
1492 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE;
1493 virtual const char* Mnemonic() const V8_OVERRIDE;
1489 1494
1490 private: 1495 private:
1491 Token::Value op_; 1496 Token::Value op_;
1492 }; 1497 };
1493 1498
1494 1499
1495 class LArithmeticT FINAL : public LTemplateInstruction<1, 2, 0> { 1500 class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1496 public: 1501 public:
1497 LArithmeticT(Token::Value op, LOperand* left, LOperand* right) 1502 LArithmeticT(Token::Value op, LOperand* left, LOperand* right)
1498 : op_(op) { 1503 : op_(op) {
1499 inputs_[0] = left; 1504 inputs_[0] = left;
1500 inputs_[1] = right; 1505 inputs_[1] = right;
1501 } 1506 }
1502 1507
1503 LOperand* left() { return inputs_[0]; } 1508 LOperand* left() { return inputs_[0]; }
1504 LOperand* right() { return inputs_[1]; } 1509 LOperand* right() { return inputs_[1]; }
1505 Token::Value op() const { return op_; } 1510 Token::Value op() const { return op_; }
1506 1511
1507 virtual Opcode opcode() const OVERRIDE { return LInstruction::kArithmeticT; } 1512 virtual Opcode opcode() const V8_OVERRIDE {
1508 virtual void CompileToNative(LCodeGen* generator) OVERRIDE; 1513 return LInstruction::kArithmeticT;
1509 virtual const char* Mnemonic() const OVERRIDE; 1514 }
1515 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE;
1516 virtual const char* Mnemonic() const V8_OVERRIDE;
1510 1517
1511 private: 1518 private:
1512 Token::Value op_; 1519 Token::Value op_;
1513 }; 1520 };
1514 1521
1515 1522
1516 class LReturn FINAL : public LTemplateInstruction<0, 2, 0> { 1523 class LReturn V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1517 public: 1524 public:
1518 explicit LReturn(LOperand* value, LOperand* parameter_count) { 1525 explicit LReturn(LOperand* value, LOperand* parameter_count) {
1519 inputs_[0] = value; 1526 inputs_[0] = value;
1520 inputs_[1] = parameter_count; 1527 inputs_[1] = parameter_count;
1521 } 1528 }
1522 1529
1523 LOperand* value() { return inputs_[0]; } 1530 LOperand* value() { return inputs_[0]; }
1524 1531
1525 bool has_constant_parameter_count() { 1532 bool has_constant_parameter_count() {
1526 return parameter_count()->IsConstantOperand(); 1533 return parameter_count()->IsConstantOperand();
1527 } 1534 }
1528 LConstantOperand* constant_parameter_count() { 1535 LConstantOperand* constant_parameter_count() {
1529 ASSERT(has_constant_parameter_count()); 1536 ASSERT(has_constant_parameter_count());
1530 return LConstantOperand::cast(parameter_count()); 1537 return LConstantOperand::cast(parameter_count());
1531 } 1538 }
1532 LOperand* parameter_count() { return inputs_[1]; } 1539 LOperand* parameter_count() { return inputs_[1]; }
1533 1540
1534 DECLARE_CONCRETE_INSTRUCTION(Return, "return") 1541 DECLARE_CONCRETE_INSTRUCTION(Return, "return")
1535 }; 1542 };
1536 1543
1537 1544
1538 class LLoadNamedField FINAL : public LTemplateInstruction<1, 1, 0> { 1545 class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1539 public: 1546 public:
1540 explicit LLoadNamedField(LOperand* object) { 1547 explicit LLoadNamedField(LOperand* object) {
1541 inputs_[0] = object; 1548 inputs_[0] = object;
1542 } 1549 }
1543 1550
1544 LOperand* object() { return inputs_[0]; } 1551 LOperand* object() { return inputs_[0]; }
1545 1552
1546 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") 1553 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
1547 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) 1554 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
1548 }; 1555 };
1549 1556
1550 1557
1551 class LLoadNamedGeneric FINAL : public LTemplateInstruction<1, 1, 0> { 1558 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1552 public: 1559 public:
1553 explicit LLoadNamedGeneric(LOperand* object) { 1560 explicit LLoadNamedGeneric(LOperand* object) {
1554 inputs_[0] = object; 1561 inputs_[0] = object;
1555 } 1562 }
1556 1563
1557 LOperand* object() { return inputs_[0]; } 1564 LOperand* object() { return inputs_[0]; }
1558 1565
1559 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") 1566 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
1560 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) 1567 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
1561 1568
1562 Handle<Object> name() const { return hydrogen()->name(); } 1569 Handle<Object> name() const { return hydrogen()->name(); }
1563 }; 1570 };
1564 1571
1565 1572
1566 class LLoadFunctionPrototype FINAL : public LTemplateInstruction<1, 1, 0> { 1573 class LLoadFunctionPrototype V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1567 public: 1574 public:
1568 explicit LLoadFunctionPrototype(LOperand* function) { 1575 explicit LLoadFunctionPrototype(LOperand* function) {
1569 inputs_[0] = function; 1576 inputs_[0] = function;
1570 } 1577 }
1571 1578
1572 LOperand* function() { return inputs_[0]; } 1579 LOperand* function() { return inputs_[0]; }
1573 1580
1574 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype") 1581 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
1575 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype) 1582 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
1576 }; 1583 };
1577 1584
1578 1585
1579 class LLoadExternalArrayPointer FINAL : public LTemplateInstruction<1, 1, 0> { 1586 class LLoadExternalArrayPointer V8_FINAL
1587 : public LTemplateInstruction<1, 1, 0> {
1580 public: 1588 public:
1581 explicit LLoadExternalArrayPointer(LOperand* object) { 1589 explicit LLoadExternalArrayPointer(LOperand* object) {
1582 inputs_[0] = object; 1590 inputs_[0] = object;
1583 } 1591 }
1584 1592
1585 LOperand* object() { return inputs_[0]; } 1593 LOperand* object() { return inputs_[0]; }
1586 1594
1587 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer, 1595 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
1588 "load-external-array-pointer") 1596 "load-external-array-pointer")
1589 }; 1597 };
1590 1598
1591 1599
1592 class LLoadKeyed FINAL : public LTemplateInstruction<1, 2, 0> { 1600 class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1593 public: 1601 public:
1594 LLoadKeyed(LOperand* elements, LOperand* key) { 1602 LLoadKeyed(LOperand* elements, LOperand* key) {
1595 inputs_[0] = elements; 1603 inputs_[0] = elements;
1596 inputs_[1] = key; 1604 inputs_[1] = key;
1597 } 1605 }
1598 1606
1599 LOperand* elements() { return inputs_[0]; } 1607 LOperand* elements() { return inputs_[0]; }
1600 LOperand* key() { return inputs_[1]; } 1608 LOperand* key() { return inputs_[1]; }
1601 ElementsKind elements_kind() const { 1609 ElementsKind elements_kind() const {
1602 return hydrogen()->elements_kind(); 1610 return hydrogen()->elements_kind();
1603 } 1611 }
1604 bool is_external() const { 1612 bool is_external() const {
1605 return hydrogen()->is_external(); 1613 return hydrogen()->is_external();
1606 } 1614 }
1607 1615
1608 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") 1616 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1609 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) 1617 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1610 1618
1611 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1619 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1612 uint32_t additional_index() const { return hydrogen()->index_offset(); } 1620 uint32_t additional_index() const { return hydrogen()->index_offset(); }
1613 }; 1621 };
1614 1622
1615 1623
1616 class LLoadKeyedGeneric FINAL : public LTemplateInstruction<1, 2, 0> { 1624 class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1617 public: 1625 public:
1618 LLoadKeyedGeneric(LOperand* object, LOperand* key) { 1626 LLoadKeyedGeneric(LOperand* object, LOperand* key) {
1619 inputs_[0] = object; 1627 inputs_[0] = object;
1620 inputs_[1] = key; 1628 inputs_[1] = key;
1621 } 1629 }
1622 1630
1623 LOperand* object() { return inputs_[0]; } 1631 LOperand* object() { return inputs_[0]; }
1624 LOperand* key() { return inputs_[1]; } 1632 LOperand* key() { return inputs_[1]; }
1625 1633
1626 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") 1634 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
1627 }; 1635 };
1628 1636
1629 1637
1630 class LLoadGlobalCell FINAL : public LTemplateInstruction<1, 0, 0> { 1638 class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1631 public: 1639 public:
1632 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") 1640 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell")
1633 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) 1641 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell)
1634 }; 1642 };
1635 1643
1636 1644
1637 class LLoadGlobalGeneric FINAL : public LTemplateInstruction<1, 1, 0> { 1645 class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1638 public: 1646 public:
1639 explicit LLoadGlobalGeneric(LOperand* global_object) { 1647 explicit LLoadGlobalGeneric(LOperand* global_object) {
1640 inputs_[0] = global_object; 1648 inputs_[0] = global_object;
1641 } 1649 }
1642 1650
1643 LOperand* global_object() { return inputs_[0]; } 1651 LOperand* global_object() { return inputs_[0]; }
1644 1652
1645 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic") 1653 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
1646 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric) 1654 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
1647 1655
1648 Handle<Object> name() const { return hydrogen()->name(); } 1656 Handle<Object> name() const { return hydrogen()->name(); }
1649 bool for_typeof() const { return hydrogen()->for_typeof(); } 1657 bool for_typeof() const { return hydrogen()->for_typeof(); }
1650 }; 1658 };
1651 1659
1652 1660
1653 class LStoreGlobalCell FINAL : public LTemplateInstruction<0, 1, 1> { 1661 class LStoreGlobalCell V8_FINAL : public LTemplateInstruction<0, 1, 1> {
1654 public: 1662 public:
1655 LStoreGlobalCell(LOperand* value, LOperand* temp) { 1663 LStoreGlobalCell(LOperand* value, LOperand* temp) {
1656 inputs_[0] = value; 1664 inputs_[0] = value;
1657 temps_[0] = temp; 1665 temps_[0] = temp;
1658 } 1666 }
1659 1667
1660 LOperand* value() { return inputs_[0]; } 1668 LOperand* value() { return inputs_[0]; }
1661 LOperand* temp() { return temps_[0]; } 1669 LOperand* temp() { return temps_[0]; }
1662 1670
1663 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell") 1671 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell")
1664 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell) 1672 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell)
1665 }; 1673 };
1666 1674
1667 1675
1668 class LStoreGlobalGeneric FINAL : public LTemplateInstruction<0, 2, 0> { 1676 class LStoreGlobalGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1669 public: 1677 public:
1670 explicit LStoreGlobalGeneric(LOperand* global_object, 1678 explicit LStoreGlobalGeneric(LOperand* global_object,
1671 LOperand* value) { 1679 LOperand* value) {
1672 inputs_[0] = global_object; 1680 inputs_[0] = global_object;
1673 inputs_[1] = value; 1681 inputs_[1] = value;
1674 } 1682 }
1675 1683
1676 LOperand* global_object() { return inputs_[0]; } 1684 LOperand* global_object() { return inputs_[0]; }
1677 LOperand* value() { return inputs_[1]; } 1685 LOperand* value() { return inputs_[1]; }
1678 1686
1679 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic") 1687 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
1680 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric) 1688 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
1681 1689
1682 Handle<Object> name() const { return hydrogen()->name(); } 1690 Handle<Object> name() const { return hydrogen()->name(); }
1683 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 1691 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1684 }; 1692 };
1685 1693
1686 1694
1687 class LLoadContextSlot FINAL : public LTemplateInstruction<1, 1, 0> { 1695 class LLoadContextSlot V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1688 public: 1696 public:
1689 explicit LLoadContextSlot(LOperand* context) { 1697 explicit LLoadContextSlot(LOperand* context) {
1690 inputs_[0] = context; 1698 inputs_[0] = context;
1691 } 1699 }
1692 1700
1693 LOperand* context() { return inputs_[0]; } 1701 LOperand* context() { return inputs_[0]; }
1694 1702
1695 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot") 1703 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
1696 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot) 1704 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
1697 1705
1698 int slot_index() { return hydrogen()->slot_index(); } 1706 int slot_index() { return hydrogen()->slot_index(); }
1699 1707
1700 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1708 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1701 }; 1709 };
1702 1710
1703 1711
1704 class LStoreContextSlot FINAL : public LTemplateInstruction<0, 2, 0> { 1712 class LStoreContextSlot V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1705 public: 1713 public:
1706 LStoreContextSlot(LOperand* context, LOperand* value) { 1714 LStoreContextSlot(LOperand* context, LOperand* value) {
1707 inputs_[0] = context; 1715 inputs_[0] = context;
1708 inputs_[1] = value; 1716 inputs_[1] = value;
1709 } 1717 }
1710 1718
1711 LOperand* context() { return inputs_[0]; } 1719 LOperand* context() { return inputs_[0]; }
1712 LOperand* value() { return inputs_[1]; } 1720 LOperand* value() { return inputs_[1]; }
1713 1721
1714 DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot") 1722 DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot")
1715 DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot) 1723 DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot)
1716 1724
1717 int slot_index() { return hydrogen()->slot_index(); } 1725 int slot_index() { return hydrogen()->slot_index(); }
1718 1726
1719 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1727 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1720 }; 1728 };
1721 1729
1722 1730
1723 class LPushArgument FINAL : public LTemplateInstruction<0, 1, 0> { 1731 class LPushArgument V8_FINAL : public LTemplateInstruction<0, 1, 0> {
1724 public: 1732 public:
1725 explicit LPushArgument(LOperand* value) { 1733 explicit LPushArgument(LOperand* value) {
1726 inputs_[0] = value; 1734 inputs_[0] = value;
1727 } 1735 }
1728 1736
1729 LOperand* value() { return inputs_[0]; } 1737 LOperand* value() { return inputs_[0]; }
1730 1738
1731 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument") 1739 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument")
1732 }; 1740 };
1733 1741
1734 1742
1735 class LDrop FINAL : public LTemplateInstruction<0, 0, 0> { 1743 class LDrop V8_FINAL : public LTemplateInstruction<0, 0, 0> {
1736 public: 1744 public:
1737 explicit LDrop(int count) : count_(count) { } 1745 explicit LDrop(int count) : count_(count) { }
1738 1746
1739 int count() const { return count_; } 1747 int count() const { return count_; }
1740 1748
1741 DECLARE_CONCRETE_INSTRUCTION(Drop, "drop") 1749 DECLARE_CONCRETE_INSTRUCTION(Drop, "drop")
1742 1750
1743 private: 1751 private:
1744 int count_; 1752 int count_;
1745 }; 1753 };
1746 1754
1747 1755
1748 class LInnerAllocatedObject FINAL : public LTemplateInstruction<1, 1, 0> { 1756 class LInnerAllocatedObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1749 public: 1757 public:
1750 explicit LInnerAllocatedObject(LOperand* base_object) { 1758 explicit LInnerAllocatedObject(LOperand* base_object) {
1751 inputs_[0] = base_object; 1759 inputs_[0] = base_object;
1752 } 1760 }
1753 1761
1754 LOperand* base_object() { return inputs_[0]; } 1762 LOperand* base_object() { return inputs_[0]; }
1755 int offset() { return hydrogen()->offset(); } 1763 int offset() { return hydrogen()->offset(); }
1756 1764
1757 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1765 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1758 1766
1759 DECLARE_CONCRETE_INSTRUCTION(InnerAllocatedObject, "sub-allocated-object") 1767 DECLARE_CONCRETE_INSTRUCTION(InnerAllocatedObject, "sub-allocated-object")
1760 DECLARE_HYDROGEN_ACCESSOR(InnerAllocatedObject) 1768 DECLARE_HYDROGEN_ACCESSOR(InnerAllocatedObject)
1761 }; 1769 };
1762 1770
1763 1771
1764 class LThisFunction FINAL : public LTemplateInstruction<1, 0, 0> { 1772 class LThisFunction V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1765 public: 1773 public:
1766 DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function") 1774 DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
1767 DECLARE_HYDROGEN_ACCESSOR(ThisFunction) 1775 DECLARE_HYDROGEN_ACCESSOR(ThisFunction)
1768 }; 1776 };
1769 1777
1770 1778
1771 class LContext FINAL : public LTemplateInstruction<1, 0, 0> { 1779 class LContext V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1772 public: 1780 public:
1773 DECLARE_CONCRETE_INSTRUCTION(Context, "context") 1781 DECLARE_CONCRETE_INSTRUCTION(Context, "context")
1774 DECLARE_HYDROGEN_ACCESSOR(Context) 1782 DECLARE_HYDROGEN_ACCESSOR(Context)
1775 }; 1783 };
1776 1784
1777 1785
1778 class LOuterContext FINAL : public LTemplateInstruction<1, 1, 0> { 1786 class LOuterContext V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1779 public: 1787 public:
1780 explicit LOuterContext(LOperand* context) { 1788 explicit LOuterContext(LOperand* context) {
1781 inputs_[0] = context; 1789 inputs_[0] = context;
1782 } 1790 }
1783 1791
1784 LOperand* context() { return inputs_[0]; } 1792 LOperand* context() { return inputs_[0]; }
1785 1793
1786 DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context") 1794 DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
1787 }; 1795 };
1788 1796
1789 1797
1790 class LDeclareGlobals FINAL : public LTemplateInstruction<0, 0, 0> { 1798 class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 0, 0> {
1791 public: 1799 public:
1792 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals") 1800 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals")
1793 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals) 1801 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals)
1794 }; 1802 };
1795 1803
1796 1804
1797 class LGlobalObject FINAL : public LTemplateInstruction<1, 1, 0> { 1805 class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1798 public: 1806 public:
1799 explicit LGlobalObject(LOperand* context) { 1807 explicit LGlobalObject(LOperand* context) {
1800 inputs_[0] = context; 1808 inputs_[0] = context;
1801 } 1809 }
1802 1810
1803 DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object") 1811 DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
1804 1812
1805 LOperand* context() { return inputs_[0]; } 1813 LOperand* context() { return inputs_[0]; }
1806 }; 1814 };
1807 1815
1808 1816
1809 class LGlobalReceiver FINAL : public LTemplateInstruction<1, 1, 0> { 1817 class LGlobalReceiver V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1810 public: 1818 public:
1811 explicit LGlobalReceiver(LOperand* global_object) { 1819 explicit LGlobalReceiver(LOperand* global_object) {
1812 inputs_[0] = global_object; 1820 inputs_[0] = global_object;
1813 } 1821 }
1814 1822
1815 LOperand* global_object() { return inputs_[0]; } 1823 LOperand* global_object() { return inputs_[0]; }
1816 1824
1817 DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver") 1825 DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
1818 }; 1826 };
1819 1827
1820 1828
1821 class LCallConstantFunction FINAL : public LTemplateInstruction<1, 0, 0> { 1829 class LCallConstantFunction V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1822 public: 1830 public:
1823 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") 1831 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function")
1824 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) 1832 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction)
1825 1833
1826 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1834 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1827 1835
1828 Handle<JSFunction> function() { return hydrogen()->function(); } 1836 Handle<JSFunction> function() { return hydrogen()->function(); }
1829 int arity() const { return hydrogen()->argument_count() - 1; } 1837 int arity() const { return hydrogen()->argument_count() - 1; }
1830 }; 1838 };
1831 1839
1832 1840
1833 class LInvokeFunction FINAL : public LTemplateInstruction<1, 1, 0> { 1841 class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1834 public: 1842 public:
1835 explicit LInvokeFunction(LOperand* function) { 1843 explicit LInvokeFunction(LOperand* function) {
1836 inputs_[0] = function; 1844 inputs_[0] = function;
1837 } 1845 }
1838 1846
1839 LOperand* function() { return inputs_[0]; } 1847 LOperand* function() { return inputs_[0]; }
1840 1848
1841 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function") 1849 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
1842 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction) 1850 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
1843 1851
1844 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1852 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1845 1853
1846 int arity() const { return hydrogen()->argument_count() - 1; } 1854 int arity() const { return hydrogen()->argument_count() - 1; }
1847 }; 1855 };
1848 1856
1849 1857
1850 class LCallKeyed FINAL : public LTemplateInstruction<1, 1, 0> { 1858 class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1851 public: 1859 public:
1852 explicit LCallKeyed(LOperand* key) { 1860 explicit LCallKeyed(LOperand* key) {
1853 inputs_[0] = key; 1861 inputs_[0] = key;
1854 } 1862 }
1855 1863
1856 LOperand* key() { return inputs_[0]; } 1864 LOperand* key() { return inputs_[0]; }
1857 1865
1858 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") 1866 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
1859 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) 1867 DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
1860 1868
1861 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1869 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1862 1870
1863 int arity() const { return hydrogen()->argument_count() - 1; } 1871 int arity() const { return hydrogen()->argument_count() - 1; }
1864 }; 1872 };
1865 1873
1866 1874
1867 1875
1868 class LCallNamed FINAL : public LTemplateInstruction<1, 0, 0> { 1876 class LCallNamed V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1869 public: 1877 public:
1870 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named") 1878 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named")
1871 DECLARE_HYDROGEN_ACCESSOR(CallNamed) 1879 DECLARE_HYDROGEN_ACCESSOR(CallNamed)
1872 1880
1873 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1881 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1874 1882
1875 Handle<String> name() const { return hydrogen()->name(); } 1883 Handle<String> name() const { return hydrogen()->name(); }
1876 int arity() const { return hydrogen()->argument_count() - 1; } 1884 int arity() const { return hydrogen()->argument_count() - 1; }
1877 }; 1885 };
1878 1886
1879 1887
1880 class LCallFunction FINAL : public LTemplateInstruction<1, 1, 0> { 1888 class LCallFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1881 public: 1889 public:
1882 explicit LCallFunction(LOperand* function) { 1890 explicit LCallFunction(LOperand* function) {
1883 inputs_[0] = function; 1891 inputs_[0] = function;
1884 } 1892 }
1885 1893
1886 LOperand* function() { return inputs_[0]; } 1894 LOperand* function() { return inputs_[0]; }
1887 1895
1888 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function") 1896 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
1889 DECLARE_HYDROGEN_ACCESSOR(CallFunction) 1897 DECLARE_HYDROGEN_ACCESSOR(CallFunction)
1890 1898
1891 int arity() const { return hydrogen()->argument_count() - 1; } 1899 int arity() const { return hydrogen()->argument_count() - 1; }
1892 }; 1900 };
1893 1901
1894 1902
1895 class LCallGlobal FINAL : public LTemplateInstruction<1, 0, 0> { 1903 class LCallGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1896 public: 1904 public:
1897 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global") 1905 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global")
1898 DECLARE_HYDROGEN_ACCESSOR(CallGlobal) 1906 DECLARE_HYDROGEN_ACCESSOR(CallGlobal)
1899 1907
1900 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1908 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1901 1909
1902 Handle<String> name() const {return hydrogen()->name(); } 1910 Handle<String> name() const {return hydrogen()->name(); }
1903 int arity() const { return hydrogen()->argument_count() - 1; } 1911 int arity() const { return hydrogen()->argument_count() - 1; }
1904 }; 1912 };
1905 1913
1906 1914
1907 class LCallKnownGlobal FINAL : public LTemplateInstruction<1, 0, 0> { 1915 class LCallKnownGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1908 public: 1916 public:
1909 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global") 1917 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global")
1910 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal) 1918 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal)
1911 1919
1912 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1920 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1913 1921
1914 int arity() const { return hydrogen()->argument_count() - 1; } 1922 int arity() const { return hydrogen()->argument_count() - 1; }
1915 }; 1923 };
1916 1924
1917 1925
1918 class LCallNew FINAL : public LTemplateInstruction<1, 1, 0> { 1926 class LCallNew V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1919 public: 1927 public:
1920 explicit LCallNew(LOperand* constructor) { 1928 explicit LCallNew(LOperand* constructor) {
1921 inputs_[0] = constructor; 1929 inputs_[0] = constructor;
1922 } 1930 }
1923 1931
1924 LOperand* constructor() { return inputs_[0]; } 1932 LOperand* constructor() { return inputs_[0]; }
1925 1933
1926 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") 1934 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
1927 DECLARE_HYDROGEN_ACCESSOR(CallNew) 1935 DECLARE_HYDROGEN_ACCESSOR(CallNew)
1928 1936
1929 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1937 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1930 1938
1931 int arity() const { return hydrogen()->argument_count() - 1; } 1939 int arity() const { return hydrogen()->argument_count() - 1; }
1932 }; 1940 };
1933 1941
1934 1942
1935 class LCallNewArray FINAL : public LTemplateInstruction<1, 1, 0> { 1943 class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1936 public: 1944 public:
1937 explicit LCallNewArray(LOperand* constructor) { 1945 explicit LCallNewArray(LOperand* constructor) {
1938 inputs_[0] = constructor; 1946 inputs_[0] = constructor;
1939 } 1947 }
1940 1948
1941 LOperand* constructor() { return inputs_[0]; } 1949 LOperand* constructor() { return inputs_[0]; }
1942 1950
1943 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array") 1951 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array")
1944 DECLARE_HYDROGEN_ACCESSOR(CallNewArray) 1952 DECLARE_HYDROGEN_ACCESSOR(CallNewArray)
1945 1953
1946 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1954 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1947 1955
1948 int arity() const { return hydrogen()->argument_count() - 1; } 1956 int arity() const { return hydrogen()->argument_count() - 1; }
1949 }; 1957 };
1950 1958
1951 1959
1952 class LCallRuntime FINAL : public LTemplateInstruction<1, 0, 0> { 1960 class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1953 public: 1961 public:
1954 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") 1962 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
1955 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) 1963 DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
1956 1964
1957 const Runtime::Function* function() const { return hydrogen()->function(); } 1965 const Runtime::Function* function() const { return hydrogen()->function(); }
1958 int arity() const { return hydrogen()->argument_count(); } 1966 int arity() const { return hydrogen()->argument_count(); }
1959 }; 1967 };
1960 1968
1961 1969
1962 class LInteger32ToDouble FINAL : public LTemplateInstruction<1, 1, 0> { 1970 class LInteger32ToDouble V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1963 public: 1971 public:
1964 explicit LInteger32ToDouble(LOperand* value) { 1972 explicit LInteger32ToDouble(LOperand* value) {
1965 inputs_[0] = value; 1973 inputs_[0] = value;
1966 } 1974 }
1967 1975
1968 LOperand* value() { return inputs_[0]; } 1976 LOperand* value() { return inputs_[0]; }
1969 1977
1970 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double") 1978 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
1971 }; 1979 };
1972 1980
1973 1981
1974 class LInteger32ToSmi FINAL : public LTemplateInstruction<1, 1, 0> { 1982 class LInteger32ToSmi V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1975 public: 1983 public:
1976 explicit LInteger32ToSmi(LOperand* value) { 1984 explicit LInteger32ToSmi(LOperand* value) {
1977 inputs_[0] = value; 1985 inputs_[0] = value;
1978 } 1986 }
1979 1987
1980 LOperand* value() { return inputs_[0]; } 1988 LOperand* value() { return inputs_[0]; }
1981 1989
1982 DECLARE_CONCRETE_INSTRUCTION(Integer32ToSmi, "int32-to-smi") 1990 DECLARE_CONCRETE_INSTRUCTION(Integer32ToSmi, "int32-to-smi")
1983 DECLARE_HYDROGEN_ACCESSOR(Change) 1991 DECLARE_HYDROGEN_ACCESSOR(Change)
1984 }; 1992 };
1985 1993
1986 1994
1987 class LUint32ToDouble FINAL : public LTemplateInstruction<1, 1, 0> { 1995 class LUint32ToDouble V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1988 public: 1996 public:
1989 explicit LUint32ToDouble(LOperand* value) { 1997 explicit LUint32ToDouble(LOperand* value) {
1990 inputs_[0] = value; 1998 inputs_[0] = value;
1991 } 1999 }
1992 2000
1993 LOperand* value() { return inputs_[0]; } 2001 LOperand* value() { return inputs_[0]; }
1994 2002
1995 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double") 2003 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
1996 }; 2004 };
1997 2005
1998 2006
1999 class LNumberTagI FINAL : public LTemplateInstruction<1, 1, 0> { 2007 class LNumberTagI V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2000 public: 2008 public:
2001 explicit LNumberTagI(LOperand* value) { 2009 explicit LNumberTagI(LOperand* value) {
2002 inputs_[0] = value; 2010 inputs_[0] = value;
2003 } 2011 }
2004 2012
2005 LOperand* value() { return inputs_[0]; } 2013 LOperand* value() { return inputs_[0]; }
2006 2014
2007 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") 2015 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i")
2008 }; 2016 };
2009 2017
2010 2018
2011 class LNumberTagU FINAL : public LTemplateInstruction<1, 1, 0> { 2019 class LNumberTagU V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2012 public: 2020 public:
2013 explicit LNumberTagU(LOperand* value) { 2021 explicit LNumberTagU(LOperand* value) {
2014 inputs_[0] = value; 2022 inputs_[0] = value;
2015 } 2023 }
2016 2024
2017 LOperand* value() { return inputs_[0]; } 2025 LOperand* value() { return inputs_[0]; }
2018 2026
2019 DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u") 2027 DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u")
2020 }; 2028 };
2021 2029
2022 2030
2023 class LNumberTagD FINAL : public LTemplateInstruction<1, 1, 2> { 2031 class LNumberTagD V8_FINAL : public LTemplateInstruction<1, 1, 2> {
2024 public: 2032 public:
2025 LNumberTagD(LOperand* value, LOperand* temp, LOperand* temp2) { 2033 LNumberTagD(LOperand* value, LOperand* temp, LOperand* temp2) {
2026 inputs_[0] = value; 2034 inputs_[0] = value;
2027 temps_[0] = temp; 2035 temps_[0] = temp;
2028 temps_[1] = temp2; 2036 temps_[1] = temp2;
2029 } 2037 }
2030 2038
2031 LOperand* value() { return inputs_[0]; } 2039 LOperand* value() { return inputs_[0]; }
2032 LOperand* temp() { return temps_[0]; } 2040 LOperand* temp() { return temps_[0]; }
2033 LOperand* temp2() { return temps_[1]; } 2041 LOperand* temp2() { return temps_[1]; }
2034 2042
2035 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") 2043 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
2036 DECLARE_HYDROGEN_ACCESSOR(Change) 2044 DECLARE_HYDROGEN_ACCESSOR(Change)
2037 }; 2045 };
2038 2046
2039 2047
2040 class LDoubleToSmi FINAL : public LTemplateInstruction<1, 1, 2> { 2048 class LDoubleToSmi V8_FINAL : public LTemplateInstruction<1, 1, 2> {
2041 public: 2049 public:
2042 LDoubleToSmi(LOperand* value, LOperand* temp, LOperand* temp2) { 2050 LDoubleToSmi(LOperand* value, LOperand* temp, LOperand* temp2) {
2043 inputs_[0] = value; 2051 inputs_[0] = value;
2044 temps_[0] = temp; 2052 temps_[0] = temp;
2045 temps_[1] = temp2; 2053 temps_[1] = temp2;
2046 } 2054 }
2047 2055
2048 LOperand* value() { return inputs_[0]; } 2056 LOperand* value() { return inputs_[0]; }
2049 LOperand* temp() { return temps_[0]; } 2057 LOperand* temp() { return temps_[0]; }
2050 LOperand* temp2() { return temps_[1]; } 2058 LOperand* temp2() { return temps_[1]; }
2051 2059
2052 DECLARE_CONCRETE_INSTRUCTION(DoubleToSmi, "double-to-smi") 2060 DECLARE_CONCRETE_INSTRUCTION(DoubleToSmi, "double-to-smi")
2053 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation) 2061 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
2054 2062
2055 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 2063 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
2056 }; 2064 };
2057 2065
2058 2066
2059 // Sometimes truncating conversion from a tagged value to an int32. 2067 // Sometimes truncating conversion from a tagged value to an int32.
2060 class LDoubleToI FINAL : public LTemplateInstruction<1, 1, 2> { 2068 class LDoubleToI V8_FINAL : public LTemplateInstruction<1, 1, 2> {
2061 public: 2069 public:
2062 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) { 2070 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) {
2063 inputs_[0] = value; 2071 inputs_[0] = value;
2064 temps_[0] = temp; 2072 temps_[0] = temp;
2065 temps_[1] = temp2; 2073 temps_[1] = temp2;
2066 } 2074 }
2067 2075
2068 LOperand* value() { return inputs_[0]; } 2076 LOperand* value() { return inputs_[0]; }
2069 LOperand* temp() { return temps_[0]; } 2077 LOperand* temp() { return temps_[0]; }
2070 LOperand* temp2() { return temps_[1]; } 2078 LOperand* temp2() { return temps_[1]; }
2071 2079
2072 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i") 2080 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
2073 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation) 2081 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
2074 2082
2075 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 2083 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
2076 }; 2084 };
2077 2085
2078 2086
2079 // Truncating conversion from a tagged value to an int32. 2087 // Truncating conversion from a tagged value to an int32.
2080 class LTaggedToI FINAL : public LTemplateInstruction<1, 1, 3> { 2088 class LTaggedToI V8_FINAL : public LTemplateInstruction<1, 1, 3> {
2081 public: 2089 public:
2082 LTaggedToI(LOperand* value, 2090 LTaggedToI(LOperand* value,
2083 LOperand* temp, 2091 LOperand* temp,
2084 LOperand* temp2, 2092 LOperand* temp2,
2085 LOperand* temp3) { 2093 LOperand* temp3) {
2086 inputs_[0] = value; 2094 inputs_[0] = value;
2087 temps_[0] = temp; 2095 temps_[0] = temp;
2088 temps_[1] = temp2; 2096 temps_[1] = temp2;
2089 temps_[2] = temp3; 2097 temps_[2] = temp3;
2090 } 2098 }
2091 2099
2092 LOperand* value() { return inputs_[0]; } 2100 LOperand* value() { return inputs_[0]; }
2093 LOperand* temp() { return temps_[0]; } 2101 LOperand* temp() { return temps_[0]; }
2094 LOperand* temp2() { return temps_[1]; } 2102 LOperand* temp2() { return temps_[1]; }
2095 LOperand* temp3() { return temps_[2]; } 2103 LOperand* temp3() { return temps_[2]; }
2096 2104
2097 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i") 2105 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
2098 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation) 2106 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
2099 2107
2100 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 2108 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
2101 }; 2109 };
2102 2110
2103 2111
2104 class LSmiTag FINAL : public LTemplateInstruction<1, 1, 0> { 2112 class LSmiTag V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2105 public: 2113 public:
2106 explicit LSmiTag(LOperand* value) { 2114 explicit LSmiTag(LOperand* value) {
2107 inputs_[0] = value; 2115 inputs_[0] = value;
2108 } 2116 }
2109 2117
2110 LOperand* value() { return inputs_[0]; } 2118 LOperand* value() { return inputs_[0]; }
2111 2119
2112 DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag") 2120 DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag")
2113 }; 2121 };
2114 2122
2115 2123
2116 class LNumberUntagD FINAL : public LTemplateInstruction<1, 1, 0> { 2124 class LNumberUntagD V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2117 public: 2125 public:
2118 explicit LNumberUntagD(LOperand* value) { 2126 explicit LNumberUntagD(LOperand* value) {
2119 inputs_[0] = value; 2127 inputs_[0] = value;
2120 } 2128 }
2121 2129
2122 LOperand* value() { return inputs_[0]; } 2130 LOperand* value() { return inputs_[0]; }
2123 2131
2124 DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag") 2132 DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
2125 DECLARE_HYDROGEN_ACCESSOR(Change) 2133 DECLARE_HYDROGEN_ACCESSOR(Change)
2126 }; 2134 };
2127 2135
2128 2136
2129 class LSmiUntag FINAL : public LTemplateInstruction<1, 1, 0> { 2137 class LSmiUntag V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2130 public: 2138 public:
2131 LSmiUntag(LOperand* value, bool needs_check) 2139 LSmiUntag(LOperand* value, bool needs_check)
2132 : needs_check_(needs_check) { 2140 : needs_check_(needs_check) {
2133 inputs_[0] = value; 2141 inputs_[0] = value;
2134 } 2142 }
2135 2143
2136 LOperand* value() { return inputs_[0]; } 2144 LOperand* value() { return inputs_[0]; }
2137 bool needs_check() const { return needs_check_; } 2145 bool needs_check() const { return needs_check_; }
2138 2146
2139 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") 2147 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
2140 2148
2141 private: 2149 private:
2142 bool needs_check_; 2150 bool needs_check_;
2143 }; 2151 };
2144 2152
2145 2153
2146 class LStoreNamedField FINAL : public LTemplateInstruction<0, 2, 1> { 2154 class LStoreNamedField V8_FINAL : public LTemplateInstruction<0, 2, 1> {
2147 public: 2155 public:
2148 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) { 2156 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) {
2149 inputs_[0] = object; 2157 inputs_[0] = object;
2150 inputs_[1] = value; 2158 inputs_[1] = value;
2151 temps_[0] = temp; 2159 temps_[0] = temp;
2152 } 2160 }
2153 2161
2154 LOperand* object() { return inputs_[0]; } 2162 LOperand* object() { return inputs_[0]; }
2155 LOperand* value() { return inputs_[1]; } 2163 LOperand* value() { return inputs_[1]; }
2156 LOperand* temp() { return temps_[0]; } 2164 LOperand* temp() { return temps_[0]; }
2157 2165
2158 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") 2166 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
2159 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) 2167 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
2160 2168
2161 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2169 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2162 2170
2163 Handle<Map> transition() const { return hydrogen()->transition_map(); } 2171 Handle<Map> transition() const { return hydrogen()->transition_map(); }
2164 Representation representation() const { 2172 Representation representation() const {
2165 return hydrogen()->field_representation(); 2173 return hydrogen()->field_representation();
2166 } 2174 }
2167 }; 2175 };
2168 2176
2169 2177
2170 class LStoreNamedGeneric FINAL : public LTemplateInstruction<0, 2, 0> { 2178 class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> {
2171 public: 2179 public:
2172 LStoreNamedGeneric(LOperand* object, LOperand* value) { 2180 LStoreNamedGeneric(LOperand* object, LOperand* value) {
2173 inputs_[0] = object; 2181 inputs_[0] = object;
2174 inputs_[1] = value; 2182 inputs_[1] = value;
2175 } 2183 }
2176 2184
2177 LOperand* object() { return inputs_[0]; } 2185 LOperand* object() { return inputs_[0]; }
2178 LOperand* value() { return inputs_[1]; } 2186 LOperand* value() { return inputs_[1]; }
2179 2187
2180 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 2188 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
2181 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 2189 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
2182 2190
2183 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2191 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2184 2192
2185 Handle<Object> name() const { return hydrogen()->name(); } 2193 Handle<Object> name() const { return hydrogen()->name(); }
2186 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 2194 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
2187 }; 2195 };
2188 2196
2189 2197
2190 class LStoreKeyed FINAL : public LTemplateInstruction<0, 3, 0> { 2198 class LStoreKeyed V8_FINAL : public LTemplateInstruction<0, 3, 0> {
2191 public: 2199 public:
2192 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) { 2200 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) {
2193 inputs_[0] = object; 2201 inputs_[0] = object;
2194 inputs_[1] = key; 2202 inputs_[1] = key;
2195 inputs_[2] = value; 2203 inputs_[2] = value;
2196 } 2204 }
2197 2205
2198 bool is_external() const { return hydrogen()->is_external(); } 2206 bool is_external() const { return hydrogen()->is_external(); }
2199 LOperand* elements() { return inputs_[0]; } 2207 LOperand* elements() { return inputs_[0]; }
2200 LOperand* key() { return inputs_[1]; } 2208 LOperand* key() { return inputs_[1]; }
2201 LOperand* value() { return inputs_[2]; } 2209 LOperand* value() { return inputs_[2]; }
2202 ElementsKind elements_kind() const { 2210 ElementsKind elements_kind() const {
2203 return hydrogen()->elements_kind(); 2211 return hydrogen()->elements_kind();
2204 } 2212 }
2205 2213
2206 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") 2214 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2207 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) 2215 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
2208 2216
2209 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2217 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2210 bool NeedsCanonicalization() { 2218 bool NeedsCanonicalization() {
2211 if (hydrogen()->value()->IsAdd() || hydrogen()->value()->IsSub() || 2219 if (hydrogen()->value()->IsAdd() || hydrogen()->value()->IsSub() ||
2212 hydrogen()->value()->IsMul() || hydrogen()->value()->IsDiv()) { 2220 hydrogen()->value()->IsMul() || hydrogen()->value()->IsDiv()) {
2213 return false; 2221 return false;
2214 } 2222 }
2215 return hydrogen()->NeedsCanonicalization(); 2223 return hydrogen()->NeedsCanonicalization();
2216 } 2224 }
2217 uint32_t additional_index() const { return hydrogen()->index_offset(); } 2225 uint32_t additional_index() const { return hydrogen()->index_offset(); }
2218 }; 2226 };
2219 2227
2220 2228
2221 class LStoreKeyedGeneric FINAL : public LTemplateInstruction<0, 3, 0> { 2229 class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
2222 public: 2230 public:
2223 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* value) { 2231 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* value) {
2224 inputs_[0] = obj; 2232 inputs_[0] = obj;
2225 inputs_[1] = key; 2233 inputs_[1] = key;
2226 inputs_[2] = value; 2234 inputs_[2] = value;
2227 } 2235 }
2228 2236
2229 LOperand* object() { return inputs_[0]; } 2237 LOperand* object() { return inputs_[0]; }
2230 LOperand* key() { return inputs_[1]; } 2238 LOperand* key() { return inputs_[1]; }
2231 LOperand* value() { return inputs_[2]; } 2239 LOperand* value() { return inputs_[2]; }
2232 2240
2233 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") 2241 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
2234 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) 2242 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
2235 2243
2236 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2244 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2237 2245
2238 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 2246 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
2239 }; 2247 };
2240 2248
2241 2249
2242 class LTransitionElementsKind FINAL : public LTemplateInstruction<0, 1, 1> { 2250 class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 1> {
2243 public: 2251 public:
2244 LTransitionElementsKind(LOperand* object, 2252 LTransitionElementsKind(LOperand* object,
2245 LOperand* new_map_temp) { 2253 LOperand* new_map_temp) {
2246 inputs_[0] = object; 2254 inputs_[0] = object;
2247 temps_[0] = new_map_temp; 2255 temps_[0] = new_map_temp;
2248 } 2256 }
2249 2257
2250 LOperand* object() { return inputs_[0]; } 2258 LOperand* object() { return inputs_[0]; }
2251 LOperand* new_map_temp() { return temps_[0]; } 2259 LOperand* new_map_temp() { return temps_[0]; }
2252 2260
2253 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, 2261 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
2254 "transition-elements-kind") 2262 "transition-elements-kind")
2255 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind) 2263 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
2256 2264
2257 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2265 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2258 2266
2259 Handle<Map> original_map() { return hydrogen()->original_map(); } 2267 Handle<Map> original_map() { return hydrogen()->original_map(); }
2260 Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); } 2268 Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
2261 ElementsKind from_kind() { return hydrogen()->from_kind(); } 2269 ElementsKind from_kind() { return hydrogen()->from_kind(); }
2262 ElementsKind to_kind() { return hydrogen()->to_kind(); } 2270 ElementsKind to_kind() { return hydrogen()->to_kind(); }
2263 }; 2271 };
2264 2272
2265 2273
2266 class LTrapAllocationMemento FINAL : public LTemplateInstruction<0, 1, 1> { 2274 class LTrapAllocationMemento V8_FINAL : public LTemplateInstruction<0, 1, 1> {
2267 public: 2275 public:
2268 LTrapAllocationMemento(LOperand* object, 2276 LTrapAllocationMemento(LOperand* object,
2269 LOperand* temp) { 2277 LOperand* temp) {
2270 inputs_[0] = object; 2278 inputs_[0] = object;
2271 temps_[0] = temp; 2279 temps_[0] = temp;
2272 } 2280 }
2273 2281
2274 LOperand* object() { return inputs_[0]; } 2282 LOperand* object() { return inputs_[0]; }
2275 LOperand* temp() { return temps_[0]; } 2283 LOperand* temp() { return temps_[0]; }
2276 2284
2277 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento, 2285 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento,
2278 "trap-allocation-memento") 2286 "trap-allocation-memento")
2279 }; 2287 };
2280 2288
2281 2289
2282 class LStringAdd FINAL : public LTemplateInstruction<1, 2, 0> { 2290 class LStringAdd V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2283 public: 2291 public:
2284 LStringAdd(LOperand* left, LOperand* right) { 2292 LStringAdd(LOperand* left, LOperand* right) {
2285 inputs_[0] = left; 2293 inputs_[0] = left;
2286 inputs_[1] = right; 2294 inputs_[1] = right;
2287 } 2295 }
2288 2296
2289 LOperand* left() { return inputs_[0]; } 2297 LOperand* left() { return inputs_[0]; }
2290 LOperand* right() { return inputs_[1]; } 2298 LOperand* right() { return inputs_[1]; }
2291 2299
2292 DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add") 2300 DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
2293 DECLARE_HYDROGEN_ACCESSOR(StringAdd) 2301 DECLARE_HYDROGEN_ACCESSOR(StringAdd)
2294 }; 2302 };
2295 2303
2296 2304
2297 2305
2298 class LStringCharCodeAt FINAL : public LTemplateInstruction<1, 2, 0> { 2306 class LStringCharCodeAt V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2299 public: 2307 public:
2300 LStringCharCodeAt(LOperand* string, LOperand* index) { 2308 LStringCharCodeAt(LOperand* string, LOperand* index) {
2301 inputs_[0] = string; 2309 inputs_[0] = string;
2302 inputs_[1] = index; 2310 inputs_[1] = index;
2303 } 2311 }
2304 2312
2305 LOperand* string() { return inputs_[0]; } 2313 LOperand* string() { return inputs_[0]; }
2306 LOperand* index() { return inputs_[1]; } 2314 LOperand* index() { return inputs_[1]; }
2307 2315
2308 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at") 2316 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
2309 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt) 2317 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
2310 }; 2318 };
2311 2319
2312 2320
2313 class LStringCharFromCode FINAL : public LTemplateInstruction<1, 1, 0> { 2321 class LStringCharFromCode V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2314 public: 2322 public:
2315 explicit LStringCharFromCode(LOperand* char_code) { 2323 explicit LStringCharFromCode(LOperand* char_code) {
2316 inputs_[0] = char_code; 2324 inputs_[0] = char_code;
2317 } 2325 }
2318 2326
2319 LOperand* char_code() { return inputs_[0]; } 2327 LOperand* char_code() { return inputs_[0]; }
2320 2328
2321 DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code") 2329 DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
2322 DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode) 2330 DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
2323 }; 2331 };
2324 2332
2325 2333
2326 class LCheckFunction FINAL : public LTemplateInstruction<0, 1, 0> { 2334 class LCheckFunction V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2327 public: 2335 public:
2328 explicit LCheckFunction(LOperand* value) { 2336 explicit LCheckFunction(LOperand* value) {
2329 inputs_[0] = value; 2337 inputs_[0] = value;
2330 } 2338 }
2331 2339
2332 LOperand* value() { return inputs_[0]; } 2340 LOperand* value() { return inputs_[0]; }
2333 2341
2334 DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function") 2342 DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function")
2335 DECLARE_HYDROGEN_ACCESSOR(CheckFunction) 2343 DECLARE_HYDROGEN_ACCESSOR(CheckFunction)
2336 }; 2344 };
2337 2345
2338 2346
2339 class LCheckInstanceType FINAL : public LTemplateInstruction<0, 1, 0> { 2347 class LCheckInstanceType V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2340 public: 2348 public:
2341 explicit LCheckInstanceType(LOperand* value) { 2349 explicit LCheckInstanceType(LOperand* value) {
2342 inputs_[0] = value; 2350 inputs_[0] = value;
2343 } 2351 }
2344 2352
2345 LOperand* value() { return inputs_[0]; } 2353 LOperand* value() { return inputs_[0]; }
2346 2354
2347 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type") 2355 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
2348 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType) 2356 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
2349 }; 2357 };
2350 2358
2351 2359
2352 class LCheckMaps FINAL : public LTemplateInstruction<0, 1, 0> { 2360 class LCheckMaps V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2353 public: 2361 public:
2354 explicit LCheckMaps(LOperand* value) { 2362 explicit LCheckMaps(LOperand* value) {
2355 inputs_[0] = value; 2363 inputs_[0] = value;
2356 } 2364 }
2357 2365
2358 LOperand* value() { return inputs_[0]; } 2366 LOperand* value() { return inputs_[0]; }
2359 2367
2360 DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps") 2368 DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps")
2361 DECLARE_HYDROGEN_ACCESSOR(CheckMaps) 2369 DECLARE_HYDROGEN_ACCESSOR(CheckMaps)
2362 }; 2370 };
2363 2371
2364 2372
2365 class LCheckSmi FINAL : public LTemplateInstruction<1, 1, 0> { 2373 class LCheckSmi V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2366 public: 2374 public:
2367 explicit LCheckSmi(LOperand* value) { 2375 explicit LCheckSmi(LOperand* value) {
2368 inputs_[0] = value; 2376 inputs_[0] = value;
2369 } 2377 }
2370 2378
2371 LOperand* value() { return inputs_[0]; } 2379 LOperand* value() { return inputs_[0]; }
2372 2380
2373 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi") 2381 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
2374 }; 2382 };
2375 2383
2376 2384
2377 class LCheckNonSmi FINAL : public LTemplateInstruction<0, 1, 0> { 2385 class LCheckNonSmi V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2378 public: 2386 public:
2379 explicit LCheckNonSmi(LOperand* value) { 2387 explicit LCheckNonSmi(LOperand* value) {
2380 inputs_[0] = value; 2388 inputs_[0] = value;
2381 } 2389 }
2382 2390
2383 LOperand* value() { return inputs_[0]; } 2391 LOperand* value() { return inputs_[0]; }
2384 2392
2385 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi") 2393 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi")
2386 DECLARE_HYDROGEN_ACCESSOR(CheckHeapObject) 2394 DECLARE_HYDROGEN_ACCESSOR(CheckHeapObject)
2387 }; 2395 };
2388 2396
2389 2397
2390 class LClampDToUint8 FINAL : public LTemplateInstruction<1, 1, 0> { 2398 class LClampDToUint8 V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2391 public: 2399 public:
2392 explicit LClampDToUint8(LOperand* unclamped) { 2400 explicit LClampDToUint8(LOperand* unclamped) {
2393 inputs_[0] = unclamped; 2401 inputs_[0] = unclamped;
2394 } 2402 }
2395 2403
2396 LOperand* unclamped() { return inputs_[0]; } 2404 LOperand* unclamped() { return inputs_[0]; }
2397 2405
2398 DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8") 2406 DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8")
2399 }; 2407 };
2400 2408
2401 2409
2402 class LClampIToUint8 FINAL : public LTemplateInstruction<1, 1, 0> { 2410 class LClampIToUint8 V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2403 public: 2411 public:
2404 explicit LClampIToUint8(LOperand* unclamped) { 2412 explicit LClampIToUint8(LOperand* unclamped) {
2405 inputs_[0] = unclamped; 2413 inputs_[0] = unclamped;
2406 } 2414 }
2407 2415
2408 LOperand* unclamped() { return inputs_[0]; } 2416 LOperand* unclamped() { return inputs_[0]; }
2409 2417
2410 DECLARE_CONCRETE_INSTRUCTION(ClampIToUint8, "clamp-i-to-uint8") 2418 DECLARE_CONCRETE_INSTRUCTION(ClampIToUint8, "clamp-i-to-uint8")
2411 }; 2419 };
2412 2420
2413 2421
2414 class LClampTToUint8 FINAL : public LTemplateInstruction<1, 1, 1> { 2422 class LClampTToUint8 V8_FINAL : public LTemplateInstruction<1, 1, 1> {
2415 public: 2423 public:
2416 LClampTToUint8(LOperand* unclamped, LOperand* temp) { 2424 LClampTToUint8(LOperand* unclamped, LOperand* temp) {
2417 inputs_[0] = unclamped; 2425 inputs_[0] = unclamped;
2418 temps_[0] = temp; 2426 temps_[0] = temp;
2419 } 2427 }
2420 2428
2421 LOperand* unclamped() { return inputs_[0]; } 2429 LOperand* unclamped() { return inputs_[0]; }
2422 LOperand* temp() { return temps_[0]; } 2430 LOperand* temp() { return temps_[0]; }
2423 2431
2424 DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8") 2432 DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8")
2425 }; 2433 };
2426 2434
2427 2435
2428 class LAllocate FINAL : public LTemplateInstruction<1, 2, 2> { 2436 class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 2> {
2429 public: 2437 public:
2430 LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) { 2438 LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) {
2431 inputs_[1] = size; 2439 inputs_[1] = size;
2432 temps_[0] = temp1; 2440 temps_[0] = temp1;
2433 temps_[1] = temp2; 2441 temps_[1] = temp2;
2434 } 2442 }
2435 2443
2436 LOperand* size() { return inputs_[1]; } 2444 LOperand* size() { return inputs_[1]; }
2437 LOperand* temp1() { return temps_[0]; } 2445 LOperand* temp1() { return temps_[0]; }
2438 LOperand* temp2() { return temps_[1]; } 2446 LOperand* temp2() { return temps_[1]; }
2439 2447
2440 DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate") 2448 DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate")
2441 DECLARE_HYDROGEN_ACCESSOR(Allocate) 2449 DECLARE_HYDROGEN_ACCESSOR(Allocate)
2442 }; 2450 };
2443 2451
2444 2452
2445 class LRegExpLiteral FINAL : public LTemplateInstruction<1, 0, 0> { 2453 class LRegExpLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> {
2446 public: 2454 public:
2447 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal") 2455 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal")
2448 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral) 2456 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral)
2449 }; 2457 };
2450 2458
2451 2459
2452 class LFunctionLiteral FINAL : public LTemplateInstruction<1, 0, 0> { 2460 class LFunctionLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> {
2453 public: 2461 public:
2454 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal") 2462 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal")
2455 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral) 2463 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral)
2456 }; 2464 };
2457 2465
2458 2466
2459 class LToFastProperties FINAL : public LTemplateInstruction<1, 1, 0> { 2467 class LToFastProperties V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2460 public: 2468 public:
2461 explicit LToFastProperties(LOperand* value) { 2469 explicit LToFastProperties(LOperand* value) {
2462 inputs_[0] = value; 2470 inputs_[0] = value;
2463 } 2471 }
2464 2472
2465 LOperand* value() { return inputs_[0]; } 2473 LOperand* value() { return inputs_[0]; }
2466 2474
2467 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties") 2475 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties")
2468 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties) 2476 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties)
2469 }; 2477 };
2470 2478
2471 2479
2472 class LTypeof FINAL : public LTemplateInstruction<1, 1, 0> { 2480 class LTypeof V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2473 public: 2481 public:
2474 explicit LTypeof(LOperand* value) { 2482 explicit LTypeof(LOperand* value) {
2475 inputs_[0] = value; 2483 inputs_[0] = value;
2476 } 2484 }
2477 2485
2478 LOperand* value() { return inputs_[0]; } 2486 LOperand* value() { return inputs_[0]; }
2479 2487
2480 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof") 2488 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
2481 }; 2489 };
2482 2490
2483 2491
2484 class LTypeofIsAndBranch FINAL : public LControlInstruction<1, 0> { 2492 class LTypeofIsAndBranch V8_FINAL : public LControlInstruction<1, 0> {
2485 public: 2493 public:
2486 explicit LTypeofIsAndBranch(LOperand* value) { 2494 explicit LTypeofIsAndBranch(LOperand* value) {
2487 inputs_[0] = value; 2495 inputs_[0] = value;
2488 } 2496 }
2489 2497
2490 LOperand* value() { return inputs_[0]; } 2498 LOperand* value() { return inputs_[0]; }
2491 2499
2492 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch") 2500 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
2493 DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch) 2501 DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
2494 2502
2495 Handle<String> type_literal() { return hydrogen()->type_literal(); } 2503 Handle<String> type_literal() { return hydrogen()->type_literal(); }
2496 2504
2497 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 2505 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2498 }; 2506 };
2499 2507
2500 2508
2501 class LIsConstructCallAndBranch FINAL : public LControlInstruction<0, 1> { 2509 class LIsConstructCallAndBranch V8_FINAL : public LControlInstruction<0, 1> {
2502 public: 2510 public:
2503 explicit LIsConstructCallAndBranch(LOperand* temp) { 2511 explicit LIsConstructCallAndBranch(LOperand* temp) {
2504 temps_[0] = temp; 2512 temps_[0] = temp;
2505 } 2513 }
2506 2514
2507 LOperand* temp() { return temps_[0]; } 2515 LOperand* temp() { return temps_[0]; }
2508 2516
2509 DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch, 2517 DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
2510 "is-construct-call-and-branch") 2518 "is-construct-call-and-branch")
2511 }; 2519 };
2512 2520
2513 2521
2514 class LOsrEntry FINAL : public LTemplateInstruction<0, 0, 0> { 2522 class LOsrEntry V8_FINAL : public LTemplateInstruction<0, 0, 0> {
2515 public: 2523 public:
2516 LOsrEntry() {} 2524 LOsrEntry() {}
2517 2525
2518 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 2526 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
2519 return false; 2527 return false;
2520 } 2528 }
2521 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry") 2529 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry")
2522 }; 2530 };
2523 2531
2524 2532
2525 class LStackCheck FINAL : public LTemplateInstruction<0, 0, 0> { 2533 class LStackCheck V8_FINAL : public LTemplateInstruction<0, 0, 0> {
2526 public: 2534 public:
2527 DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check") 2535 DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
2528 DECLARE_HYDROGEN_ACCESSOR(StackCheck) 2536 DECLARE_HYDROGEN_ACCESSOR(StackCheck)
2529 2537
2530 Label* done_label() { return &done_label_; } 2538 Label* done_label() { return &done_label_; }
2531 2539
2532 private: 2540 private:
2533 Label done_label_; 2541 Label done_label_;
2534 }; 2542 };
2535 2543
2536 2544
2537 class LForInPrepareMap FINAL : public LTemplateInstruction<1, 1, 0> { 2545 class LForInPrepareMap V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2538 public: 2546 public:
2539 explicit LForInPrepareMap(LOperand* object) { 2547 explicit LForInPrepareMap(LOperand* object) {
2540 inputs_[0] = object; 2548 inputs_[0] = object;
2541 } 2549 }
2542 2550
2543 LOperand* object() { return inputs_[0]; } 2551 LOperand* object() { return inputs_[0]; }
2544 2552
2545 DECLARE_CONCRETE_INSTRUCTION(ForInPrepareMap, "for-in-prepare-map") 2553 DECLARE_CONCRETE_INSTRUCTION(ForInPrepareMap, "for-in-prepare-map")
2546 }; 2554 };
2547 2555
2548 2556
2549 class LForInCacheArray FINAL : public LTemplateInstruction<1, 1, 0> { 2557 class LForInCacheArray V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2550 public: 2558 public:
2551 explicit LForInCacheArray(LOperand* map) { 2559 explicit LForInCacheArray(LOperand* map) {
2552 inputs_[0] = map; 2560 inputs_[0] = map;
2553 } 2561 }
2554 2562
2555 LOperand* map() { return inputs_[0]; } 2563 LOperand* map() { return inputs_[0]; }
2556 2564
2557 DECLARE_CONCRETE_INSTRUCTION(ForInCacheArray, "for-in-cache-array") 2565 DECLARE_CONCRETE_INSTRUCTION(ForInCacheArray, "for-in-cache-array")
2558 2566
2559 int idx() { 2567 int idx() {
2560 return HForInCacheArray::cast(this->hydrogen_value())->idx(); 2568 return HForInCacheArray::cast(this->hydrogen_value())->idx();
2561 } 2569 }
2562 }; 2570 };
2563 2571
2564 2572
2565 class LCheckMapValue FINAL : public LTemplateInstruction<0, 2, 0> { 2573 class LCheckMapValue V8_FINAL : public LTemplateInstruction<0, 2, 0> {
2566 public: 2574 public:
2567 LCheckMapValue(LOperand* value, LOperand* map) { 2575 LCheckMapValue(LOperand* value, LOperand* map) {
2568 inputs_[0] = value; 2576 inputs_[0] = value;
2569 inputs_[1] = map; 2577 inputs_[1] = map;
2570 } 2578 }
2571 2579
2572 LOperand* value() { return inputs_[0]; } 2580 LOperand* value() { return inputs_[0]; }
2573 LOperand* map() { return inputs_[1]; } 2581 LOperand* map() { return inputs_[1]; }
2574 2582
2575 DECLARE_CONCRETE_INSTRUCTION(CheckMapValue, "check-map-value") 2583 DECLARE_CONCRETE_INSTRUCTION(CheckMapValue, "check-map-value")
2576 }; 2584 };
2577 2585
2578 2586
2579 class LLoadFieldByIndex FINAL : public LTemplateInstruction<1, 2, 0> { 2587 class LLoadFieldByIndex V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2580 public: 2588 public:
2581 LLoadFieldByIndex(LOperand* object, LOperand* index) { 2589 LLoadFieldByIndex(LOperand* object, LOperand* index) {
2582 inputs_[0] = object; 2590 inputs_[0] = object;
2583 inputs_[1] = index; 2591 inputs_[1] = index;
2584 } 2592 }
2585 2593
2586 LOperand* object() { return inputs_[0]; } 2594 LOperand* object() { return inputs_[0]; }
2587 LOperand* index() { return inputs_[1]; } 2595 LOperand* index() { return inputs_[1]; }
2588 2596
2589 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex, "load-field-by-index") 2597 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex, "load-field-by-index")
2590 }; 2598 };
2591 2599
2592 2600
2593 class LChunkBuilder; 2601 class LChunkBuilder;
2594 class LPlatformChunk FINAL : public LChunk { 2602 class LPlatformChunk V8_FINAL : public LChunk {
2595 public: 2603 public:
2596 LPlatformChunk(CompilationInfo* info, HGraph* graph) 2604 LPlatformChunk(CompilationInfo* info, HGraph* graph)
2597 : LChunk(info, graph) { } 2605 : LChunk(info, graph) { }
2598 2606
2599 int GetNextSpillIndex(bool is_double); 2607 int GetNextSpillIndex(bool is_double);
2600 LOperand* GetNextSpillSlot(bool is_double); 2608 LOperand* GetNextSpillSlot(bool is_double);
2601 }; 2609 };
2602 2610
2603 2611
2604 class LChunkBuilder FINAL BASE_EMBEDDED { 2612 class LChunkBuilder V8_FINAL BASE_EMBEDDED {
2605 public: 2613 public:
2606 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) 2614 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator)
2607 : chunk_(NULL), 2615 : chunk_(NULL),
2608 info_(info), 2616 info_(info),
2609 graph_(graph), 2617 graph_(graph),
2610 zone_(graph->zone()), 2618 zone_(graph->zone()),
2611 status_(UNUSED), 2619 status_(UNUSED),
2612 current_instruction_(NULL), 2620 current_instruction_(NULL),
2613 current_block_(NULL), 2621 current_block_(NULL),
2614 next_block_(NULL), 2622 next_block_(NULL),
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
2772 2780
2773 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2781 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2774 }; 2782 };
2775 2783
2776 #undef DECLARE_HYDROGEN_ACCESSOR 2784 #undef DECLARE_HYDROGEN_ACCESSOR
2777 #undef DECLARE_CONCRETE_INSTRUCTION 2785 #undef DECLARE_CONCRETE_INSTRUCTION
2778 2786
2779 } } // namespace v8::internal 2787 } } // namespace v8::internal
2780 2788
2781 #endif // V8_ARM_LITHIUM_ARM_H_ 2789 #endif // V8_ARM_LITHIUM_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/lithium-codegen-arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698