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

Side by Side Diff: src/mips/stub-cache-mips.cc

Issue 7006021: MIPS: port Fix a number of IC stubs to correctly set the call kind. (Closed)
Patch Set: Created 9 years, 6 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
« no previous file with comments | « src/mips/macro-assembler-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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 } 465 }
466 466
467 Handle<Code> ic(code); 467 Handle<Code> ic(code);
468 __ Jump(ic, RelocInfo::CODE_TARGET); 468 __ Jump(ic, RelocInfo::CODE_TARGET);
469 } 469 }
470 470
471 471
472 static void GenerateCallFunction(MacroAssembler* masm, 472 static void GenerateCallFunction(MacroAssembler* masm,
473 Object* object, 473 Object* object,
474 const ParameterCount& arguments, 474 const ParameterCount& arguments,
475 Label* miss) { 475 Label* miss,
476 Code::ExtraICState extra_ic_state) {
476 // ----------- S t a t e ------------- 477 // ----------- S t a t e -------------
477 // -- a0: receiver 478 // -- a0: receiver
478 // -- a1: function to call 479 // -- a1: function to call
479 // ----------------------------------- 480 // -----------------------------------
480 // Check that the function really is a function. 481 // Check that the function really is a function.
481 __ JumpIfSmi(a1, miss); 482 __ JumpIfSmi(a1, miss);
482 __ GetObjectType(a1, a3, a3); 483 __ GetObjectType(a1, a3, a3);
483 __ Branch(miss, ne, a3, Operand(JS_FUNCTION_TYPE)); 484 __ Branch(miss, ne, a3, Operand(JS_FUNCTION_TYPE));
484 485
485 // Patch the receiver on the stack with the global proxy if 486 // Patch the receiver on the stack with the global proxy if
486 // necessary. 487 // necessary.
487 if (object->IsGlobalObject()) { 488 if (object->IsGlobalObject()) {
488 __ lw(a3, FieldMemOperand(a0, GlobalObject::kGlobalReceiverOffset)); 489 __ lw(a3, FieldMemOperand(a0, GlobalObject::kGlobalReceiverOffset));
489 __ sw(a3, MemOperand(sp, arguments.immediate() * kPointerSize)); 490 __ sw(a3, MemOperand(sp, arguments.immediate() * kPointerSize));
490 } 491 }
491 492
492 // Invoke the function. 493 // Invoke the function.
493 __ InvokeFunction(a1, arguments, JUMP_FUNCTION); 494 CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state)
495 ? CALL_AS_FUNCTION
496 : CALL_AS_METHOD;
497 __ InvokeFunction(a1, arguments, JUMP_FUNCTION, NullCallWrapper(), call_kind);
494 } 498 }
495 499
496 500
497 static void PushInterceptorArguments(MacroAssembler* masm, 501 static void PushInterceptorArguments(MacroAssembler* masm,
498 Register receiver, 502 Register receiver,
499 Register holder, 503 Register holder,
500 Register name, 504 Register name,
501 JSObject* holder_obj) { 505 JSObject* holder_obj) {
502 __ push(name); 506 __ push(name);
503 InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor(); 507 InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor();
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 ExternalReference(&fun, 626 ExternalReference(&fun,
623 ExternalReference::DIRECT_API_CALL, 627 ExternalReference::DIRECT_API_CALL,
624 masm->isolate()); 628 masm->isolate());
625 return masm->TryCallApiFunctionAndReturn(ref, kStackUnwindSpace); 629 return masm->TryCallApiFunctionAndReturn(ref, kStackUnwindSpace);
626 } 630 }
627 631
628 class CallInterceptorCompiler BASE_EMBEDDED { 632 class CallInterceptorCompiler BASE_EMBEDDED {
629 public: 633 public:
630 CallInterceptorCompiler(StubCompiler* stub_compiler, 634 CallInterceptorCompiler(StubCompiler* stub_compiler,
631 const ParameterCount& arguments, 635 const ParameterCount& arguments,
632 Register name) 636 Register name,
637 Code::ExtraICState extra_ic_state)
633 : stub_compiler_(stub_compiler), 638 : stub_compiler_(stub_compiler),
634 arguments_(arguments), 639 arguments_(arguments),
635 name_(name) {} 640 name_(name),
641 extra_ic_state_(extra_ic_state) {}
636 642
637 MaybeObject* Compile(MacroAssembler* masm, 643 MaybeObject* Compile(MacroAssembler* masm,
638 JSObject* object, 644 JSObject* object,
639 JSObject* holder, 645 JSObject* holder,
640 String* name, 646 String* name,
641 LookupResult* lookup, 647 LookupResult* lookup,
642 Register receiver, 648 Register receiver,
643 Register scratch1, 649 Register scratch1,
644 Register scratch2, 650 Register scratch2,
645 Register scratch3, 651 Register scratch3,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 ASSERT(depth2 == kInvalidProtoDepth); 759 ASSERT(depth2 == kInvalidProtoDepth);
754 } 760 }
755 761
756 // Invoke function. 762 // Invoke function.
757 if (can_do_fast_api_call) { 763 if (can_do_fast_api_call) {
758 MaybeObject* result = GenerateFastApiDirectCall(masm, 764 MaybeObject* result = GenerateFastApiDirectCall(masm,
759 optimization, 765 optimization,
760 arguments_.immediate()); 766 arguments_.immediate());
761 if (result->IsFailure()) return result; 767 if (result->IsFailure()) return result;
762 } else { 768 } else {
769 CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state_)
770 ? CALL_AS_FUNCTION
771 : CALL_AS_METHOD;
763 __ InvokeFunction(optimization.constant_function(), arguments_, 772 __ InvokeFunction(optimization.constant_function(), arguments_,
764 JUMP_FUNCTION); 773 JUMP_FUNCTION, call_kind);
765 } 774 }
766 775
767 // Deferred code for fast API call case---clean preallocated space. 776 // Deferred code for fast API call case---clean preallocated space.
768 if (can_do_fast_api_call) { 777 if (can_do_fast_api_call) {
769 __ bind(&miss_cleanup); 778 __ bind(&miss_cleanup);
770 FreeSpaceForFastApiCall(masm); 779 FreeSpaceForFastApiCall(masm);
771 __ Branch(miss_label); 780 __ Branch(miss_label);
772 } 781 }
773 782
774 // Invoke a regular function. 783 // Invoke a regular function.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 __ LeaveInternalFrame(); 846 __ LeaveInternalFrame();
838 847
839 // If interceptor returns no-result sentinel, call the constant function. 848 // If interceptor returns no-result sentinel, call the constant function.
840 __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex); 849 __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex);
841 __ Branch(interceptor_succeeded, ne, v0, Operand(scratch)); 850 __ Branch(interceptor_succeeded, ne, v0, Operand(scratch));
842 } 851 }
843 852
844 StubCompiler* stub_compiler_; 853 StubCompiler* stub_compiler_;
845 const ParameterCount& arguments_; 854 const ParameterCount& arguments_;
846 Register name_; 855 Register name_;
856 Code::ExtraICState extra_ic_state_;
847 }; 857 };
848 858
849 859
850 860
851 // Generate code to check that a global property cell is empty. Create 861 // Generate code to check that a global property cell is empty. Create
852 // the property cell at compilation time if no cell exists for the 862 // the property cell at compilation time if no cell exists for the
853 // property. 863 // property.
854 MUST_USE_RESULT static MaybeObject* GenerateCheckPropertyCell( 864 MUST_USE_RESULT static MaybeObject* GenerateCheckPropertyCell(
855 MacroAssembler* masm, 865 MacroAssembler* masm,
856 GlobalObject* global, 866 GlobalObject* global,
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 1506
1497 // Get the receiver of the function from the stack into a0. 1507 // Get the receiver of the function from the stack into a0.
1498 __ lw(a0, MemOperand(sp, argc * kPointerSize)); 1508 __ lw(a0, MemOperand(sp, argc * kPointerSize));
1499 // Check that the receiver isn't a smi. 1509 // Check that the receiver isn't a smi.
1500 __ JumpIfSmi(a0, &miss, t0); 1510 __ JumpIfSmi(a0, &miss, t0);
1501 1511
1502 // Do the right check and compute the holder register. 1512 // Do the right check and compute the holder register.
1503 Register reg = CheckPrototypes(object, a0, holder, a1, a3, t0, name, &miss); 1513 Register reg = CheckPrototypes(object, a0, holder, a1, a3, t0, name, &miss);
1504 GenerateFastPropertyLoad(masm(), a1, reg, holder, index); 1514 GenerateFastPropertyLoad(masm(), a1, reg, holder, index);
1505 1515
1506 GenerateCallFunction(masm(), object, arguments(), &miss); 1516 GenerateCallFunction(masm(), object, arguments(), &miss, extra_ic_state_);
1507 1517
1508 // Handle call cache miss. 1518 // Handle call cache miss.
1509 __ bind(&miss); 1519 __ bind(&miss);
1510 MaybeObject* maybe_result = GenerateMissBranch(); 1520 MaybeObject* maybe_result = GenerateMissBranch();
1511 if (maybe_result->IsFailure()) return maybe_result; 1521 if (maybe_result->IsFailure()) return maybe_result;
1512 1522
1513 // Return the generated code. 1523 // Return the generated code.
1514 return GetCode(FIELD, name); 1524 return GetCode(FIELD, name);
1515 } 1525 }
1516 1526
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 char_from_code_generator.GenerateFast(masm()); 2004 char_from_code_generator.GenerateFast(masm());
1995 __ Drop(argc + 1); 2005 __ Drop(argc + 1);
1996 __ Ret(); 2006 __ Ret();
1997 2007
1998 StubRuntimeCallHelper call_helper; 2008 StubRuntimeCallHelper call_helper;
1999 char_from_code_generator.GenerateSlow(masm(), call_helper); 2009 char_from_code_generator.GenerateSlow(masm(), call_helper);
2000 2010
2001 // Tail call the full function. We do not have to patch the receiver 2011 // Tail call the full function. We do not have to patch the receiver
2002 // because the function makes no use of it. 2012 // because the function makes no use of it.
2003 __ bind(&slow); 2013 __ bind(&slow);
2004 __ InvokeFunction(function, arguments(), JUMP_FUNCTION); 2014 __ InvokeFunction(function, arguments(), JUMP_FUNCTION, CALL_AS_METHOD);
2005 2015
2006 __ bind(&miss); 2016 __ bind(&miss);
2007 // a2: function name. 2017 // a2: function name.
2008 MaybeObject* maybe_result = GenerateMissBranch(); 2018 MaybeObject* maybe_result = GenerateMissBranch();
2009 if (maybe_result->IsFailure()) return maybe_result; 2019 if (maybe_result->IsFailure()) return maybe_result;
2010 2020
2011 // Return the generated code. 2021 // Return the generated code.
2012 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name); 2022 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name);
2013 } 2023 }
2014 2024
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 __ Drop(argc + 1); 2140 __ Drop(argc + 1);
2131 __ Ret(); 2141 __ Ret();
2132 2142
2133 __ bind(&wont_fit_smi); 2143 __ bind(&wont_fit_smi);
2134 // Restore FCSR and fall to slow case. 2144 // Restore FCSR and fall to slow case.
2135 __ ctc1(a3, FCSR); 2145 __ ctc1(a3, FCSR);
2136 2146
2137 __ bind(&slow); 2147 __ bind(&slow);
2138 // Tail call the full function. We do not have to patch the receiver 2148 // Tail call the full function. We do not have to patch the receiver
2139 // because the function makes no use of it. 2149 // because the function makes no use of it.
2140 __ InvokeFunction(function, arguments(), JUMP_FUNCTION); 2150 __ InvokeFunction(function, arguments(), JUMP_FUNCTION, CALL_AS_METHOD);
2141 2151
2142 __ bind(&miss); 2152 __ bind(&miss);
2143 // a2: function name. 2153 // a2: function name.
2144 MaybeObject* obj = GenerateMissBranch(); 2154 MaybeObject* obj = GenerateMissBranch();
2145 if (obj->IsFailure()) return obj; 2155 if (obj->IsFailure()) return obj;
2146 2156
2147 // Return the generated code. 2157 // Return the generated code.
2148 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name); 2158 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name);
2149 } 2159 }
2150 2160
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
2232 __ LoadRoot(t2, Heap::kHeapNumberMapRootIndex); 2242 __ LoadRoot(t2, Heap::kHeapNumberMapRootIndex);
2233 __ AllocateHeapNumber(v0, t0, t1, t2, &slow); 2243 __ AllocateHeapNumber(v0, t0, t1, t2, &slow);
2234 __ sw(a1, FieldMemOperand(v0, HeapNumber::kExponentOffset)); 2244 __ sw(a1, FieldMemOperand(v0, HeapNumber::kExponentOffset));
2235 __ sw(a3, FieldMemOperand(v0, HeapNumber::kMantissaOffset)); 2245 __ sw(a3, FieldMemOperand(v0, HeapNumber::kMantissaOffset));
2236 __ Drop(argc + 1); 2246 __ Drop(argc + 1);
2237 __ Ret(); 2247 __ Ret();
2238 2248
2239 // Tail call the full function. We do not have to patch the receiver 2249 // Tail call the full function. We do not have to patch the receiver
2240 // because the function makes no use of it. 2250 // because the function makes no use of it.
2241 __ bind(&slow); 2251 __ bind(&slow);
2242 __ InvokeFunction(function, arguments(), JUMP_FUNCTION); 2252 __ InvokeFunction(function, arguments(), JUMP_FUNCTION, CALL_AS_METHOD);
2243 2253
2244 __ bind(&miss); 2254 __ bind(&miss);
2245 // a2: function name. 2255 // a2: function name.
2246 MaybeObject* maybe_result = GenerateMissBranch(); 2256 MaybeObject* maybe_result = GenerateMissBranch();
2247 if (maybe_result->IsFailure()) return maybe_result; 2257 if (maybe_result->IsFailure()) return maybe_result;
2248 2258
2249 // Return the generated code. 2259 // Return the generated code.
2250 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name); 2260 return (cell == NULL) ? GetCode(function) : GetCode(NORMAL, name);
2251 } 2261 }
2252 2262
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 CheckPrototypes(JSObject::cast(object->GetPrototype()), a0, holder, a3, 2428 CheckPrototypes(JSObject::cast(object->GetPrototype()), a0, holder, a3,
2419 a1, t0, name, &miss); 2429 a1, t0, name, &miss);
2420 } 2430 }
2421 break; 2431 break;
2422 } 2432 }
2423 2433
2424 default: 2434 default:
2425 UNREACHABLE(); 2435 UNREACHABLE();
2426 } 2436 }
2427 2437
2428 __ InvokeFunction(function, arguments(), JUMP_FUNCTION); 2438 CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state_)
2439 ? CALL_AS_FUNCTION
2440 : CALL_AS_METHOD;
2441 __ InvokeFunction(function, arguments(), JUMP_FUNCTION, call_kind);
2429 2442
2430 // Handle call cache miss. 2443 // Handle call cache miss.
2431 __ bind(&miss); 2444 __ bind(&miss);
2432 2445
2433 MaybeObject* maybe_result = GenerateMissBranch(); 2446 MaybeObject* maybe_result = GenerateMissBranch();
2434 if (maybe_result->IsFailure()) return maybe_result; 2447 if (maybe_result->IsFailure()) return maybe_result;
2435 2448
2436 // Return the generated code. 2449 // Return the generated code.
2437 return GetCode(function); 2450 return GetCode(function);
2438 } 2451 }
(...skipping 13 matching lines...) Expand all
2452 2465
2453 // Get the number of arguments. 2466 // Get the number of arguments.
2454 const int argc = arguments().immediate(); 2467 const int argc = arguments().immediate();
2455 2468
2456 LookupResult lookup; 2469 LookupResult lookup;
2457 LookupPostInterceptor(holder, name, &lookup); 2470 LookupPostInterceptor(holder, name, &lookup);
2458 2471
2459 // Get the receiver from the stack. 2472 // Get the receiver from the stack.
2460 __ lw(a1, MemOperand(sp, argc * kPointerSize)); 2473 __ lw(a1, MemOperand(sp, argc * kPointerSize));
2461 2474
2462 CallInterceptorCompiler compiler(this, arguments(), a2); 2475 CallInterceptorCompiler compiler(this, arguments(), a2, extra_ic_state_);
2463 MaybeObject* result = compiler.Compile(masm(), 2476 MaybeObject* result = compiler.Compile(masm(),
2464 object, 2477 object,
2465 holder, 2478 holder,
2466 name, 2479 name,
2467 &lookup, 2480 &lookup,
2468 a1, 2481 a1,
2469 a3, 2482 a3,
2470 t0, 2483 t0,
2471 a0, 2484 a0,
2472 &miss); 2485 &miss);
2473 if (result->IsFailure()) { 2486 if (result->IsFailure()) {
2474 return result; 2487 return result;
2475 } 2488 }
2476 2489
2477 // Move returned value, the function to call, to a1. 2490 // Move returned value, the function to call, to a1.
2478 __ mov(a1, v0); 2491 __ mov(a1, v0);
2479 // Restore receiver. 2492 // Restore receiver.
2480 __ lw(a0, MemOperand(sp, argc * kPointerSize)); 2493 __ lw(a0, MemOperand(sp, argc * kPointerSize));
2481 2494
2482 GenerateCallFunction(masm(), object, arguments(), &miss); 2495 GenerateCallFunction(masm(), object, arguments(), &miss, extra_ic_state_);
2483 2496
2484 // Handle call cache miss. 2497 // Handle call cache miss.
2485 __ bind(&miss); 2498 __ bind(&miss);
2486 MaybeObject* maybe_result = GenerateMissBranch(); 2499 MaybeObject* maybe_result = GenerateMissBranch();
2487 if (maybe_result->IsFailure()) return maybe_result; 2500 if (maybe_result->IsFailure()) return maybe_result;
2488 2501
2489 // Return the generated code. 2502 // Return the generated code.
2490 return GetCode(INTERCEPTOR, name); 2503 return GetCode(INTERCEPTOR, name);
2491 } 2504 }
2492 2505
2493 2506
2494 MaybeObject* CallStubCompiler::CompileCallGlobal( 2507 MaybeObject* CallStubCompiler::CompileCallGlobal(JSObject* object,
2495 JSObject* object, 2508 GlobalObject* holder,
2496 GlobalObject* holder, 2509 JSGlobalPropertyCell* cell,
2497 JSGlobalPropertyCell* cell, 2510 JSFunction* function,
2498 JSFunction* function, 2511 String* name) {
2499 String* name,
2500 Code::ExtraICState extra_ic_state) {
2501 // ----------- S t a t e ------------- 2512 // ----------- S t a t e -------------
2502 // -- a2 : name 2513 // -- a2 : name
2503 // -- ra : return address 2514 // -- ra : return address
2504 // ----------------------------------- 2515 // -----------------------------------
2505 2516
2506 if (HasCustomCallGenerator(function)) { 2517 if (HasCustomCallGenerator(function)) {
2507 MaybeObject* maybe_result = CompileCustomCall( 2518 MaybeObject* maybe_result = CompileCustomCall(
2508 object, holder, cell, function, name); 2519 object, holder, cell, function, name);
2509 Object* result; 2520 Object* result;
2510 if (!maybe_result->ToObject(&result)) return maybe_result; 2521 if (!maybe_result->ToObject(&result)) return maybe_result;
(...skipping 20 matching lines...) Expand all
2531 2542
2532 // Setup the context (function already in r1). 2543 // Setup the context (function already in r1).
2533 __ lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); 2544 __ lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
2534 2545
2535 // Jump to the cached code (tail call). 2546 // Jump to the cached code (tail call).
2536 Counters* counters = masm()->isolate()->counters(); 2547 Counters* counters = masm()->isolate()->counters();
2537 __ IncrementCounter(counters->call_global_inline(), 1, a3, t0); 2548 __ IncrementCounter(counters->call_global_inline(), 1, a3, t0);
2538 ASSERT(function->is_compiled()); 2549 ASSERT(function->is_compiled());
2539 Handle<Code> code(function->code()); 2550 Handle<Code> code(function->code());
2540 ParameterCount expected(function->shared()->formal_parameter_count()); 2551 ParameterCount expected(function->shared()->formal_parameter_count());
2541 CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state) 2552 CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state_)
2542 ? CALL_AS_FUNCTION 2553 ? CALL_AS_FUNCTION
2543 : CALL_AS_METHOD; 2554 : CALL_AS_METHOD;
2544 if (V8::UseCrankshaft()) { 2555 if (V8::UseCrankshaft()) {
2545 UNIMPLEMENTED_MIPS(); 2556 UNIMPLEMENTED_MIPS();
2546 } else { 2557 } else {
2547 __ InvokeCode(code, expected, arguments(), RelocInfo::CODE_TARGET, 2558 __ InvokeCode(code, expected, arguments(), RelocInfo::CODE_TARGET,
2548 JUMP_FUNCTION, call_kind); 2559 JUMP_FUNCTION, call_kind);
2549 } 2560 }
2550 2561
2551 // Handle call cache miss. 2562 // Handle call cache miss.
(...skipping 1724 matching lines...) Expand 10 before | Expand all | Expand 10 after
4276 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); 4287 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric();
4277 __ Jump(ic, RelocInfo::CODE_TARGET); 4288 __ Jump(ic, RelocInfo::CODE_TARGET);
4278 } 4289 }
4279 4290
4280 4291
4281 #undef __ 4292 #undef __
4282 4293
4283 } } // namespace v8::internal 4294 } } // namespace v8::internal
4284 4295
4285 #endif // V8_TARGET_ARCH_MIPS 4296 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/macro-assembler-mips.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698