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

Side by Side Diff: src/mips64/full-codegen-mips64.cc

Issue 641093002: MIPS: Keyed stores to super where key is a name. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/mips/full-codegen-mips.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_MIPS64 7 #if V8_TARGET_ARCH_MIPS64
8 8
9 // Note on Mips implementation: 9 // Note on Mips implementation:
10 // 10 //
(...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1868 context()->Plug(v0); 1868 context()->Plug(v0);
1869 } 1869 }
1870 } 1870 }
1871 1871
1872 1872
1873 void FullCodeGenerator::VisitAssignment(Assignment* expr) { 1873 void FullCodeGenerator::VisitAssignment(Assignment* expr) {
1874 DCHECK(expr->target()->IsValidReferenceExpression()); 1874 DCHECK(expr->target()->IsValidReferenceExpression());
1875 1875
1876 Comment cmnt(masm_, "[ Assignment"); 1876 Comment cmnt(masm_, "[ Assignment");
1877 1877
1878 // Left-hand side can only be a property, a global or a (parameter or local)
1879 // slot.
1880 enum LhsKind {
1881 VARIABLE,
1882 NAMED_PROPERTY,
1883 KEYED_PROPERTY,
1884 NAMED_SUPER_PROPERTY
1885 };
1886 LhsKind assign_type = VARIABLE;
1887 Property* property = expr->target()->AsProperty(); 1878 Property* property = expr->target()->AsProperty();
1888 if (property != NULL) { 1879 LhsKind assign_type = GetAssignType(property);
1889 assign_type = (property->key()->IsPropertyName())
1890 ? (property->IsSuperAccess() ? NAMED_SUPER_PROPERTY
1891 : NAMED_PROPERTY)
1892 : KEYED_PROPERTY;
1893 }
1894 1880
1895 // Evaluate LHS expression. 1881 // Evaluate LHS expression.
1896 switch (assign_type) { 1882 switch (assign_type) {
1897 case VARIABLE: 1883 case VARIABLE:
1898 // Nothing to do here. 1884 // Nothing to do here.
1899 break; 1885 break;
1900 case NAMED_PROPERTY: 1886 case NAMED_PROPERTY:
1901 if (expr->is_compound()) { 1887 if (expr->is_compound()) {
1902 // We need the receiver both on the stack and in the register. 1888 // We need the receiver both on the stack and in the register.
1903 VisitForStackValue(property->obj()); 1889 VisitForStackValue(property->obj());
1904 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 1890 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
1905 } else { 1891 } else {
1906 VisitForStackValue(property->obj()); 1892 VisitForStackValue(property->obj());
1907 } 1893 }
1908 break; 1894 break;
1909 case NAMED_SUPER_PROPERTY: 1895 case NAMED_SUPER_PROPERTY:
1910 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1896 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1911 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1897 EmitLoadHomeObject(property->obj()->AsSuperReference());
1912 __ Push(result_register()); 1898 __ Push(result_register());
1913 if (expr->is_compound()) { 1899 if (expr->is_compound()) {
1914 const Register scratch = a1; 1900 const Register scratch = a1;
1915 __ ld(scratch, MemOperand(sp, kPointerSize)); 1901 __ ld(scratch, MemOperand(sp, kPointerSize));
1916 __ Push(scratch, result_register()); 1902 __ Push(scratch, result_register());
1917 } 1903 }
1918 break; 1904 break;
1905 case KEYED_SUPER_PROPERTY: {
1906 const Register scratch = a1;
1907 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1908 EmitLoadHomeObject(property->obj()->AsSuperReference());
1909 __ Move(scratch, result_register());
1910 VisitForAccumulatorValue(property->key());
1911 __ Push(scratch, result_register());
1912 if (expr->is_compound()) {
1913 const Register scratch1 = a4;
1914 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize));
1915 __ Push(scratch1, scratch, result_register());
1916 }
1917 break;
1918 }
1919 case KEYED_PROPERTY: 1919 case KEYED_PROPERTY:
1920 // We need the key and receiver on both the stack and in v0 and a1. 1920 // We need the key and receiver on both the stack and in v0 and a1.
1921 if (expr->is_compound()) { 1921 if (expr->is_compound()) {
1922 VisitForStackValue(property->obj()); 1922 VisitForStackValue(property->obj());
1923 VisitForStackValue(property->key()); 1923 VisitForStackValue(property->key());
1924 __ ld(LoadDescriptor::ReceiverRegister(), 1924 __ ld(LoadDescriptor::ReceiverRegister(),
1925 MemOperand(sp, 1 * kPointerSize)); 1925 MemOperand(sp, 1 * kPointerSize));
1926 __ ld(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); 1926 __ ld(LoadDescriptor::NameRegister(), MemOperand(sp, 0));
1927 } else { 1927 } else {
1928 VisitForStackValue(property->obj()); 1928 VisitForStackValue(property->obj());
(...skipping 12 matching lines...) Expand all
1941 PrepareForBailout(expr->target(), TOS_REG); 1941 PrepareForBailout(expr->target(), TOS_REG);
1942 break; 1942 break;
1943 case NAMED_PROPERTY: 1943 case NAMED_PROPERTY:
1944 EmitNamedPropertyLoad(property); 1944 EmitNamedPropertyLoad(property);
1945 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1945 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1946 break; 1946 break;
1947 case NAMED_SUPER_PROPERTY: 1947 case NAMED_SUPER_PROPERTY:
1948 EmitNamedSuperPropertyLoad(property); 1948 EmitNamedSuperPropertyLoad(property);
1949 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1949 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1950 break; 1950 break;
1951 case KEYED_SUPER_PROPERTY:
1952 EmitKeyedSuperPropertyLoad(property);
1953 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1954 break;
1951 case KEYED_PROPERTY: 1955 case KEYED_PROPERTY:
1952 EmitKeyedPropertyLoad(property); 1956 EmitKeyedPropertyLoad(property);
1953 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1957 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1954 break; 1958 break;
1955 } 1959 }
1956 } 1960 }
1957 1961
1958 Token::Value op = expr->binary_op(); 1962 Token::Value op = expr->binary_op();
1959 __ push(v0); // Left operand goes on the stack. 1963 __ push(v0); // Left operand goes on the stack.
1960 VisitForAccumulatorValue(expr->value()); 1964 VisitForAccumulatorValue(expr->value());
(...skipping 30 matching lines...) Expand all
1991 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); 1995 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
1992 context()->Plug(v0); 1996 context()->Plug(v0);
1993 break; 1997 break;
1994 case NAMED_PROPERTY: 1998 case NAMED_PROPERTY:
1995 EmitNamedPropertyAssignment(expr); 1999 EmitNamedPropertyAssignment(expr);
1996 break; 2000 break;
1997 case NAMED_SUPER_PROPERTY: 2001 case NAMED_SUPER_PROPERTY:
1998 EmitNamedSuperPropertyStore(property); 2002 EmitNamedSuperPropertyStore(property);
1999 context()->Plug(v0); 2003 context()->Plug(v0);
2000 break; 2004 break;
2005 case KEYED_SUPER_PROPERTY:
2006 EmitKeyedSuperPropertyStore(property);
2007 context()->Plug(v0);
2008 break;
2001 case KEYED_PROPERTY: 2009 case KEYED_PROPERTY:
2002 EmitKeyedPropertyAssignment(expr); 2010 EmitKeyedPropertyAssignment(expr);
2003 break; 2011 break;
2004 } 2012 }
2005 } 2013 }
2006 2014
2007 2015
2008 void FullCodeGenerator::VisitYield(Yield* expr) { 2016 void FullCodeGenerator::VisitYield(Yield* expr) {
2009 Comment cmnt(masm_, "[ Yield"); 2017 Comment cmnt(masm_, "[ Yield");
2010 // Evaluate yielded value first; the initial iterator definition depends on 2018 // Evaluate yielded value first; the initial iterator definition depends on
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
2629 2637
2630 2638
2631 void FullCodeGenerator::EmitNamedSuperPropertyStore(Property* prop) { 2639 void FullCodeGenerator::EmitNamedSuperPropertyStore(Property* prop) {
2632 // Assignment to named property of super. 2640 // Assignment to named property of super.
2633 // v0 : value 2641 // v0 : value
2634 // stack : receiver ('this'), home_object 2642 // stack : receiver ('this'), home_object
2635 DCHECK(prop != NULL); 2643 DCHECK(prop != NULL);
2636 Literal* key = prop->key()->AsLiteral(); 2644 Literal* key = prop->key()->AsLiteral();
2637 DCHECK(key != NULL); 2645 DCHECK(key != NULL);
2638 2646
2647 __ Push(key->value());
2639 __ Push(v0); 2648 __ Push(v0);
2640 __ Push(key->value());
2641 __ CallRuntime((strict_mode() == STRICT ? Runtime::kStoreToSuper_Strict 2649 __ CallRuntime((strict_mode() == STRICT ? Runtime::kStoreToSuper_Strict
2642 : Runtime::kStoreToSuper_Sloppy), 2650 : Runtime::kStoreToSuper_Sloppy),
2643 4); 2651 4);
2644 } 2652 }
2645 2653
2646 2654
2655 void FullCodeGenerator::EmitKeyedSuperPropertyStore(Property* prop) {
2656 // Assignment to named property of super.
2657 // v0 : value
2658 // stack : receiver ('this'), home_object, key
2659 DCHECK(prop != NULL);
2660
2661 __ Push(v0);
2662 __ CallRuntime((strict_mode() == STRICT ? Runtime::kStoreKeyedToSuper_Strict
2663 : Runtime::kStoreKeyedToSuper_Sloppy),
2664 4);
2665 }
2666
2667
2647 void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) { 2668 void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) {
2648 // Assignment to a property, using a keyed store IC. 2669 // Assignment to a property, using a keyed store IC.
2649 2670
2650 // Record source code position before IC call. 2671 // Record source code position before IC call.
2651 SetSourcePosition(expr->position()); 2672 SetSourcePosition(expr->position());
2652 // Call keyed store IC. 2673 // Call keyed store IC.
2653 // The arguments are: 2674 // The arguments are:
2654 // - a0 is the value, 2675 // - a0 is the value,
2655 // - a1 is the key, 2676 // - a1 is the key,
2656 // - a2 is the receiver. 2677 // - a2 is the receiver.
(...skipping 1777 matching lines...) Expand 10 before | Expand all | Expand 10 after
4434 } 4455 }
4435 } 4456 }
4436 4457
4437 4458
4438 void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { 4459 void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
4439 DCHECK(expr->expression()->IsValidReferenceExpression()); 4460 DCHECK(expr->expression()->IsValidReferenceExpression());
4440 4461
4441 Comment cmnt(masm_, "[ CountOperation"); 4462 Comment cmnt(masm_, "[ CountOperation");
4442 SetSourcePosition(expr->position()); 4463 SetSourcePosition(expr->position());
4443 4464
4444 // Expression can only be a property, a global or a (parameter or local)
4445 // slot.
4446 enum LhsKind {
4447 VARIABLE,
4448 NAMED_PROPERTY,
4449 KEYED_PROPERTY,
4450 NAMED_SUPER_PROPERTY
4451 };
4452 LhsKind assign_type = VARIABLE;
4453 Property* prop = expr->expression()->AsProperty(); 4465 Property* prop = expr->expression()->AsProperty();
4454 // In case of a property we use the uninitialized expression context 4466 LhsKind assign_type = GetAssignType(prop);
4455 // of the key to detect a named property.
4456 if (prop != NULL) {
4457 assign_type =
4458 (prop->key()->IsPropertyName())
4459 ? (prop->IsSuperAccess() ? NAMED_SUPER_PROPERTY : NAMED_PROPERTY)
4460 : KEYED_PROPERTY;
4461 }
4462 4467
4463 // Evaluate expression and get value. 4468 // Evaluate expression and get value.
4464 if (assign_type == VARIABLE) { 4469 if (assign_type == VARIABLE) {
4465 DCHECK(expr->expression()->AsVariableProxy()->var() != NULL); 4470 DCHECK(expr->expression()->AsVariableProxy()->var() != NULL);
4466 AccumulatorValueContext context(this); 4471 AccumulatorValueContext context(this);
4467 EmitVariableLoad(expr->expression()->AsVariableProxy()); 4472 EmitVariableLoad(expr->expression()->AsVariableProxy());
4468 } else { 4473 } else {
4469 // Reserve space for result of postfix operation. 4474 // Reserve space for result of postfix operation.
4470 if (expr->is_postfix() && !context()->IsEffect()) { 4475 if (expr->is_postfix() && !context()->IsEffect()) {
4471 __ li(at, Operand(Smi::FromInt(0))); 4476 __ li(at, Operand(Smi::FromInt(0)));
4472 __ push(at); 4477 __ push(at);
4473 } 4478 }
4474 if (assign_type == NAMED_PROPERTY) { 4479 switch (assign_type) {
4475 // Put the object both on the stack and in the register. 4480 case NAMED_PROPERTY: {
4476 VisitForStackValue(prop->obj()); 4481 // Put the object both on the stack and in the register.
4477 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 4482 VisitForStackValue(prop->obj());
4478 EmitNamedPropertyLoad(prop); 4483 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
4479 } else if (assign_type == NAMED_SUPER_PROPERTY) { 4484 EmitNamedPropertyLoad(prop);
4480 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4485 break;
4481 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4486 }
4482 __ Push(result_register()); 4487
4483 const Register scratch = a1; 4488 case NAMED_SUPER_PROPERTY: {
4484 __ ld(scratch, MemOperand(sp, kPointerSize)); 4489 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4485 __ Push(scratch, result_register()); 4490 EmitLoadHomeObject(prop->obj()->AsSuperReference());
4486 EmitNamedSuperPropertyLoad(prop); 4491 __ Push(result_register());
4487 } else { 4492 const Register scratch = a1;
4488 VisitForStackValue(prop->obj()); 4493 __ ld(scratch, MemOperand(sp, kPointerSize));
4489 VisitForStackValue(prop->key()); 4494 __ Push(scratch, result_register());
4490 __ ld(LoadDescriptor::ReceiverRegister(), 4495 EmitNamedSuperPropertyLoad(prop);
4491 MemOperand(sp, 1 * kPointerSize)); 4496 break;
4492 __ ld(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); 4497 }
4493 EmitKeyedPropertyLoad(prop); 4498
4499 case KEYED_SUPER_PROPERTY: {
4500 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4501 EmitLoadHomeObject(prop->obj()->AsSuperReference());
4502 const Register scratch = a1;
4503 const Register scratch1 = a4;
4504 __ Move(scratch, result_register());
4505 VisitForAccumulatorValue(prop->key());
4506 __ Push(scratch, result_register());
4507 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize));
4508 __ Push(scratch1, scratch, result_register());
4509 EmitKeyedSuperPropertyLoad(prop);
4510 break;
4511 }
4512
4513 case KEYED_PROPERTY: {
4514 VisitForStackValue(prop->obj());
4515 VisitForStackValue(prop->key());
4516 __ ld(LoadDescriptor::ReceiverRegister(),
4517 MemOperand(sp, 1 * kPointerSize));
4518 __ ld(LoadDescriptor::NameRegister(), MemOperand(sp, 0));
4519 EmitKeyedPropertyLoad(prop);
4520 }
4521
4522 case VARIABLE:
4523 UNREACHABLE();
4494 } 4524 }
4495 } 4525 }
4496 4526
4497 // We need a second deoptimization point after loading the value 4527 // We need a second deoptimization point after loading the value
4498 // in case evaluating the property load my have a side effect. 4528 // in case evaluating the property load my have a side effect.
4499 if (assign_type == VARIABLE) { 4529 if (assign_type == VARIABLE) {
4500 PrepareForBailout(expr->expression(), TOS_REG); 4530 PrepareForBailout(expr->expression(), TOS_REG);
4501 } else { 4531 } else {
4502 PrepareForBailoutForId(prop->LoadId(), TOS_REG); 4532 PrepareForBailoutForId(prop->LoadId(), TOS_REG);
4503 } 4533 }
(...skipping 20 matching lines...) Expand all
4524 break; 4554 break;
4525 case NAMED_PROPERTY: 4555 case NAMED_PROPERTY:
4526 __ sd(v0, MemOperand(sp, kPointerSize)); 4556 __ sd(v0, MemOperand(sp, kPointerSize));
4527 break; 4557 break;
4528 case NAMED_SUPER_PROPERTY: 4558 case NAMED_SUPER_PROPERTY:
4529 __ sd(v0, MemOperand(sp, 2 * kPointerSize)); 4559 __ sd(v0, MemOperand(sp, 2 * kPointerSize));
4530 break; 4560 break;
4531 case KEYED_PROPERTY: 4561 case KEYED_PROPERTY:
4532 __ sd(v0, MemOperand(sp, 2 * kPointerSize)); 4562 __ sd(v0, MemOperand(sp, 2 * kPointerSize));
4533 break; 4563 break;
4564 case KEYED_SUPER_PROPERTY:
4565 __ sd(v0, MemOperand(sp, 3 * kPointerSize));
4566 break;
4534 } 4567 }
4535 } 4568 }
4536 } 4569 }
4537 4570
4538 Register scratch1 = a1; 4571 Register scratch1 = a1;
4539 Register scratch2 = a4; 4572 Register scratch2 = a4;
4540 __ li(scratch1, Operand(Smi::FromInt(count_value))); 4573 __ li(scratch1, Operand(Smi::FromInt(count_value)));
4541 __ AdduAndCheckForOverflow(v0, v0, scratch1, scratch2); 4574 __ AdduAndCheckForOverflow(v0, v0, scratch1, scratch2);
4542 __ BranchOnNoOverflow(&done, scratch2); 4575 __ BranchOnNoOverflow(&done, scratch2);
4543 // Call stub. Undo operation first. 4576 // Call stub. Undo operation first.
(...skipping 16 matching lines...) Expand all
4560 break; 4593 break;
4561 case NAMED_PROPERTY: 4594 case NAMED_PROPERTY:
4562 __ sd(v0, MemOperand(sp, kPointerSize)); 4595 __ sd(v0, MemOperand(sp, kPointerSize));
4563 break; 4596 break;
4564 case NAMED_SUPER_PROPERTY: 4597 case NAMED_SUPER_PROPERTY:
4565 __ sd(v0, MemOperand(sp, 2 * kPointerSize)); 4598 __ sd(v0, MemOperand(sp, 2 * kPointerSize));
4566 break; 4599 break;
4567 case KEYED_PROPERTY: 4600 case KEYED_PROPERTY:
4568 __ sd(v0, MemOperand(sp, 2 * kPointerSize)); 4601 __ sd(v0, MemOperand(sp, 2 * kPointerSize));
4569 break; 4602 break;
4603 case KEYED_SUPER_PROPERTY:
4604 __ sd(v0, MemOperand(sp, 3 * kPointerSize));
4605 break;
4570 } 4606 }
4571 } 4607 }
4572 } 4608 }
4573 4609
4574 __ bind(&stub_call); 4610 __ bind(&stub_call);
4575 __ mov(a1, v0); 4611 __ mov(a1, v0);
4576 __ li(a0, Operand(Smi::FromInt(count_value))); 4612 __ li(a0, Operand(Smi::FromInt(count_value)));
4577 4613
4578 // Record position before stub call. 4614 // Record position before stub call.
4579 SetSourcePosition(expr->position()); 4615 SetSourcePosition(expr->position());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4626 EmitNamedSuperPropertyStore(prop); 4662 EmitNamedSuperPropertyStore(prop);
4627 if (expr->is_postfix()) { 4663 if (expr->is_postfix()) {
4628 if (!context()->IsEffect()) { 4664 if (!context()->IsEffect()) {
4629 context()->PlugTOS(); 4665 context()->PlugTOS();
4630 } 4666 }
4631 } else { 4667 } else {
4632 context()->Plug(v0); 4668 context()->Plug(v0);
4633 } 4669 }
4634 break; 4670 break;
4635 } 4671 }
4672 case KEYED_SUPER_PROPERTY: {
4673 EmitKeyedSuperPropertyStore(prop);
4674 if (expr->is_postfix()) {
4675 if (!context()->IsEffect()) {
4676 context()->PlugTOS();
4677 }
4678 } else {
4679 context()->Plug(v0);
4680 }
4681 break;
4682 }
4636 case KEYED_PROPERTY: { 4683 case KEYED_PROPERTY: {
4637 __ mov(StoreDescriptor::ValueRegister(), result_register()); 4684 __ mov(StoreDescriptor::ValueRegister(), result_register());
4638 __ Pop(StoreDescriptor::ReceiverRegister(), 4685 __ Pop(StoreDescriptor::ReceiverRegister(),
4639 StoreDescriptor::NameRegister()); 4686 StoreDescriptor::NameRegister());
4640 Handle<Code> ic = 4687 Handle<Code> ic =
4641 CodeFactory::KeyedStoreIC(isolate(), strict_mode()).code(); 4688 CodeFactory::KeyedStoreIC(isolate(), strict_mode()).code();
4642 CallIC(ic, expr->CountStoreFeedbackId()); 4689 CallIC(ic, expr->CountStoreFeedbackId());
4643 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); 4690 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
4644 if (expr->is_postfix()) { 4691 if (expr->is_postfix()) {
4645 if (!context()->IsEffect()) { 4692 if (!context()->IsEffect()) {
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
5093 Assembler::target_address_at(pc_immediate_load_address)) == 5140 Assembler::target_address_at(pc_immediate_load_address)) ==
5094 reinterpret_cast<uint64_t>( 5141 reinterpret_cast<uint64_t>(
5095 isolate->builtins()->OsrAfterStackCheck()->entry())); 5142 isolate->builtins()->OsrAfterStackCheck()->entry()));
5096 return OSR_AFTER_STACK_CHECK; 5143 return OSR_AFTER_STACK_CHECK;
5097 } 5144 }
5098 5145
5099 5146
5100 } } // namespace v8::internal 5147 } } // namespace v8::internal
5101 5148
5102 #endif // V8_TARGET_ARCH_MIPS64 5149 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips/full-codegen-mips.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698