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

Side by Side Diff: src/mips64/macro-assembler-mips64.cc

Issue 2580653002: [cleanup] Drop unused Allocate*String MacroAssembler instructions (Closed)
Patch Set: Created 4 years 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/mips64/macro-assembler-mips64.h ('k') | src/ppc/macro-assembler-ppc.h » ('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 <limits.h> // For LONG_MIN, LONG_MAX. 5 #include <limits.h> // For LONG_MIN, LONG_MAX.
6 6
7 #if V8_TARGET_ARCH_MIPS64 7 #if V8_TARGET_ARCH_MIPS64
8 8
9 #include "src/base/division-by-constant.h" 9 #include "src/base/division-by-constant.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 4274 matching lines...) Expand 10 before | Expand all | Expand 10 after
4285 4285
4286 // Update allocation top. result temporarily holds the new top. 4286 // Update allocation top. result temporarily holds the new top.
4287 if (emit_debug_code()) { 4287 if (emit_debug_code()) {
4288 And(at, result_end, Operand(kObjectAlignmentMask)); 4288 And(at, result_end, Operand(kObjectAlignmentMask));
4289 Check(eq, kUnalignedAllocationInNewSpace, at, Operand(zero_reg)); 4289 Check(eq, kUnalignedAllocationInNewSpace, at, Operand(zero_reg));
4290 } 4290 }
4291 4291
4292 Daddu(result, result, Operand(kHeapObjectTag)); 4292 Daddu(result, result, Operand(kHeapObjectTag));
4293 } 4293 }
4294 4294
4295 void MacroAssembler::AllocateTwoByteString(Register result,
4296 Register length,
4297 Register scratch1,
4298 Register scratch2,
4299 Register scratch3,
4300 Label* gc_required) {
4301 // Calculate the number of bytes needed for the characters in the string while
4302 // observing object alignment.
4303 DCHECK((SeqTwoByteString::kHeaderSize & kObjectAlignmentMask) == 0);
4304 dsll(scratch1, length, 1); // Length in bytes, not chars.
4305 daddiu(scratch1, scratch1,
4306 kObjectAlignmentMask + SeqTwoByteString::kHeaderSize);
4307 And(scratch1, scratch1, Operand(~kObjectAlignmentMask));
4308
4309 // Allocate two-byte string in new space.
4310 Allocate(scratch1, result, scratch2, scratch3, gc_required,
4311 NO_ALLOCATION_FLAGS);
4312
4313 // Set the map, length and hash field.
4314 InitializeNewString(result,
4315 length,
4316 Heap::kStringMapRootIndex,
4317 scratch1,
4318 scratch2);
4319 }
4320
4321
4322 void MacroAssembler::AllocateOneByteString(Register result, Register length,
4323 Register scratch1, Register scratch2,
4324 Register scratch3,
4325 Label* gc_required) {
4326 // Calculate the number of bytes needed for the characters in the string
4327 // while observing object alignment.
4328 DCHECK((SeqOneByteString::kHeaderSize & kObjectAlignmentMask) == 0);
4329 DCHECK(kCharSize == 1);
4330 daddiu(scratch1, length,
4331 kObjectAlignmentMask + SeqOneByteString::kHeaderSize);
4332 And(scratch1, scratch1, Operand(~kObjectAlignmentMask));
4333
4334 // Allocate one-byte string in new space.
4335 Allocate(scratch1, result, scratch2, scratch3, gc_required,
4336 NO_ALLOCATION_FLAGS);
4337
4338 // Set the map, length and hash field.
4339 InitializeNewString(result, length, Heap::kOneByteStringMapRootIndex,
4340 scratch1, scratch2);
4341 }
4342
4343
4344 void MacroAssembler::AllocateTwoByteConsString(Register result,
4345 Register length,
4346 Register scratch1,
4347 Register scratch2,
4348 Label* gc_required) {
4349 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
4350 NO_ALLOCATION_FLAGS);
4351 InitializeNewString(result,
4352 length,
4353 Heap::kConsStringMapRootIndex,
4354 scratch1,
4355 scratch2);
4356 }
4357
4358
4359 void MacroAssembler::AllocateOneByteConsString(Register result, Register length,
4360 Register scratch1,
4361 Register scratch2,
4362 Label* gc_required) {
4363 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
4364 NO_ALLOCATION_FLAGS);
4365
4366 InitializeNewString(result, length, Heap::kConsOneByteStringMapRootIndex,
4367 scratch1, scratch2);
4368 }
4369
4370
4371 void MacroAssembler::AllocateTwoByteSlicedString(Register result,
4372 Register length,
4373 Register scratch1,
4374 Register scratch2,
4375 Label* gc_required) {
4376 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
4377 NO_ALLOCATION_FLAGS);
4378
4379 InitializeNewString(result,
4380 length,
4381 Heap::kSlicedStringMapRootIndex,
4382 scratch1,
4383 scratch2);
4384 }
4385
4386
4387 void MacroAssembler::AllocateOneByteSlicedString(Register result,
4388 Register length,
4389 Register scratch1,
4390 Register scratch2,
4391 Label* gc_required) {
4392 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
4393 NO_ALLOCATION_FLAGS);
4394
4395 InitializeNewString(result, length, Heap::kSlicedOneByteStringMapRootIndex,
4396 scratch1, scratch2);
4397 }
4398
4399
4400 void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg, 4295 void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg,
4401 Label* not_unique_name) { 4296 Label* not_unique_name) {
4402 STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0); 4297 STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
4403 Label succeed; 4298 Label succeed;
4404 And(at, reg, Operand(kIsNotStringMask | kIsNotInternalizedMask)); 4299 And(at, reg, Operand(kIsNotStringMask | kIsNotInternalizedMask));
4405 Branch(&succeed, eq, at, Operand(zero_reg)); 4300 Branch(&succeed, eq, at, Operand(zero_reg));
4406 Branch(not_unique_name, ne, reg, Operand(SYMBOL_TYPE)); 4301 Branch(not_unique_name, ne, reg, Operand(SYMBOL_TYPE));
4407 4302
4408 bind(&succeed); 4303 bind(&succeed);
4409 } 4304 }
(...skipping 2071 matching lines...) Expand 10 before | Expand all | Expand 10 after
6481 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask; 6376 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
6482 const int kFlatOneByteStringTag = 6377 const int kFlatOneByteStringTag =
6483 kStringTag | kOneByteStringTag | kSeqStringTag; 6378 kStringTag | kOneByteStringTag | kSeqStringTag;
6484 DCHECK(kFlatOneByteStringTag <= 0xffff); // Ensure this fits 16-bit immed. 6379 DCHECK(kFlatOneByteStringTag <= 0xffff); // Ensure this fits 16-bit immed.
6485 andi(scratch1, first, kFlatOneByteStringMask); 6380 andi(scratch1, first, kFlatOneByteStringMask);
6486 Branch(failure, ne, scratch1, Operand(kFlatOneByteStringTag)); 6381 Branch(failure, ne, scratch1, Operand(kFlatOneByteStringTag));
6487 andi(scratch2, second, kFlatOneByteStringMask); 6382 andi(scratch2, second, kFlatOneByteStringMask);
6488 Branch(failure, ne, scratch2, Operand(kFlatOneByteStringTag)); 6383 Branch(failure, ne, scratch2, Operand(kFlatOneByteStringTag));
6489 } 6384 }
6490 6385
6491
6492 void MacroAssembler::JumpIfInstanceTypeIsNotSequentialOneByte(Register type,
6493 Register scratch,
6494 Label* failure) {
6495 const int kFlatOneByteStringMask =
6496 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
6497 const int kFlatOneByteStringTag =
6498 kStringTag | kOneByteStringTag | kSeqStringTag;
6499 And(scratch, type, Operand(kFlatOneByteStringMask));
6500 Branch(failure, ne, scratch, Operand(kFlatOneByteStringTag));
6501 }
6502
6503 static const int kRegisterPassedArguments = 8; 6386 static const int kRegisterPassedArguments = 8;
6504 6387
6505 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, 6388 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments,
6506 int num_double_arguments) { 6389 int num_double_arguments) {
6507 int stack_passed_words = 0; 6390 int stack_passed_words = 0;
6508 num_reg_arguments += 2 * num_double_arguments; 6391 num_reg_arguments += 2 * num_double_arguments;
6509 6392
6510 // O32: Up to four simple arguments are passed in registers a0..a3. 6393 // O32: Up to four simple arguments are passed in registers a0..a3.
6511 // N64: Up to eight simple arguments are passed in registers a0..a7. 6394 // N64: Up to eight simple arguments are passed in registers a0..a7.
6512 if (num_reg_arguments > kRegisterPassedArguments) { 6395 if (num_reg_arguments > kRegisterPassedArguments) {
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
7021 if (mag.shift > 0) sra(result, result, mag.shift); 6904 if (mag.shift > 0) sra(result, result, mag.shift);
7022 srl(at, dividend, 31); 6905 srl(at, dividend, 31);
7023 Addu(result, result, Operand(at)); 6906 Addu(result, result, Operand(at));
7024 } 6907 }
7025 6908
7026 6909
7027 } // namespace internal 6910 } // namespace internal
7028 } // namespace v8 6911 } // namespace v8
7029 6912
7030 #endif // V8_TARGET_ARCH_MIPS64 6913 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips64/macro-assembler-mips64.h ('k') | src/ppc/macro-assembler-ppc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698