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

Side by Side Diff: src/objects-inl.h

Issue 8103: - Fixed performance regression caused by ComputeContextSlotReceiver.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 12 years, 1 month 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
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 #define READ_FIELD(p, offset) \ 503 #define READ_FIELD(p, offset) \
504 (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset))) 504 (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset)))
505 505
506 #define WRITE_FIELD(p, offset, value) \ 506 #define WRITE_FIELD(p, offset, value) \
507 (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset)) = value) 507 (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset)) = value)
508 508
509 509
510 #define WRITE_BARRIER(object, offset) \ 510 #define WRITE_BARRIER(object, offset) \
511 Heap::RecordWrite(object->address(), offset); 511 Heap::RecordWrite(object->address(), offset);
512 512
513 // CONITIONAL_WRITE_BARRIER must be issued after the actual 513 // CONDITIONAL_WRITE_BARRIER must be issued after the actual
514 // write due to the assert validating the written value. 514 // write due to the assert validating the written value.
515 #define CONDITIONAL_WRITE_BARRIER(object, offset, mode) \ 515 #define CONDITIONAL_WRITE_BARRIER(object, offset, mode) \
516 if (mode == UPDATE_WRITE_BARRIER) { \ 516 if (mode == UPDATE_WRITE_BARRIER) { \
517 Heap::RecordWrite(object->address(), offset); \ 517 Heap::RecordWrite(object->address(), offset); \
518 } else { \ 518 } else { \
519 ASSERT(mode == SKIP_WRITE_BARRIER); \ 519 ASSERT(mode == SKIP_WRITE_BARRIER); \
520 ASSERT(Heap::InNewSpace(object) || \ 520 ASSERT(Heap::InNewSpace(object) || \
521 !Heap::InNewSpace(READ_FIELD(object, offset))); \ 521 !Heap::InNewSpace(READ_FIELD(object, offset))); \
522 } 522 }
523 523
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 1527
1528 return SizeFor(length); 1528 return SizeFor(length);
1529 } 1529 }
1530 1530
1531 1531
1532 Object* ConsString::first() { 1532 Object* ConsString::first() {
1533 return READ_FIELD(this, kFirstOffset); 1533 return READ_FIELD(this, kFirstOffset);
1534 } 1534 }
1535 1535
1536 1536
1537 void ConsString::set_first(Object* value) { 1537 void ConsString::set_first(Object* value, WriteBarrierMode mode) {
1538 WRITE_FIELD(this, kFirstOffset, value); 1538 WRITE_FIELD(this, kFirstOffset, value);
1539 WRITE_BARRIER(this, kFirstOffset); 1539 CONDITIONAL_WRITE_BARRIER(this, kFirstOffset, mode);
1540 } 1540 }
1541 1541
1542 1542
1543 Object* ConsString::second() { 1543 Object* ConsString::second() {
1544 return READ_FIELD(this, kSecondOffset); 1544 return READ_FIELD(this, kSecondOffset);
1545 } 1545 }
1546 1546
1547 1547
1548 void ConsString::set_second(Object* value) { 1548 void ConsString::set_second(Object* value, WriteBarrierMode mode) {
1549 WRITE_FIELD(this, kSecondOffset, value); 1549 WRITE_FIELD(this, kSecondOffset, value);
1550 WRITE_BARRIER(this, kSecondOffset); 1550 CONDITIONAL_WRITE_BARRIER(this, kSecondOffset, mode);
1551 } 1551 }
1552 1552
1553 1553
1554 Object* SlicedString::buffer() { 1554 Object* SlicedString::buffer() {
1555 return READ_FIELD(this, kBufferOffset); 1555 return READ_FIELD(this, kBufferOffset);
1556 } 1556 }
1557 1557
1558 1558
1559 void SlicedString::set_buffer(Object* buffer) { 1559 void SlicedString::set_buffer(Object* buffer) {
1560 WRITE_FIELD(this, kBufferOffset, buffer); 1560 WRITE_FIELD(this, kBufferOffset, buffer);
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
2064 if (map()->has_non_instance_prototype()) return map()->constructor(); 2064 if (map()->has_non_instance_prototype()) return map()->constructor();
2065 return instance_prototype(); 2065 return instance_prototype();
2066 } 2066 }
2067 2067
2068 2068
2069 bool JSFunction::is_compiled() { 2069 bool JSFunction::is_compiled() {
2070 return shared()->is_compiled(); 2070 return shared()->is_compiled();
2071 } 2071 }
2072 2072
2073 2073
2074 int JSFunction::NumberOfLiterals() {
2075 return literals()->length();
2076 }
2077
2078
2074 Object* JSBuiltinsObject::javascript_builtin(Builtins::JavaScript id) { 2079 Object* JSBuiltinsObject::javascript_builtin(Builtins::JavaScript id) {
2075 ASSERT(0 <= id && id < kJSBuiltinsCount); 2080 ASSERT(0 <= id && id < kJSBuiltinsCount);
2076 return READ_FIELD(this, kJSBuiltinsOffset + (id * kPointerSize)); 2081 return READ_FIELD(this, kJSBuiltinsOffset + (id * kPointerSize));
2077 } 2082 }
2078 2083
2079 2084
2080 void JSBuiltinsObject::set_javascript_builtin(Builtins::JavaScript id, 2085 void JSBuiltinsObject::set_javascript_builtin(Builtins::JavaScript id,
2081 Object* value) { 2086 Object* value) {
2082 ASSERT(0 <= id && id < kJSBuiltinsCount); 2087 ASSERT(0 <= id && id < kJSBuiltinsCount);
2083 WRITE_FIELD(this, kJSBuiltinsOffset + (id * kPointerSize), value); 2088 WRITE_FIELD(this, kJSBuiltinsOffset + (id * kPointerSize), value);
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 void Map::ClearCodeCache() { 2349 void Map::ClearCodeCache() {
2345 // No write barrier is needed since empty_fixed_array is not in new space. 2350 // No write barrier is needed since empty_fixed_array is not in new space.
2346 // Please note this function is used during marking: 2351 // Please note this function is used during marking:
2347 // - MarkCompactCollector::MarkUnmarkedObject 2352 // - MarkCompactCollector::MarkUnmarkedObject
2348 ASSERT(!Heap::InNewSpace(Heap::empty_fixed_array())); 2353 ASSERT(!Heap::InNewSpace(Heap::empty_fixed_array()));
2349 WRITE_FIELD(this, kCodeCacheOffset, Heap::empty_fixed_array()); 2354 WRITE_FIELD(this, kCodeCacheOffset, Heap::empty_fixed_array());
2350 } 2355 }
2351 2356
2352 2357
2353 void JSArray::SetContent(FixedArray* storage) { 2358 void JSArray::SetContent(FixedArray* storage) {
2354 set_length(Smi::FromInt(storage->length())); 2359 set_length(Smi::FromInt(storage->length()), SKIP_WRITE_BARRIER);
2355 set_elements(storage); 2360 set_elements(storage);
2356 } 2361 }
2357 2362
2358 2363
2359 Object* FixedArray::Copy() { 2364 Object* FixedArray::Copy() {
2360 if (length() == 0) return this; 2365 if (length() == 0) return this;
2361 return Heap::CopyFixedArray(this); 2366 return Heap::CopyFixedArray(this);
2362 } 2367 }
2363 2368
2364 2369
(...skipping 14 matching lines...) Expand all
2379 #undef WRITE_INT_FIELD 2384 #undef WRITE_INT_FIELD
2380 #undef READ_SHORT_FIELD 2385 #undef READ_SHORT_FIELD
2381 #undef WRITE_SHORT_FIELD 2386 #undef WRITE_SHORT_FIELD
2382 #undef READ_BYTE_FIELD 2387 #undef READ_BYTE_FIELD
2383 #undef WRITE_BYTE_FIELD 2388 #undef WRITE_BYTE_FIELD
2384 2389
2385 2390
2386 } } // namespace v8::internal 2391 } } // namespace v8::internal
2387 2392
2388 #endif // V8_OBJECTS_INL_H_ 2393 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698