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

Side by Side Diff: src/objects.h

Issue 1180753005: Cleanup typed array setters, the property is guaranteed to be there. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
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 #ifndef V8_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 2414 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 2425
2426 class FixedDoubleArray; 2426 class FixedDoubleArray;
2427 class IncrementalMarking; 2427 class IncrementalMarking;
2428 2428
2429 2429
2430 // FixedArray describes fixed-sized arrays with element type Object*. 2430 // FixedArray describes fixed-sized arrays with element type Object*.
2431 class FixedArray: public FixedArrayBase { 2431 class FixedArray: public FixedArrayBase {
2432 public: 2432 public:
2433 // Setter and getter for elements. 2433 // Setter and getter for elements.
2434 inline Object* get(int index) const; 2434 inline Object* get(int index) const;
2435 static void SetValue(Handle<JSObject> holder, Handle<FixedArray> array, 2435 static void SetValue(Handle<FixedArray> array, uint32_t index,
2436 uint32_t index, Handle<Object> value); 2436 Handle<Object> value);
2437 static inline Handle<Object> get(Handle<FixedArray> array, int index); 2437 static inline Handle<Object> get(Handle<FixedArray> array, int index);
2438 // Setter that uses write barrier. 2438 // Setter that uses write barrier.
2439 inline void set(int index, Object* value); 2439 inline void set(int index, Object* value);
2440 inline bool is_the_hole(int index); 2440 inline bool is_the_hole(int index);
2441 2441
2442 // Setter that doesn't need write barrier. 2442 // Setter that doesn't need write barrier.
2443 inline void set(int index, Smi* value); 2443 inline void set(int index, Smi* value);
2444 // Setter with explicit barrier mode. 2444 // Setter with explicit barrier mode.
2445 inline void set(int index, Object* value, WriteBarrierMode mode); 2445 inline void set(int index, Object* value, WriteBarrierMode mode);
2446 2446
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2549 2549
2550 2550
2551 // FixedDoubleArray describes fixed-sized arrays with element type double. 2551 // FixedDoubleArray describes fixed-sized arrays with element type double.
2552 class FixedDoubleArray: public FixedArrayBase { 2552 class FixedDoubleArray: public FixedArrayBase {
2553 public: 2553 public:
2554 // Setter and getter for elements. 2554 // Setter and getter for elements.
2555 inline double get_scalar(int index); 2555 inline double get_scalar(int index);
2556 inline uint64_t get_representation(int index); 2556 inline uint64_t get_representation(int index);
2557 static inline Handle<Object> get(Handle<FixedDoubleArray> array, int index); 2557 static inline Handle<Object> get(Handle<FixedDoubleArray> array, int index);
2558 // This accessor has to get a Number as |value|. 2558 // This accessor has to get a Number as |value|.
2559 static void SetValue(Handle<JSObject> holder, Handle<FixedDoubleArray> array, 2559 static void SetValue(Handle<FixedDoubleArray> array, uint32_t index,
2560 uint32_t index, Handle<Object> value); 2560 Handle<Object> value);
2561 inline void set(int index, double value); 2561 inline void set(int index, double value);
2562 inline void set_the_hole(int index); 2562 inline void set_the_hole(int index);
2563 2563
2564 // Checking for the hole. 2564 // Checking for the hole.
2565 inline bool is_the_hole(int index); 2565 inline bool is_the_hole(int index);
2566 2566
2567 // Garbage collection support. 2567 // Garbage collection support.
2568 inline static int SizeFor(int length) { 2568 inline static int SizeFor(int length) {
2569 return kHeaderSize + length * kDoubleSize; 2569 return kHeaderSize + length * kDoubleSize;
2570 } 2570 }
(...skipping 1814 matching lines...) Expand 10 before | Expand all | Expand 10 after
4385 inline uint8_t* external_uint8_clamped_pointer(); 4385 inline uint8_t* external_uint8_clamped_pointer();
4386 4386
4387 // Setter and getter. 4387 // Setter and getter.
4388 inline uint8_t get_scalar(int index); 4388 inline uint8_t get_scalar(int index);
4389 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array, 4389 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array,
4390 int index); 4390 int index);
4391 inline void set(int index, uint8_t value); 4391 inline void set(int index, uint8_t value);
4392 4392
4393 // This accessor applies the correct conversion from Smi, HeapNumber 4393 // This accessor applies the correct conversion from Smi, HeapNumber
4394 // and undefined and clamps the converted value between 0 and 255. 4394 // and undefined and clamps the converted value between 0 and 255.
4395 static void SetValue(Handle<JSObject> holder, 4395 static void SetValue(Handle<ExternalUint8ClampedArray> array, uint32_t index,
4396 Handle<ExternalUint8ClampedArray> array, uint32_t index,
4397 Handle<Object> value); 4396 Handle<Object> value);
4398 4397
4399 DECLARE_CAST(ExternalUint8ClampedArray) 4398 DECLARE_CAST(ExternalUint8ClampedArray)
4400 4399
4401 // Dispatched behavior. 4400 // Dispatched behavior.
4402 DECLARE_PRINTER(ExternalUint8ClampedArray) 4401 DECLARE_PRINTER(ExternalUint8ClampedArray)
4403 DECLARE_VERIFIER(ExternalUint8ClampedArray) 4402 DECLARE_VERIFIER(ExternalUint8ClampedArray)
4404 4403
4405 private: 4404 private:
4406 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray); 4405 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray);
4407 }; 4406 };
4408 4407
4409 4408
4410 class ExternalInt8Array: public ExternalArray { 4409 class ExternalInt8Array: public ExternalArray {
4411 public: 4410 public:
4412 // Setter and getter. 4411 // Setter and getter.
4413 inline int8_t get_scalar(int index); 4412 inline int8_t get_scalar(int index);
4414 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index); 4413 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index);
4415 inline void set(int index, int8_t value); 4414 inline void set(int index, int8_t value);
4416 4415
4417 // This accessor applies the correct conversion from Smi, HeapNumber 4416 // This accessor applies the correct conversion from Smi, HeapNumber
4418 // and undefined. 4417 // and undefined.
4419 static void SetValue(Handle<JSObject> holder, Handle<ExternalInt8Array> array, 4418 static void SetValue(Handle<ExternalInt8Array> array, uint32_t index,
4420 uint32_t index, Handle<Object> value); 4419 Handle<Object> value);
4421 4420
4422 DECLARE_CAST(ExternalInt8Array) 4421 DECLARE_CAST(ExternalInt8Array)
4423 4422
4424 // Dispatched behavior. 4423 // Dispatched behavior.
4425 DECLARE_PRINTER(ExternalInt8Array) 4424 DECLARE_PRINTER(ExternalInt8Array)
4426 DECLARE_VERIFIER(ExternalInt8Array) 4425 DECLARE_VERIFIER(ExternalInt8Array)
4427 4426
4428 private: 4427 private:
4429 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array); 4428 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array);
4430 }; 4429 };
4431 4430
4432 4431
4433 class ExternalUint8Array: public ExternalArray { 4432 class ExternalUint8Array: public ExternalArray {
4434 public: 4433 public:
4435 // Setter and getter. 4434 // Setter and getter.
4436 inline uint8_t get_scalar(int index); 4435 inline uint8_t get_scalar(int index);
4437 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index); 4436 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index);
4438 inline void set(int index, uint8_t value); 4437 inline void set(int index, uint8_t value);
4439 4438
4440 // This accessor applies the correct conversion from Smi, HeapNumber 4439 // This accessor applies the correct conversion from Smi, HeapNumber
4441 // and undefined. 4440 // and undefined.
4442 static void SetValue(Handle<JSObject> holder, 4441 static void SetValue(Handle<ExternalUint8Array> array, uint32_t index,
4443 Handle<ExternalUint8Array> array, uint32_t index,
4444 Handle<Object> value); 4442 Handle<Object> value);
4445 4443
4446 DECLARE_CAST(ExternalUint8Array) 4444 DECLARE_CAST(ExternalUint8Array)
4447 4445
4448 // Dispatched behavior. 4446 // Dispatched behavior.
4449 DECLARE_PRINTER(ExternalUint8Array) 4447 DECLARE_PRINTER(ExternalUint8Array)
4450 DECLARE_VERIFIER(ExternalUint8Array) 4448 DECLARE_VERIFIER(ExternalUint8Array)
4451 4449
4452 private: 4450 private:
4453 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array); 4451 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array);
4454 }; 4452 };
4455 4453
4456 4454
4457 class ExternalInt16Array: public ExternalArray { 4455 class ExternalInt16Array: public ExternalArray {
4458 public: 4456 public:
4459 // Setter and getter. 4457 // Setter and getter.
4460 inline int16_t get_scalar(int index); 4458 inline int16_t get_scalar(int index);
4461 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index); 4459 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index);
4462 inline void set(int index, int16_t value); 4460 inline void set(int index, int16_t value);
4463 4461
4464 // This accessor applies the correct conversion from Smi, HeapNumber 4462 // This accessor applies the correct conversion from Smi, HeapNumber
4465 // and undefined. 4463 // and undefined.
4466 static void SetValue(Handle<JSObject> holder, 4464 static void SetValue(Handle<ExternalInt16Array> array, uint32_t index,
4467 Handle<ExternalInt16Array> array, uint32_t index,
4468 Handle<Object> value); 4465 Handle<Object> value);
4469 4466
4470 DECLARE_CAST(ExternalInt16Array) 4467 DECLARE_CAST(ExternalInt16Array)
4471 4468
4472 // Dispatched behavior. 4469 // Dispatched behavior.
4473 DECLARE_PRINTER(ExternalInt16Array) 4470 DECLARE_PRINTER(ExternalInt16Array)
4474 DECLARE_VERIFIER(ExternalInt16Array) 4471 DECLARE_VERIFIER(ExternalInt16Array)
4475 4472
4476 private: 4473 private:
4477 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array); 4474 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array);
4478 }; 4475 };
4479 4476
4480 4477
4481 class ExternalUint16Array: public ExternalArray { 4478 class ExternalUint16Array: public ExternalArray {
4482 public: 4479 public:
4483 // Setter and getter. 4480 // Setter and getter.
4484 inline uint16_t get_scalar(int index); 4481 inline uint16_t get_scalar(int index);
4485 static inline Handle<Object> get(Handle<ExternalUint16Array> array, 4482 static inline Handle<Object> get(Handle<ExternalUint16Array> array,
4486 int index); 4483 int index);
4487 inline void set(int index, uint16_t value); 4484 inline void set(int index, uint16_t value);
4488 4485
4489 // This accessor applies the correct conversion from Smi, HeapNumber 4486 // This accessor applies the correct conversion from Smi, HeapNumber
4490 // and undefined. 4487 // and undefined.
4491 static void SetValue(Handle<JSObject> holder, 4488 static void SetValue(Handle<ExternalUint16Array> array, uint32_t index,
4492 Handle<ExternalUint16Array> array, uint32_t index,
4493 Handle<Object> value); 4489 Handle<Object> value);
4494 4490
4495 DECLARE_CAST(ExternalUint16Array) 4491 DECLARE_CAST(ExternalUint16Array)
4496 4492
4497 // Dispatched behavior. 4493 // Dispatched behavior.
4498 DECLARE_PRINTER(ExternalUint16Array) 4494 DECLARE_PRINTER(ExternalUint16Array)
4499 DECLARE_VERIFIER(ExternalUint16Array) 4495 DECLARE_VERIFIER(ExternalUint16Array)
4500 4496
4501 private: 4497 private:
4502 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array); 4498 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array);
4503 }; 4499 };
4504 4500
4505 4501
4506 class ExternalInt32Array: public ExternalArray { 4502 class ExternalInt32Array: public ExternalArray {
4507 public: 4503 public:
4508 // Setter and getter. 4504 // Setter and getter.
4509 inline int32_t get_scalar(int index); 4505 inline int32_t get_scalar(int index);
4510 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index); 4506 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index);
4511 inline void set(int index, int32_t value); 4507 inline void set(int index, int32_t value);
4512 4508
4513 // This accessor applies the correct conversion from Smi, HeapNumber 4509 // This accessor applies the correct conversion from Smi, HeapNumber
4514 // and undefined. 4510 // and undefined.
4515 static void SetValue(Handle<JSObject> holder, 4511 static void SetValue(Handle<ExternalInt32Array> array, uint32_t index,
4516 Handle<ExternalInt32Array> array, uint32_t index,
4517 Handle<Object> value); 4512 Handle<Object> value);
4518 4513
4519 DECLARE_CAST(ExternalInt32Array) 4514 DECLARE_CAST(ExternalInt32Array)
4520 4515
4521 // Dispatched behavior. 4516 // Dispatched behavior.
4522 DECLARE_PRINTER(ExternalInt32Array) 4517 DECLARE_PRINTER(ExternalInt32Array)
4523 DECLARE_VERIFIER(ExternalInt32Array) 4518 DECLARE_VERIFIER(ExternalInt32Array)
4524 4519
4525 private: 4520 private:
4526 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array); 4521 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array);
4527 }; 4522 };
4528 4523
4529 4524
4530 class ExternalUint32Array: public ExternalArray { 4525 class ExternalUint32Array: public ExternalArray {
4531 public: 4526 public:
4532 // Setter and getter. 4527 // Setter and getter.
4533 inline uint32_t get_scalar(int index); 4528 inline uint32_t get_scalar(int index);
4534 static inline Handle<Object> get(Handle<ExternalUint32Array> array, 4529 static inline Handle<Object> get(Handle<ExternalUint32Array> array,
4535 int index); 4530 int index);
4536 inline void set(int index, uint32_t value); 4531 inline void set(int index, uint32_t value);
4537 4532
4538 // This accessor applies the correct conversion from Smi, HeapNumber 4533 // This accessor applies the correct conversion from Smi, HeapNumber
4539 // and undefined. 4534 // and undefined.
4540 static void SetValue(Handle<JSObject> holder, 4535 static void SetValue(Handle<ExternalUint32Array> array, uint32_t index,
4541 Handle<ExternalUint32Array> array, uint32_t index,
4542 Handle<Object> value); 4536 Handle<Object> value);
4543 4537
4544 DECLARE_CAST(ExternalUint32Array) 4538 DECLARE_CAST(ExternalUint32Array)
4545 4539
4546 // Dispatched behavior. 4540 // Dispatched behavior.
4547 DECLARE_PRINTER(ExternalUint32Array) 4541 DECLARE_PRINTER(ExternalUint32Array)
4548 DECLARE_VERIFIER(ExternalUint32Array) 4542 DECLARE_VERIFIER(ExternalUint32Array)
4549 4543
4550 private: 4544 private:
4551 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array); 4545 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array);
4552 }; 4546 };
4553 4547
4554 4548
4555 class ExternalFloat32Array: public ExternalArray { 4549 class ExternalFloat32Array: public ExternalArray {
4556 public: 4550 public:
4557 // Setter and getter. 4551 // Setter and getter.
4558 inline float get_scalar(int index); 4552 inline float get_scalar(int index);
4559 static inline Handle<Object> get(Handle<ExternalFloat32Array> array, 4553 static inline Handle<Object> get(Handle<ExternalFloat32Array> array,
4560 int index); 4554 int index);
4561 inline void set(int index, float value); 4555 inline void set(int index, float value);
4562 4556
4563 // This accessor applies the correct conversion from Smi, HeapNumber 4557 // This accessor applies the correct conversion from Smi, HeapNumber
4564 // and undefined. 4558 // and undefined.
4565 static void SetValue(Handle<JSObject> holder, 4559 static void SetValue(Handle<ExternalFloat32Array> array, uint32_t index,
4566 Handle<ExternalFloat32Array> array, uint32_t index,
4567 Handle<Object> value); 4560 Handle<Object> value);
4568 4561
4569 DECLARE_CAST(ExternalFloat32Array) 4562 DECLARE_CAST(ExternalFloat32Array)
4570 4563
4571 // Dispatched behavior. 4564 // Dispatched behavior.
4572 DECLARE_PRINTER(ExternalFloat32Array) 4565 DECLARE_PRINTER(ExternalFloat32Array)
4573 DECLARE_VERIFIER(ExternalFloat32Array) 4566 DECLARE_VERIFIER(ExternalFloat32Array)
4574 4567
4575 private: 4568 private:
4576 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array); 4569 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array);
4577 }; 4570 };
4578 4571
4579 4572
4580 class ExternalFloat64Array: public ExternalArray { 4573 class ExternalFloat64Array: public ExternalArray {
4581 public: 4574 public:
4582 // Setter and getter. 4575 // Setter and getter.
4583 inline double get_scalar(int index); 4576 inline double get_scalar(int index);
4584 static inline Handle<Object> get(Handle<ExternalFloat64Array> array, 4577 static inline Handle<Object> get(Handle<ExternalFloat64Array> array,
4585 int index); 4578 int index);
4586 inline void set(int index, double value); 4579 inline void set(int index, double value);
4587 4580
4588 // This accessor applies the correct conversion from Smi, HeapNumber 4581 // This accessor applies the correct conversion from Smi, HeapNumber
4589 // and undefined. 4582 // and undefined.
4590 static void SetValue(Handle<JSObject> holder, 4583 static void SetValue(Handle<ExternalFloat64Array> array, uint32_t index,
4591 Handle<ExternalFloat64Array> array, uint32_t index,
4592 Handle<Object> value); 4584 Handle<Object> value);
4593 4585
4594 DECLARE_CAST(ExternalFloat64Array) 4586 DECLARE_CAST(ExternalFloat64Array)
4595 4587
4596 // Dispatched behavior. 4588 // Dispatched behavior.
4597 DECLARE_PRINTER(ExternalFloat64Array) 4589 DECLARE_PRINTER(ExternalFloat64Array)
4598 DECLARE_VERIFIER(ExternalFloat64Array) 4590 DECLARE_VERIFIER(ExternalFloat64Array)
4599 4591
4600 private: 4592 private:
4601 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array); 4593 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4650 4642
4651 inline ElementType get_scalar(int index); 4643 inline ElementType get_scalar(int index);
4652 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index); 4644 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index);
4653 inline void set(int index, ElementType value); 4645 inline void set(int index, ElementType value);
4654 4646
4655 static inline ElementType from_int(int value); 4647 static inline ElementType from_int(int value);
4656 static inline ElementType from_double(double value); 4648 static inline ElementType from_double(double value);
4657 4649
4658 // This accessor applies the correct conversion from Smi, HeapNumber 4650 // This accessor applies the correct conversion from Smi, HeapNumber
4659 // and undefined. 4651 // and undefined.
4660 static void SetValue(Handle<JSObject> holder, 4652 static void SetValue(Handle<FixedTypedArray<Traits> > array, uint32_t index,
4661 Handle<FixedTypedArray<Traits> > array, uint32_t index,
4662 Handle<Object> value); 4653 Handle<Object> value);
4663 4654
4664 DECLARE_PRINTER(FixedTypedArray) 4655 DECLARE_PRINTER(FixedTypedArray)
4665 DECLARE_VERIFIER(FixedTypedArray) 4656 DECLARE_VERIFIER(FixedTypedArray)
4666 4657
4667 private: 4658 private:
4668 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray); 4659 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray);
4669 }; 4660 };
4670 4661
4671 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \ 4662 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \
(...skipping 6203 matching lines...) Expand 10 before | Expand all | Expand 10 after
10875 } else { 10866 } else {
10876 value &= ~(1 << bit_position); 10867 value &= ~(1 << bit_position);
10877 } 10868 }
10878 return value; 10869 return value;
10879 } 10870 }
10880 }; 10871 };
10881 10872
10882 } } // namespace v8::internal 10873 } } // namespace v8::internal
10883 10874
10884 #endif // V8_OBJECTS_H_ 10875 #endif // V8_OBJECTS_H_
OLDNEW
« src/elements.h ('K') | « src/lookup.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698