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

Side by Side Diff: src/mips/full-codegen-mips.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 | « no previous file | src/mips64/full-codegen-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 // Note on Mips implementation: 9 // Note on Mips implementation:
10 // 10 //
(...skipping 1860 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 context()->Plug(v0); 1871 context()->Plug(v0);
1872 } 1872 }
1873 } 1873 }
1874 1874
1875 1875
1876 void FullCodeGenerator::VisitAssignment(Assignment* expr) { 1876 void FullCodeGenerator::VisitAssignment(Assignment* expr) {
1877 DCHECK(expr->target()->IsValidReferenceExpression()); 1877 DCHECK(expr->target()->IsValidReferenceExpression());
1878 1878
1879 Comment cmnt(masm_, "[ Assignment"); 1879 Comment cmnt(masm_, "[ Assignment");
1880 1880
1881 // Left-hand side can only be a property, a global or a (parameter or local)
1882 // slot.
1883 enum LhsKind {
1884 VARIABLE,
1885 NAMED_PROPERTY,
1886 KEYED_PROPERTY,
1887 NAMED_SUPER_PROPERTY
1888 };
1889 LhsKind assign_type = VARIABLE;
1890 Property* property = expr->target()->AsProperty(); 1881 Property* property = expr->target()->AsProperty();
1891 if (property != NULL) { 1882 LhsKind assign_type = GetAssignType(property);
1892 assign_type = (property->key()->IsPropertyName())
1893 ? (property->IsSuperAccess() ? NAMED_SUPER_PROPERTY
1894 : NAMED_PROPERTY)
1895 : KEYED_PROPERTY;
1896 }
1897 1883
1898 // Evaluate LHS expression. 1884 // Evaluate LHS expression.
1899 switch (assign_type) { 1885 switch (assign_type) {
1900 case VARIABLE: 1886 case VARIABLE:
1901 // Nothing to do here. 1887 // Nothing to do here.
1902 break; 1888 break;
1903 case NAMED_PROPERTY: 1889 case NAMED_PROPERTY:
1904 if (expr->is_compound()) { 1890 if (expr->is_compound()) {
1905 // We need the receiver both on the stack and in the register. 1891 // We need the receiver both on the stack and in the register.
1906 VisitForStackValue(property->obj()); 1892 VisitForStackValue(property->obj());
1907 __ lw(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 1893 __ lw(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
1908 } else { 1894 } else {
1909 VisitForStackValue(property->obj()); 1895 VisitForStackValue(property->obj());
1910 } 1896 }
1911 break; 1897 break;
1912 case NAMED_SUPER_PROPERTY: 1898 case NAMED_SUPER_PROPERTY:
1913 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1899 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1914 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1900 EmitLoadHomeObject(property->obj()->AsSuperReference());
1915 __ Push(result_register()); 1901 __ Push(result_register());
1916 if (expr->is_compound()) { 1902 if (expr->is_compound()) {
1917 const Register scratch = a1; 1903 const Register scratch = a1;
1918 __ lw(scratch, MemOperand(sp, kPointerSize)); 1904 __ lw(scratch, MemOperand(sp, kPointerSize));
1919 __ Push(scratch, result_register()); 1905 __ Push(scratch, result_register());
1920 } 1906 }
1921 break; 1907 break;
1908 case KEYED_SUPER_PROPERTY: {
1909 const Register scratch = a1;
1910 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1911 EmitLoadHomeObject(property->obj()->AsSuperReference());
1912 __ Move(scratch, result_register());
1913 VisitForAccumulatorValue(property->key());
1914 __ Push(scratch, result_register());
1915 if (expr->is_compound()) {
1916 const Register scratch1 = t0;
1917 __ lw(scratch1, MemOperand(sp, 2 * kPointerSize));
1918 __ Push(scratch1, scratch, result_register());
1919 }
1920 break;
1921 }
1922 case KEYED_PROPERTY: 1922 case KEYED_PROPERTY:
1923 // We need the key and receiver on both the stack and in v0 and a1. 1923 // We need the key and receiver on both the stack and in v0 and a1.
1924 if (expr->is_compound()) { 1924 if (expr->is_compound()) {
1925 VisitForStackValue(property->obj()); 1925 VisitForStackValue(property->obj());
1926 VisitForStackValue(property->key()); 1926 VisitForStackValue(property->key());
1927 __ lw(LoadDescriptor::ReceiverRegister(), 1927 __ lw(LoadDescriptor::ReceiverRegister(),
1928 MemOperand(sp, 1 * kPointerSize)); 1928 MemOperand(sp, 1 * kPointerSize));
1929 __ lw(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); 1929 __ lw(LoadDescriptor::NameRegister(), MemOperand(sp, 0));
1930 } else { 1930 } else {
1931 VisitForStackValue(property->obj()); 1931 VisitForStackValue(property->obj());
(...skipping 12 matching lines...) Expand all
1944 PrepareForBailout(expr->target(), TOS_REG); 1944 PrepareForBailout(expr->target(), TOS_REG);
1945 break; 1945 break;
1946 case NAMED_PROPERTY: 1946 case NAMED_PROPERTY:
1947 EmitNamedPropertyLoad(property); 1947 EmitNamedPropertyLoad(property);
1948 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1948 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1949 break; 1949 break;
1950 case NAMED_SUPER_PROPERTY: 1950 case NAMED_SUPER_PROPERTY:
1951 EmitNamedSuperPropertyLoad(property); 1951 EmitNamedSuperPropertyLoad(property);
1952 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1952 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1953 break; 1953 break;
1954 case KEYED_SUPER_PROPERTY:
1955 EmitKeyedSuperPropertyLoad(property);
1956 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1957 break;
1954 case KEYED_PROPERTY: 1958 case KEYED_PROPERTY:
1955 EmitKeyedPropertyLoad(property); 1959 EmitKeyedPropertyLoad(property);
1956 PrepareForBailoutForId(property->LoadId(), TOS_REG); 1960 PrepareForBailoutForId(property->LoadId(), TOS_REG);
1957 break; 1961 break;
1958 } 1962 }
1959 } 1963 }
1960 1964
1961 Token::Value op = expr->binary_op(); 1965 Token::Value op = expr->binary_op();
1962 __ push(v0); // Left operand goes on the stack. 1966 __ push(v0); // Left operand goes on the stack.
1963 VisitForAccumulatorValue(expr->value()); 1967 VisitForAccumulatorValue(expr->value());
(...skipping 30 matching lines...) Expand all
1994 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); 1998 PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
1995 context()->Plug(v0); 1999 context()->Plug(v0);
1996 break; 2000 break;
1997 case NAMED_PROPERTY: 2001 case NAMED_PROPERTY:
1998 EmitNamedPropertyAssignment(expr); 2002 EmitNamedPropertyAssignment(expr);
1999 break; 2003 break;
2000 case NAMED_SUPER_PROPERTY: 2004 case NAMED_SUPER_PROPERTY:
2001 EmitNamedSuperPropertyStore(property); 2005 EmitNamedSuperPropertyStore(property);
2002 context()->Plug(v0); 2006 context()->Plug(v0);
2003 break; 2007 break;
2008 case KEYED_SUPER_PROPERTY:
2009 EmitKeyedSuperPropertyStore(property);
2010 context()->Plug(v0);
2011 break;
2004 case KEYED_PROPERTY: 2012 case KEYED_PROPERTY:
2005 EmitKeyedPropertyAssignment(expr); 2013 EmitKeyedPropertyAssignment(expr);
2006 break; 2014 break;
2007 } 2015 }
2008 } 2016 }
2009 2017
2010 2018
2011 void FullCodeGenerator::VisitYield(Yield* expr) { 2019 void FullCodeGenerator::VisitYield(Yield* expr) {
2012 Comment cmnt(masm_, "[ Yield"); 2020 Comment cmnt(masm_, "[ Yield");
2013 // Evaluate yielded value first; the initial iterator definition depends on 2021 // Evaluate yielded value first; the initial iterator definition depends on
(...skipping 615 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 __ lw(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 4482 VisitForStackValue(prop->obj());
4478 EmitNamedPropertyLoad(prop); 4483 __ lw(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 __ lw(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 __ lw(scratch, MemOperand(sp, kPointerSize));
4489 VisitForStackValue(prop->key()); 4494 __ Push(scratch, result_register());
4490 __ lw(LoadDescriptor::ReceiverRegister(), 4495 EmitNamedSuperPropertyLoad(prop);
4491 MemOperand(sp, 1 * kPointerSize)); 4496 break;
4492 __ lw(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 = t0;
4504 __ Move(scratch, result_register());
4505 VisitForAccumulatorValue(prop->key());
4506 __ Push(scratch, result_register());
4507 __ lw(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 __ lw(LoadDescriptor::ReceiverRegister(),
4517 MemOperand(sp, 1 * kPointerSize));
4518 __ lw(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 __ sw(v0, MemOperand(sp, kPointerSize)); 4556 __ sw(v0, MemOperand(sp, kPointerSize));
4527 break; 4557 break;
4528 case NAMED_SUPER_PROPERTY: 4558 case NAMED_SUPER_PROPERTY:
4529 __ sw(v0, MemOperand(sp, 2 * kPointerSize)); 4559 __ sw(v0, MemOperand(sp, 2 * kPointerSize));
4530 break; 4560 break;
4531 case KEYED_PROPERTY: 4561 case KEYED_PROPERTY:
4532 __ sw(v0, MemOperand(sp, 2 * kPointerSize)); 4562 __ sw(v0, MemOperand(sp, 2 * kPointerSize));
4533 break; 4563 break;
4564 case KEYED_SUPER_PROPERTY:
4565 __ sw(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 = t0; 4572 Register scratch2 = t0;
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 __ sw(v0, MemOperand(sp, kPointerSize)); 4595 __ sw(v0, MemOperand(sp, kPointerSize));
4563 break; 4596 break;
4564 case NAMED_SUPER_PROPERTY: 4597 case NAMED_SUPER_PROPERTY:
4565 __ sw(v0, MemOperand(sp, 2 * kPointerSize)); 4598 __ sw(v0, MemOperand(sp, 2 * kPointerSize));
4566 break; 4599 break;
4567 case KEYED_PROPERTY: 4600 case KEYED_PROPERTY:
4568 __ sw(v0, MemOperand(sp, 2 * kPointerSize)); 4601 __ sw(v0, MemOperand(sp, 2 * kPointerSize));
4569 break; 4602 break;
4603 case KEYED_SUPER_PROPERTY:
4604 __ sw(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 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
5089 Assembler::target_address_at(pc_immediate_load_address)) == 5136 Assembler::target_address_at(pc_immediate_load_address)) ==
5090 reinterpret_cast<uint32_t>( 5137 reinterpret_cast<uint32_t>(
5091 isolate->builtins()->OsrAfterStackCheck()->entry())); 5138 isolate->builtins()->OsrAfterStackCheck()->entry()));
5092 return OSR_AFTER_STACK_CHECK; 5139 return OSR_AFTER_STACK_CHECK;
5093 } 5140 }
5094 5141
5095 5142
5096 } } // namespace v8::internal 5143 } } // namespace v8::internal
5097 5144
5098 #endif // V8_TARGET_ARCH_MIPS 5145 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « no previous file | src/mips64/full-codegen-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698