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

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 565873002: Removing ic.h from code-stubs.h (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE and mips. Created 6 years, 3 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/arm/lithium-codegen-arm.cc ('k') | src/arm64/full-codegen-arm64.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
11 #include "src/codegen.h" 11 #include "src/codegen.h"
12 #include "src/ic/handler-compiler.h" 12 #include "src/ic/handler-compiler.h"
13 #include "src/ic/ic.h"
13 #include "src/isolate.h" 14 #include "src/isolate.h"
14 #include "src/jsregexp.h" 15 #include "src/jsregexp.h"
15 #include "src/regexp-macro-assembler.h" 16 #include "src/regexp-macro-assembler.h"
16 #include "src/runtime.h" 17 #include "src/runtime.h"
17 18
18 namespace v8 { 19 namespace v8 {
19 namespace internal { 20 namespace internal {
20 21
21 22
22 static void InitializeArrayConstructorDescriptor( 23 static void InitializeArrayConstructorDescriptor(
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 __ Ldrb(left_bitfield, FieldMemOperand(left_map, Map::kBitFieldOffset)); 466 __ Ldrb(left_bitfield, FieldMemOperand(left_map, Map::kBitFieldOffset));
466 __ And(result, right_bitfield, left_bitfield); 467 __ And(result, right_bitfield, left_bitfield);
467 __ And(result, result, 1 << Map::kIsUndetectable); 468 __ And(result, result, 1 << Map::kIsUndetectable);
468 __ Eor(result, result, 1 << Map::kIsUndetectable); 469 __ Eor(result, result, 1 << Map::kIsUndetectable);
469 __ Ret(); 470 __ Ret();
470 } 471 }
471 472
472 473
473 static void CompareICStub_CheckInputType(MacroAssembler* masm, Register input, 474 static void CompareICStub_CheckInputType(MacroAssembler* masm, Register input,
474 Register scratch, 475 Register scratch,
475 CompareIC::State expected, 476 CompareICState::State expected,
476 Label* fail) { 477 Label* fail) {
477 Label ok; 478 Label ok;
478 if (expected == CompareIC::SMI) { 479 if (expected == CompareICState::SMI) {
479 __ JumpIfNotSmi(input, fail); 480 __ JumpIfNotSmi(input, fail);
480 } else if (expected == CompareIC::NUMBER) { 481 } else if (expected == CompareICState::NUMBER) {
481 __ JumpIfSmi(input, &ok); 482 __ JumpIfSmi(input, &ok);
482 __ CheckMap(input, scratch, Heap::kHeapNumberMapRootIndex, fail, 483 __ CheckMap(input, scratch, Heap::kHeapNumberMapRootIndex, fail,
483 DONT_DO_SMI_CHECK); 484 DONT_DO_SMI_CHECK);
484 } 485 }
485 // We could be strict about internalized/non-internalized here, but as long as 486 // We could be strict about internalized/non-internalized here, but as long as
486 // hydrogen doesn't care, the stub doesn't have to care either. 487 // hydrogen doesn't care, the stub doesn't have to care either.
487 __ Bind(&ok); 488 __ Bind(&ok);
488 } 489 }
489 490
490 491
(...skipping 2455 matching lines...) Expand 10 before | Expand all | Expand 10 after
2946 Register map = x5; 2947 Register map = x5;
2947 __ Ldr(map, FieldMemOperand(scratch, HeapObject::kMapOffset)); 2948 __ Ldr(map, FieldMemOperand(scratch, HeapObject::kMapOffset));
2948 __ JumpIfNotRoot(map, Heap::kAllocationSiteMapRootIndex, &miss); 2949 __ JumpIfNotRoot(map, Heap::kAllocationSiteMapRootIndex, &miss);
2949 2950
2950 Register allocation_site = feedback_vector; 2951 Register allocation_site = feedback_vector;
2951 __ Mov(allocation_site, scratch); 2952 __ Mov(allocation_site, scratch);
2952 ArrayConstructorStub stub(masm->isolate(), arg_count()); 2953 ArrayConstructorStub stub(masm->isolate(), arg_count());
2953 __ TailCallStub(&stub); 2954 __ TailCallStub(&stub);
2954 2955
2955 __ bind(&miss); 2956 __ bind(&miss);
2956 GenerateMiss(masm, IC::kCallIC_Customization_Miss); 2957 GenerateMiss(masm);
2957 2958
2958 // The slow case, we need this no matter what to complete a call after a miss. 2959 // The slow case, we need this no matter what to complete a call after a miss.
2959 CallFunctionNoFeedback(masm, 2960 CallFunctionNoFeedback(masm,
2960 arg_count(), 2961 arg_count(),
2961 true, 2962 true,
2962 CallAsMethod()); 2963 CallAsMethod());
2963 2964
2964 __ Unreachable(); 2965 __ Unreachable();
2965 } 2966 }
2966 2967
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
3030 __ JumpIfNotObjectType(x4, x5, x5, JS_FUNCTION_TYPE, &miss); 3031 __ JumpIfNotObjectType(x4, x5, x5, JS_FUNCTION_TYPE, &miss);
3031 __ Add(x4, feedback_vector, 3032 __ Add(x4, feedback_vector,
3032 Operand::UntagSmiAndScale(index, kPointerSizeLog2)); 3033 Operand::UntagSmiAndScale(index, kPointerSizeLog2));
3033 __ LoadRoot(x5, Heap::kMegamorphicSymbolRootIndex); 3034 __ LoadRoot(x5, Heap::kMegamorphicSymbolRootIndex);
3034 __ Str(x5, FieldMemOperand(x4, FixedArray::kHeaderSize)); 3035 __ Str(x5, FieldMemOperand(x4, FixedArray::kHeaderSize));
3035 __ B(&slow_start); 3036 __ B(&slow_start);
3036 } 3037 }
3037 3038
3038 // We are here because tracing is on or we are going monomorphic. 3039 // We are here because tracing is on or we are going monomorphic.
3039 __ bind(&miss); 3040 __ bind(&miss);
3040 GenerateMiss(masm, IC::kCallIC_Miss); 3041 GenerateMiss(masm);
3041 3042
3042 // the slow case 3043 // the slow case
3043 __ bind(&slow_start); 3044 __ bind(&slow_start);
3044 3045
3045 // Check that the function is really a JavaScript function. 3046 // Check that the function is really a JavaScript function.
3046 __ JumpIfSmi(function, &non_function); 3047 __ JumpIfSmi(function, &non_function);
3047 3048
3048 // Goto slow case if we do not have a function. 3049 // Goto slow case if we do not have a function.
3049 __ JumpIfNotObjectType(function, x10, type, JS_FUNCTION_TYPE, &slow); 3050 __ JumpIfNotObjectType(function, x10, type, JS_FUNCTION_TYPE, &slow);
3050 __ B(&have_js_function); 3051 __ B(&have_js_function);
3051 } 3052 }
3052 3053
3053 3054
3054 void CallICStub::GenerateMiss(MacroAssembler* masm, IC::UtilityId id) { 3055 void CallICStub::GenerateMiss(MacroAssembler* masm) {
3055 ASM_LOCATION("CallICStub[Miss]"); 3056 ASM_LOCATION("CallICStub[Miss]");
3056 3057
3057 // Get the receiver of the function from the stack; 1 ~ return address. 3058 // Get the receiver of the function from the stack; 1 ~ return address.
3058 __ Peek(x4, (arg_count() + 1) * kPointerSize); 3059 __ Peek(x4, (arg_count() + 1) * kPointerSize);
3059 3060
3060 { 3061 {
3061 FrameScope scope(masm, StackFrame::INTERNAL); 3062 FrameScope scope(masm, StackFrame::INTERNAL);
3062 3063
3063 // Push the receiver and the function and feedback info. 3064 // Push the receiver and the function and feedback info.
3064 __ Push(x4, x1, x2, x3); 3065 __ Push(x4, x1, x2, x3);
3065 3066
3066 // Call the entry. 3067 // Call the entry.
3068 IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss
3069 : IC::kCallIC_Customization_Miss;
3070
3067 ExternalReference miss = ExternalReference(IC_Utility(id), 3071 ExternalReference miss = ExternalReference(IC_Utility(id),
3068 masm->isolate()); 3072 masm->isolate());
3069 __ CallExternalReference(miss, 4); 3073 __ CallExternalReference(miss, 4);
3070 3074
3071 // Move result to edi and exit the internal frame. 3075 // Move result to edi and exit the internal frame.
3072 __ Mov(x1, x0); 3076 __ Mov(x1, x0);
3073 } 3077 }
3074 } 3078 }
3075 3079
3076 3080
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
3184 __ Mov(result_, x0); 3188 __ Mov(result_, x0);
3185 call_helper.AfterCall(masm); 3189 call_helper.AfterCall(masm);
3186 __ B(&exit_); 3190 __ B(&exit_);
3187 3191
3188 __ Abort(kUnexpectedFallthroughFromCharFromCodeSlowCase); 3192 __ Abort(kUnexpectedFallthroughFromCharFromCodeSlowCase);
3189 } 3193 }
3190 3194
3191 3195
3192 void CompareICStub::GenerateSmis(MacroAssembler* masm) { 3196 void CompareICStub::GenerateSmis(MacroAssembler* masm) {
3193 // Inputs are in x0 (lhs) and x1 (rhs). 3197 // Inputs are in x0 (lhs) and x1 (rhs).
3194 DCHECK(state() == CompareIC::SMI); 3198 DCHECK(state() == CompareICState::SMI);
3195 ASM_LOCATION("CompareICStub[Smis]"); 3199 ASM_LOCATION("CompareICStub[Smis]");
3196 Label miss; 3200 Label miss;
3197 // Bail out (to 'miss') unless both x0 and x1 are smis. 3201 // Bail out (to 'miss') unless both x0 and x1 are smis.
3198 __ JumpIfEitherNotSmi(x0, x1, &miss); 3202 __ JumpIfEitherNotSmi(x0, x1, &miss);
3199 3203
3200 if (GetCondition() == eq) { 3204 if (GetCondition() == eq) {
3201 // For equality we do not care about the sign of the result. 3205 // For equality we do not care about the sign of the result.
3202 __ Sub(x0, x0, x1); 3206 __ Sub(x0, x0, x1);
3203 } else { 3207 } else {
3204 // Untag before subtracting to avoid handling overflow. 3208 // Untag before subtracting to avoid handling overflow.
3205 __ SmiUntag(x1); 3209 __ SmiUntag(x1);
3206 __ Sub(x0, x1, Operand::UntagSmi(x0)); 3210 __ Sub(x0, x1, Operand::UntagSmi(x0));
3207 } 3211 }
3208 __ Ret(); 3212 __ Ret();
3209 3213
3210 __ Bind(&miss); 3214 __ Bind(&miss);
3211 GenerateMiss(masm); 3215 GenerateMiss(masm);
3212 } 3216 }
3213 3217
3214 3218
3215 void CompareICStub::GenerateNumbers(MacroAssembler* masm) { 3219 void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
3216 DCHECK(state() == CompareIC::NUMBER); 3220 DCHECK(state() == CompareICState::NUMBER);
3217 ASM_LOCATION("CompareICStub[HeapNumbers]"); 3221 ASM_LOCATION("CompareICStub[HeapNumbers]");
3218 3222
3219 Label unordered, maybe_undefined1, maybe_undefined2; 3223 Label unordered, maybe_undefined1, maybe_undefined2;
3220 Label miss, handle_lhs, values_in_d_regs; 3224 Label miss, handle_lhs, values_in_d_regs;
3221 Label untag_rhs, untag_lhs; 3225 Label untag_rhs, untag_lhs;
3222 3226
3223 Register result = x0; 3227 Register result = x0;
3224 Register rhs = x0; 3228 Register rhs = x0;
3225 Register lhs = x1; 3229 Register lhs = x1;
3226 FPRegister rhs_d = d0; 3230 FPRegister rhs_d = d0;
3227 FPRegister lhs_d = d1; 3231 FPRegister lhs_d = d1;
3228 3232
3229 if (left() == CompareIC::SMI) { 3233 if (left() == CompareICState::SMI) {
3230 __ JumpIfNotSmi(lhs, &miss); 3234 __ JumpIfNotSmi(lhs, &miss);
3231 } 3235 }
3232 if (right() == CompareIC::SMI) { 3236 if (right() == CompareICState::SMI) {
3233 __ JumpIfNotSmi(rhs, &miss); 3237 __ JumpIfNotSmi(rhs, &miss);
3234 } 3238 }
3235 3239
3236 __ SmiUntagToDouble(rhs_d, rhs, kSpeculativeUntag); 3240 __ SmiUntagToDouble(rhs_d, rhs, kSpeculativeUntag);
3237 __ SmiUntagToDouble(lhs_d, lhs, kSpeculativeUntag); 3241 __ SmiUntagToDouble(lhs_d, lhs, kSpeculativeUntag);
3238 3242
3239 // Load rhs if it's a heap number. 3243 // Load rhs if it's a heap number.
3240 __ JumpIfSmi(rhs, &handle_lhs); 3244 __ JumpIfSmi(rhs, &handle_lhs);
3241 __ CheckMap(rhs, x10, Heap::kHeapNumberMapRootIndex, &maybe_undefined1, 3245 __ CheckMap(rhs, x10, Heap::kHeapNumberMapRootIndex, &maybe_undefined1,
3242 DONT_DO_SMI_CHECK); 3246 DONT_DO_SMI_CHECK);
3243 __ Ldr(rhs_d, FieldMemOperand(rhs, HeapNumber::kValueOffset)); 3247 __ Ldr(rhs_d, FieldMemOperand(rhs, HeapNumber::kValueOffset));
3244 3248
3245 // Load lhs if it's a heap number. 3249 // Load lhs if it's a heap number.
3246 __ Bind(&handle_lhs); 3250 __ Bind(&handle_lhs);
3247 __ JumpIfSmi(lhs, &values_in_d_regs); 3251 __ JumpIfSmi(lhs, &values_in_d_regs);
3248 __ CheckMap(lhs, x10, Heap::kHeapNumberMapRootIndex, &maybe_undefined2, 3252 __ CheckMap(lhs, x10, Heap::kHeapNumberMapRootIndex, &maybe_undefined2,
3249 DONT_DO_SMI_CHECK); 3253 DONT_DO_SMI_CHECK);
3250 __ Ldr(lhs_d, FieldMemOperand(lhs, HeapNumber::kValueOffset)); 3254 __ Ldr(lhs_d, FieldMemOperand(lhs, HeapNumber::kValueOffset));
3251 3255
3252 __ Bind(&values_in_d_regs); 3256 __ Bind(&values_in_d_regs);
3253 __ Fcmp(lhs_d, rhs_d); 3257 __ Fcmp(lhs_d, rhs_d);
3254 __ B(vs, &unordered); // Overflow flag set if either is NaN. 3258 __ B(vs, &unordered); // Overflow flag set if either is NaN.
3255 STATIC_ASSERT((LESS == -1) && (EQUAL == 0) && (GREATER == 1)); 3259 STATIC_ASSERT((LESS == -1) && (EQUAL == 0) && (GREATER == 1));
3256 __ Cset(result, gt); // gt => 1, otherwise (lt, eq) => 0 (EQUAL). 3260 __ Cset(result, gt); // gt => 1, otherwise (lt, eq) => 0 (EQUAL).
3257 __ Csinv(result, result, xzr, ge); // lt => -1, gt => 1, eq => 0. 3261 __ Csinv(result, result, xzr, ge); // lt => -1, gt => 1, eq => 0.
3258 __ Ret(); 3262 __ Ret();
3259 3263
3260 __ Bind(&unordered); 3264 __ Bind(&unordered);
3261 CompareICStub stub(isolate(), op(), CompareIC::GENERIC, CompareIC::GENERIC, 3265 CompareICStub stub(isolate(), op(), CompareICState::GENERIC,
3262 CompareIC::GENERIC); 3266 CompareICState::GENERIC, CompareICState::GENERIC);
3263 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); 3267 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
3264 3268
3265 __ Bind(&maybe_undefined1); 3269 __ Bind(&maybe_undefined1);
3266 if (Token::IsOrderedRelationalCompareOp(op())) { 3270 if (Token::IsOrderedRelationalCompareOp(op())) {
3267 __ JumpIfNotRoot(rhs, Heap::kUndefinedValueRootIndex, &miss); 3271 __ JumpIfNotRoot(rhs, Heap::kUndefinedValueRootIndex, &miss);
3268 __ JumpIfSmi(lhs, &unordered); 3272 __ JumpIfSmi(lhs, &unordered);
3269 __ JumpIfNotObjectType(lhs, x10, x10, HEAP_NUMBER_TYPE, &maybe_undefined2); 3273 __ JumpIfNotObjectType(lhs, x10, x10, HEAP_NUMBER_TYPE, &maybe_undefined2);
3270 __ B(&unordered); 3274 __ B(&unordered);
3271 } 3275 }
3272 3276
3273 __ Bind(&maybe_undefined2); 3277 __ Bind(&maybe_undefined2);
3274 if (Token::IsOrderedRelationalCompareOp(op())) { 3278 if (Token::IsOrderedRelationalCompareOp(op())) {
3275 __ JumpIfRoot(lhs, Heap::kUndefinedValueRootIndex, &unordered); 3279 __ JumpIfRoot(lhs, Heap::kUndefinedValueRootIndex, &unordered);
3276 } 3280 }
3277 3281
3278 __ Bind(&miss); 3282 __ Bind(&miss);
3279 GenerateMiss(masm); 3283 GenerateMiss(masm);
3280 } 3284 }
3281 3285
3282 3286
3283 void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) { 3287 void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) {
3284 DCHECK(state() == CompareIC::INTERNALIZED_STRING); 3288 DCHECK(state() == CompareICState::INTERNALIZED_STRING);
3285 ASM_LOCATION("CompareICStub[InternalizedStrings]"); 3289 ASM_LOCATION("CompareICStub[InternalizedStrings]");
3286 Label miss; 3290 Label miss;
3287 3291
3288 Register result = x0; 3292 Register result = x0;
3289 Register rhs = x0; 3293 Register rhs = x0;
3290 Register lhs = x1; 3294 Register lhs = x1;
3291 3295
3292 // Check that both operands are heap objects. 3296 // Check that both operands are heap objects.
3293 __ JumpIfEitherSmi(lhs, rhs, &miss); 3297 __ JumpIfEitherSmi(lhs, rhs, &miss);
3294 3298
(...skipping 17 matching lines...) Expand all
3312 __ Cmp(lhs, rhs); 3316 __ Cmp(lhs, rhs);
3313 __ Cset(result, ne); 3317 __ Cset(result, ne);
3314 __ Ret(); 3318 __ Ret();
3315 3319
3316 __ Bind(&miss); 3320 __ Bind(&miss);
3317 GenerateMiss(masm); 3321 GenerateMiss(masm);
3318 } 3322 }
3319 3323
3320 3324
3321 void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) { 3325 void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) {
3322 DCHECK(state() == CompareIC::UNIQUE_NAME); 3326 DCHECK(state() == CompareICState::UNIQUE_NAME);
3323 ASM_LOCATION("CompareICStub[UniqueNames]"); 3327 ASM_LOCATION("CompareICStub[UniqueNames]");
3324 DCHECK(GetCondition() == eq); 3328 DCHECK(GetCondition() == eq);
3325 Label miss; 3329 Label miss;
3326 3330
3327 Register result = x0; 3331 Register result = x0;
3328 Register rhs = x0; 3332 Register rhs = x0;
3329 Register lhs = x1; 3333 Register lhs = x1;
3330 3334
3331 Register lhs_instance_type = w2; 3335 Register lhs_instance_type = w2;
3332 Register rhs_instance_type = w3; 3336 Register rhs_instance_type = w3;
(...skipping 18 matching lines...) Expand all
3351 __ Cmp(lhs, rhs); 3355 __ Cmp(lhs, rhs);
3352 __ Cset(result, ne); 3356 __ Cset(result, ne);
3353 __ Ret(); 3357 __ Ret();
3354 3358
3355 __ Bind(&miss); 3359 __ Bind(&miss);
3356 GenerateMiss(masm); 3360 GenerateMiss(masm);
3357 } 3361 }
3358 3362
3359 3363
3360 void CompareICStub::GenerateStrings(MacroAssembler* masm) { 3364 void CompareICStub::GenerateStrings(MacroAssembler* masm) {
3361 DCHECK(state() == CompareIC::STRING); 3365 DCHECK(state() == CompareICState::STRING);
3362 ASM_LOCATION("CompareICStub[Strings]"); 3366 ASM_LOCATION("CompareICStub[Strings]");
3363 3367
3364 Label miss; 3368 Label miss;
3365 3369
3366 bool equality = Token::IsEqualityOp(op()); 3370 bool equality = Token::IsEqualityOp(op());
3367 3371
3368 Register result = x0; 3372 Register result = x0;
3369 Register rhs = x0; 3373 Register rhs = x0;
3370 Register lhs = x1; 3374 Register lhs = x1;
3371 3375
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3432 } else { 3436 } else {
3433 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); 3437 __ TailCallRuntime(Runtime::kStringCompare, 2, 1);
3434 } 3438 }
3435 3439
3436 __ Bind(&miss); 3440 __ Bind(&miss);
3437 GenerateMiss(masm); 3441 GenerateMiss(masm);
3438 } 3442 }
3439 3443
3440 3444
3441 void CompareICStub::GenerateObjects(MacroAssembler* masm) { 3445 void CompareICStub::GenerateObjects(MacroAssembler* masm) {
3442 DCHECK(state() == CompareIC::OBJECT); 3446 DCHECK(state() == CompareICState::OBJECT);
3443 ASM_LOCATION("CompareICStub[Objects]"); 3447 ASM_LOCATION("CompareICStub[Objects]");
3444 3448
3445 Label miss; 3449 Label miss;
3446 3450
3447 Register result = x0; 3451 Register result = x0;
3448 Register rhs = x0; 3452 Register rhs = x0;
3449 Register lhs = x1; 3453 Register lhs = x1;
3450 3454
3451 __ JumpIfEitherSmi(rhs, lhs, &miss); 3455 __ JumpIfEitherSmi(rhs, lhs, &miss);
3452 3456
(...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after
5045 MemOperand(fp, 6 * kPointerSize), 5049 MemOperand(fp, 6 * kPointerSize),
5046 NULL); 5050 NULL);
5047 } 5051 }
5048 5052
5049 5053
5050 #undef __ 5054 #undef __
5051 5055
5052 } } // namespace v8::internal 5056 } } // namespace v8::internal
5053 5057
5054 #endif // V8_TARGET_ARCH_ARM64 5058 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm64/full-codegen-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698