| OLD | NEW |
| 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 2392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2403 __ LoadRoot(ip, Heap::kFixedArrayMapRootIndex); | 2403 __ LoadRoot(ip, Heap::kFixedArrayMapRootIndex); |
| 2404 __ cmp(scratch, ip); | 2404 __ cmp(scratch, ip); |
| 2405 __ b(eq, &done); | 2405 __ b(eq, &done); |
| 2406 __ LoadRoot(ip, Heap::kFixedCOWArrayMapRootIndex); | 2406 __ LoadRoot(ip, Heap::kFixedCOWArrayMapRootIndex); |
| 2407 __ cmp(scratch, ip); | 2407 __ cmp(scratch, ip); |
| 2408 __ b(eq, &done); | 2408 __ b(eq, &done); |
| 2409 // |scratch| still contains |input|'s map. | 2409 // |scratch| still contains |input|'s map. |
| 2410 __ ldr(scratch, FieldMemOperand(scratch, Map::kBitField2Offset)); | 2410 __ ldr(scratch, FieldMemOperand(scratch, Map::kBitField2Offset)); |
| 2411 __ ubfx(scratch, scratch, Map::kElementsKindShift, | 2411 __ ubfx(scratch, scratch, Map::kElementsKindShift, |
| 2412 Map::kElementsKindBitCount); | 2412 Map::kElementsKindBitCount); |
| 2413 __ cmp(scratch, Operand(JSObject::FAST_ELEMENTS)); | 2413 __ cmp(scratch, Operand(FAST_ELEMENTS)); |
| 2414 __ b(eq, &done); | 2414 __ b(eq, &done); |
| 2415 __ cmp(scratch, Operand(JSObject::FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND)); | 2415 __ cmp(scratch, Operand(FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND)); |
| 2416 __ b(lt, &fail); | 2416 __ b(lt, &fail); |
| 2417 __ cmp(scratch, Operand(JSObject::LAST_EXTERNAL_ARRAY_ELEMENTS_KIND)); | 2417 __ cmp(scratch, Operand(LAST_EXTERNAL_ARRAY_ELEMENTS_KIND)); |
| 2418 __ b(le, &done); | 2418 __ b(le, &done); |
| 2419 __ bind(&fail); | 2419 __ bind(&fail); |
| 2420 __ Abort("Check for fast or external elements failed."); | 2420 __ Abort("Check for fast or external elements failed."); |
| 2421 __ bind(&done); | 2421 __ bind(&done); |
| 2422 } | 2422 } |
| 2423 } | 2423 } |
| 2424 | 2424 |
| 2425 | 2425 |
| 2426 void LCodeGen::DoLoadExternalArrayPointer( | 2426 void LCodeGen::DoLoadExternalArrayPointer( |
| 2427 LLoadExternalArrayPointer* instr) { | 2427 LLoadExternalArrayPointer* instr) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2471 | 2471 |
| 2472 void LCodeGen::DoLoadKeyedFastDoubleElement( | 2472 void LCodeGen::DoLoadKeyedFastDoubleElement( |
| 2473 LLoadKeyedFastDoubleElement* instr) { | 2473 LLoadKeyedFastDoubleElement* instr) { |
| 2474 Register elements = ToRegister(instr->elements()); | 2474 Register elements = ToRegister(instr->elements()); |
| 2475 bool key_is_constant = instr->key()->IsConstantOperand(); | 2475 bool key_is_constant = instr->key()->IsConstantOperand(); |
| 2476 Register key = no_reg; | 2476 Register key = no_reg; |
| 2477 DwVfpRegister result = ToDoubleRegister(instr->result()); | 2477 DwVfpRegister result = ToDoubleRegister(instr->result()); |
| 2478 Register scratch = scratch0(); | 2478 Register scratch = scratch0(); |
| 2479 | 2479 |
| 2480 int shift_size = | 2480 int shift_size = |
| 2481 ElementsKindToShiftSize(JSObject::FAST_DOUBLE_ELEMENTS); | 2481 ElementsKindToShiftSize(FAST_DOUBLE_ELEMENTS); |
| 2482 int constant_key = 0; | 2482 int constant_key = 0; |
| 2483 if (key_is_constant) { | 2483 if (key_is_constant) { |
| 2484 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); | 2484 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); |
| 2485 if (constant_key & 0xF0000000) { | 2485 if (constant_key & 0xF0000000) { |
| 2486 Abort("array index constant value too big."); | 2486 Abort("array index constant value too big."); |
| 2487 } | 2487 } |
| 2488 } else { | 2488 } else { |
| 2489 key = ToRegister(instr->key()); | 2489 key = ToRegister(instr->key()); |
| 2490 } | 2490 } |
| 2491 | 2491 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2508 } | 2508 } |
| 2509 | 2509 |
| 2510 __ vldr(result, elements, 0); | 2510 __ vldr(result, elements, 0); |
| 2511 } | 2511 } |
| 2512 | 2512 |
| 2513 | 2513 |
| 2514 void LCodeGen::DoLoadKeyedSpecializedArrayElement( | 2514 void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
| 2515 LLoadKeyedSpecializedArrayElement* instr) { | 2515 LLoadKeyedSpecializedArrayElement* instr) { |
| 2516 Register external_pointer = ToRegister(instr->external_pointer()); | 2516 Register external_pointer = ToRegister(instr->external_pointer()); |
| 2517 Register key = no_reg; | 2517 Register key = no_reg; |
| 2518 JSObject::ElementsKind elements_kind = instr->elements_kind(); | 2518 ElementsKind elements_kind = instr->elements_kind(); |
| 2519 bool key_is_constant = instr->key()->IsConstantOperand(); | 2519 bool key_is_constant = instr->key()->IsConstantOperand(); |
| 2520 int constant_key = 0; | 2520 int constant_key = 0; |
| 2521 if (key_is_constant) { | 2521 if (key_is_constant) { |
| 2522 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); | 2522 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); |
| 2523 if (constant_key & 0xF0000000) { | 2523 if (constant_key & 0xF0000000) { |
| 2524 Abort("array index constant value too big."); | 2524 Abort("array index constant value too big."); |
| 2525 } | 2525 } |
| 2526 } else { | 2526 } else { |
| 2527 key = ToRegister(instr->key()); | 2527 key = ToRegister(instr->key()); |
| 2528 } | 2528 } |
| 2529 int shift_size = ElementsKindToShiftSize(elements_kind); | 2529 int shift_size = ElementsKindToShiftSize(elements_kind); |
| 2530 | 2530 |
| 2531 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS || | 2531 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS || |
| 2532 elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { | 2532 elements_kind == EXTERNAL_DOUBLE_ELEMENTS) { |
| 2533 CpuFeatures::Scope scope(VFP3); | 2533 CpuFeatures::Scope scope(VFP3); |
| 2534 DwVfpRegister result = ToDoubleRegister(instr->result()); | 2534 DwVfpRegister result = ToDoubleRegister(instr->result()); |
| 2535 Operand operand = key_is_constant | 2535 Operand operand = key_is_constant |
| 2536 ? Operand(constant_key * (1 << shift_size)) | 2536 ? Operand(constant_key * (1 << shift_size)) |
| 2537 : Operand(key, LSL, shift_size); | 2537 : Operand(key, LSL, shift_size); |
| 2538 __ add(scratch0(), external_pointer, operand); | 2538 __ add(scratch0(), external_pointer, operand); |
| 2539 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { | 2539 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
| 2540 __ vldr(result.low(), scratch0(), 0); | 2540 __ vldr(result.low(), scratch0(), 0); |
| 2541 __ vcvt_f64_f32(result, result.low()); | 2541 __ vcvt_f64_f32(result, result.low()); |
| 2542 } else { // i.e. elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS | 2542 } else { // i.e. elements_kind == EXTERNAL_DOUBLE_ELEMENTS |
| 2543 __ vldr(result, scratch0(), 0); | 2543 __ vldr(result, scratch0(), 0); |
| 2544 } | 2544 } |
| 2545 } else { | 2545 } else { |
| 2546 Register result = ToRegister(instr->result()); | 2546 Register result = ToRegister(instr->result()); |
| 2547 MemOperand mem_operand(key_is_constant | 2547 MemOperand mem_operand(key_is_constant |
| 2548 ? MemOperand(external_pointer, constant_key * (1 << shift_size)) | 2548 ? MemOperand(external_pointer, constant_key * (1 << shift_size)) |
| 2549 : MemOperand(external_pointer, key, LSL, shift_size)); | 2549 : MemOperand(external_pointer, key, LSL, shift_size)); |
| 2550 switch (elements_kind) { | 2550 switch (elements_kind) { |
| 2551 case JSObject::EXTERNAL_BYTE_ELEMENTS: | 2551 case EXTERNAL_BYTE_ELEMENTS: |
| 2552 __ ldrsb(result, mem_operand); | 2552 __ ldrsb(result, mem_operand); |
| 2553 break; | 2553 break; |
| 2554 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 2554 case EXTERNAL_PIXEL_ELEMENTS: |
| 2555 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 2555 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| 2556 __ ldrb(result, mem_operand); | 2556 __ ldrb(result, mem_operand); |
| 2557 break; | 2557 break; |
| 2558 case JSObject::EXTERNAL_SHORT_ELEMENTS: | 2558 case EXTERNAL_SHORT_ELEMENTS: |
| 2559 __ ldrsh(result, mem_operand); | 2559 __ ldrsh(result, mem_operand); |
| 2560 break; | 2560 break; |
| 2561 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 2561 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| 2562 __ ldrh(result, mem_operand); | 2562 __ ldrh(result, mem_operand); |
| 2563 break; | 2563 break; |
| 2564 case JSObject::EXTERNAL_INT_ELEMENTS: | 2564 case EXTERNAL_INT_ELEMENTS: |
| 2565 __ ldr(result, mem_operand); | 2565 __ ldr(result, mem_operand); |
| 2566 break; | 2566 break; |
| 2567 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: | 2567 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| 2568 __ ldr(result, mem_operand); | 2568 __ ldr(result, mem_operand); |
| 2569 __ cmp(result, Operand(0x80000000)); | 2569 __ cmp(result, Operand(0x80000000)); |
| 2570 // TODO(danno): we could be more clever here, perhaps having a special | 2570 // TODO(danno): we could be more clever here, perhaps having a special |
| 2571 // version of the stub that detects if the overflow case actually | 2571 // version of the stub that detects if the overflow case actually |
| 2572 // happens, and generate code that returns a double rather than int. | 2572 // happens, and generate code that returns a double rather than int. |
| 2573 DeoptimizeIf(cs, instr->environment()); | 2573 DeoptimizeIf(cs, instr->environment()); |
| 2574 break; | 2574 break; |
| 2575 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 2575 case EXTERNAL_FLOAT_ELEMENTS: |
| 2576 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 2576 case EXTERNAL_DOUBLE_ELEMENTS: |
| 2577 case JSObject::FAST_DOUBLE_ELEMENTS: | 2577 case FAST_DOUBLE_ELEMENTS: |
| 2578 case JSObject::FAST_ELEMENTS: | 2578 case FAST_ELEMENTS: |
| 2579 case JSObject::DICTIONARY_ELEMENTS: | 2579 case DICTIONARY_ELEMENTS: |
| 2580 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: | 2580 case NON_STRICT_ARGUMENTS_ELEMENTS: |
| 2581 UNREACHABLE(); | 2581 UNREACHABLE(); |
| 2582 break; | 2582 break; |
| 2583 } | 2583 } |
| 2584 } | 2584 } |
| 2585 } | 2585 } |
| 2586 | 2586 |
| 2587 | 2587 |
| 2588 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { | 2588 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { |
| 2589 ASSERT(ToRegister(instr->object()).is(r1)); | 2589 ASSERT(ToRegister(instr->object()).is(r1)); |
| 2590 ASSERT(ToRegister(instr->key()).is(r0)); | 2590 ASSERT(ToRegister(instr->key()).is(r0)); |
| (...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3333 // Calculate the effective address of the slot in the array to store the | 3333 // Calculate the effective address of the slot in the array to store the |
| 3334 // double value. | 3334 // double value. |
| 3335 if (key_is_constant) { | 3335 if (key_is_constant) { |
| 3336 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); | 3336 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); |
| 3337 if (constant_key & 0xF0000000) { | 3337 if (constant_key & 0xF0000000) { |
| 3338 Abort("array index constant value too big."); | 3338 Abort("array index constant value too big."); |
| 3339 } | 3339 } |
| 3340 } else { | 3340 } else { |
| 3341 key = ToRegister(instr->key()); | 3341 key = ToRegister(instr->key()); |
| 3342 } | 3342 } |
| 3343 int shift_size = ElementsKindToShiftSize(JSObject::FAST_DOUBLE_ELEMENTS); | 3343 int shift_size = ElementsKindToShiftSize(FAST_DOUBLE_ELEMENTS); |
| 3344 Operand operand = key_is_constant | 3344 Operand operand = key_is_constant |
| 3345 ? Operand(constant_key * (1 << shift_size) + | 3345 ? Operand(constant_key * (1 << shift_size) + |
| 3346 FixedDoubleArray::kHeaderSize - kHeapObjectTag) | 3346 FixedDoubleArray::kHeaderSize - kHeapObjectTag) |
| 3347 : Operand(key, LSL, shift_size); | 3347 : Operand(key, LSL, shift_size); |
| 3348 __ add(scratch, elements, operand); | 3348 __ add(scratch, elements, operand); |
| 3349 if (!key_is_constant) { | 3349 if (!key_is_constant) { |
| 3350 __ add(scratch, scratch, | 3350 __ add(scratch, scratch, |
| 3351 Operand(FixedDoubleArray::kHeaderSize - kHeapObjectTag)); | 3351 Operand(FixedDoubleArray::kHeaderSize - kHeapObjectTag)); |
| 3352 } | 3352 } |
| 3353 | 3353 |
| 3354 // Check for NaN. All NaNs must be canonicalized. | 3354 // Check for NaN. All NaNs must be canonicalized. |
| 3355 __ VFPCompareAndSetFlags(value, value); | 3355 __ VFPCompareAndSetFlags(value, value); |
| 3356 | 3356 |
| 3357 // Only load canonical NaN if the comparison above set the overflow. | 3357 // Only load canonical NaN if the comparison above set the overflow. |
| 3358 __ Vmov(value, FixedDoubleArray::canonical_not_the_hole_nan_as_double(), vs); | 3358 __ Vmov(value, FixedDoubleArray::canonical_not_the_hole_nan_as_double(), vs); |
| 3359 | 3359 |
| 3360 __ bind(¬_nan); | 3360 __ bind(¬_nan); |
| 3361 __ vstr(value, scratch, 0); | 3361 __ vstr(value, scratch, 0); |
| 3362 } | 3362 } |
| 3363 | 3363 |
| 3364 | 3364 |
| 3365 void LCodeGen::DoStoreKeyedSpecializedArrayElement( | 3365 void LCodeGen::DoStoreKeyedSpecializedArrayElement( |
| 3366 LStoreKeyedSpecializedArrayElement* instr) { | 3366 LStoreKeyedSpecializedArrayElement* instr) { |
| 3367 | 3367 |
| 3368 Register external_pointer = ToRegister(instr->external_pointer()); | 3368 Register external_pointer = ToRegister(instr->external_pointer()); |
| 3369 Register key = no_reg; | 3369 Register key = no_reg; |
| 3370 JSObject::ElementsKind elements_kind = instr->elements_kind(); | 3370 ElementsKind elements_kind = instr->elements_kind(); |
| 3371 bool key_is_constant = instr->key()->IsConstantOperand(); | 3371 bool key_is_constant = instr->key()->IsConstantOperand(); |
| 3372 int constant_key = 0; | 3372 int constant_key = 0; |
| 3373 if (key_is_constant) { | 3373 if (key_is_constant) { |
| 3374 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); | 3374 constant_key = ToInteger32(LConstantOperand::cast(instr->key())); |
| 3375 if (constant_key & 0xF0000000) { | 3375 if (constant_key & 0xF0000000) { |
| 3376 Abort("array index constant value too big."); | 3376 Abort("array index constant value too big."); |
| 3377 } | 3377 } |
| 3378 } else { | 3378 } else { |
| 3379 key = ToRegister(instr->key()); | 3379 key = ToRegister(instr->key()); |
| 3380 } | 3380 } |
| 3381 int shift_size = ElementsKindToShiftSize(elements_kind); | 3381 int shift_size = ElementsKindToShiftSize(elements_kind); |
| 3382 | 3382 |
| 3383 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS || | 3383 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS || |
| 3384 elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { | 3384 elements_kind == EXTERNAL_DOUBLE_ELEMENTS) { |
| 3385 CpuFeatures::Scope scope(VFP3); | 3385 CpuFeatures::Scope scope(VFP3); |
| 3386 DwVfpRegister value(ToDoubleRegister(instr->value())); | 3386 DwVfpRegister value(ToDoubleRegister(instr->value())); |
| 3387 Operand operand(key_is_constant ? Operand(constant_key * (1 << shift_size)) | 3387 Operand operand(key_is_constant ? Operand(constant_key * (1 << shift_size)) |
| 3388 : Operand(key, LSL, shift_size)); | 3388 : Operand(key, LSL, shift_size)); |
| 3389 __ add(scratch0(), external_pointer, operand); | 3389 __ add(scratch0(), external_pointer, operand); |
| 3390 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { | 3390 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
| 3391 __ vcvt_f32_f64(double_scratch0().low(), value); | 3391 __ vcvt_f32_f64(double_scratch0().low(), value); |
| 3392 __ vstr(double_scratch0().low(), scratch0(), 0); | 3392 __ vstr(double_scratch0().low(), scratch0(), 0); |
| 3393 } else { // i.e. elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS | 3393 } else { // i.e. elements_kind == EXTERNAL_DOUBLE_ELEMENTS |
| 3394 __ vstr(value, scratch0(), 0); | 3394 __ vstr(value, scratch0(), 0); |
| 3395 } | 3395 } |
| 3396 } else { | 3396 } else { |
| 3397 Register value(ToRegister(instr->value())); | 3397 Register value(ToRegister(instr->value())); |
| 3398 MemOperand mem_operand(key_is_constant | 3398 MemOperand mem_operand(key_is_constant |
| 3399 ? MemOperand(external_pointer, constant_key * (1 << shift_size)) | 3399 ? MemOperand(external_pointer, constant_key * (1 << shift_size)) |
| 3400 : MemOperand(external_pointer, key, LSL, shift_size)); | 3400 : MemOperand(external_pointer, key, LSL, shift_size)); |
| 3401 switch (elements_kind) { | 3401 switch (elements_kind) { |
| 3402 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 3402 case EXTERNAL_PIXEL_ELEMENTS: |
| 3403 case JSObject::EXTERNAL_BYTE_ELEMENTS: | 3403 case EXTERNAL_BYTE_ELEMENTS: |
| 3404 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 3404 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| 3405 __ strb(value, mem_operand); | 3405 __ strb(value, mem_operand); |
| 3406 break; | 3406 break; |
| 3407 case JSObject::EXTERNAL_SHORT_ELEMENTS: | 3407 case EXTERNAL_SHORT_ELEMENTS: |
| 3408 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 3408 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| 3409 __ strh(value, mem_operand); | 3409 __ strh(value, mem_operand); |
| 3410 break; | 3410 break; |
| 3411 case JSObject::EXTERNAL_INT_ELEMENTS: | 3411 case EXTERNAL_INT_ELEMENTS: |
| 3412 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: | 3412 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| 3413 __ str(value, mem_operand); | 3413 __ str(value, mem_operand); |
| 3414 break; | 3414 break; |
| 3415 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 3415 case EXTERNAL_FLOAT_ELEMENTS: |
| 3416 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 3416 case EXTERNAL_DOUBLE_ELEMENTS: |
| 3417 case JSObject::FAST_DOUBLE_ELEMENTS: | 3417 case FAST_DOUBLE_ELEMENTS: |
| 3418 case JSObject::FAST_ELEMENTS: | 3418 case FAST_ELEMENTS: |
| 3419 case JSObject::DICTIONARY_ELEMENTS: | 3419 case DICTIONARY_ELEMENTS: |
| 3420 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: | 3420 case NON_STRICT_ARGUMENTS_ELEMENTS: |
| 3421 UNREACHABLE(); | 3421 UNREACHABLE(); |
| 3422 break; | 3422 break; |
| 3423 } | 3423 } |
| 3424 } | 3424 } |
| 3425 } | 3425 } |
| 3426 | 3426 |
| 3427 | 3427 |
| 3428 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 3428 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
| 3429 ASSERT(ToRegister(instr->object()).is(r2)); | 3429 ASSERT(ToRegister(instr->object()).is(r2)); |
| 3430 ASSERT(ToRegister(instr->key()).is(r1)); | 3430 ASSERT(ToRegister(instr->key()).is(r1)); |
| (...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4509 ASSERT(osr_pc_offset_ == -1); | 4509 ASSERT(osr_pc_offset_ == -1); |
| 4510 osr_pc_offset_ = masm()->pc_offset(); | 4510 osr_pc_offset_ = masm()->pc_offset(); |
| 4511 } | 4511 } |
| 4512 | 4512 |
| 4513 | 4513 |
| 4514 | 4514 |
| 4515 | 4515 |
| 4516 #undef __ | 4516 #undef __ |
| 4517 | 4517 |
| 4518 } } // namespace v8::internal | 4518 } } // namespace v8::internal |
| OLD | NEW |