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

Side by Side Diff: src/assembler-ia32.cc

Issue 15077: Merge bleeding-edge change 985, RecordStatementPosition reform, into... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/toiger/
Patch Set: '' Created 12 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 | Annotate | Revision Log
« no previous file with comments | « src/assembler-ia32.h ('k') | src/codegen.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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 if (kDebug && own_buffer_) { 309 if (kDebug && own_buffer_) {
310 memset(buffer_, 0xCC, buffer_size); // int3 310 memset(buffer_, 0xCC, buffer_size); // int3
311 } 311 }
312 312
313 // setup buffer pointers 313 // setup buffer pointers
314 ASSERT(buffer_ != NULL); 314 ASSERT(buffer_ != NULL);
315 pc_ = buffer_; 315 pc_ = buffer_;
316 reloc_info_writer.Reposition(buffer_ + buffer_size, pc_); 316 reloc_info_writer.Reposition(buffer_ + buffer_size, pc_);
317 317
318 last_pc_ = NULL; 318 last_pc_ = NULL;
319 last_position_ = RelocInfo::kNoPosition; 319 current_statement_position_ = RelocInfo::kNoPosition;
320 last_statement_position_ = RelocInfo::kNoPosition; 320 current_position_ = RelocInfo::kNoPosition;
321 written_statement_position_ = current_statement_position_;
322 written_position_ = current_position_;
321 } 323 }
322 324
323 325
324 Assembler::~Assembler() { 326 Assembler::~Assembler() {
325 if (own_buffer_) { 327 if (own_buffer_) {
326 if (spare_buffer_ == NULL && buffer_size_ == kMinimalBufferSize) { 328 if (spare_buffer_ == NULL && buffer_size_ == kMinimalBufferSize) {
327 spare_buffer_ = buffer_; 329 spare_buffer_ = buffer_;
328 } else { 330 } else {
329 DeleteArray(buffer_); 331 DeleteArray(buffer_);
330 } 332 }
(...skipping 1626 matching lines...) Expand 10 before | Expand all | Expand 10 after
1957 1959
1958 void Assembler::RecordComment(const char* msg) { 1960 void Assembler::RecordComment(const char* msg) {
1959 if (FLAG_debug_code) { 1961 if (FLAG_debug_code) {
1960 EnsureSpace ensure_space(this); 1962 EnsureSpace ensure_space(this);
1961 RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg)); 1963 RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg));
1962 } 1964 }
1963 } 1965 }
1964 1966
1965 1967
1966 void Assembler::RecordPosition(int pos) { 1968 void Assembler::RecordPosition(int pos) {
1967 if (pos == RelocInfo::kNoPosition) return; 1969 ASSERT(pos != RelocInfo::kNoPosition);
1968 ASSERT(pos >= 0); 1970 ASSERT(pos >= 0);
1969 last_position_ = pos; 1971 current_position_ = pos;
1970 } 1972 }
1971 1973
1972 1974
1973 void Assembler::RecordStatementPosition(int pos) { 1975 void Assembler::RecordStatementPosition(int pos) {
1974 if (pos == RelocInfo::kNoPosition) return; 1976 ASSERT(pos != RelocInfo::kNoPosition);
1975 ASSERT(pos >= 0); 1977 ASSERT(pos >= 0);
1976 last_statement_position_ = pos; 1978 current_statement_position_ = pos;
1977 } 1979 }
1978 1980
1979 1981
1980 void Assembler::WriteRecordedPositions() { 1982 void Assembler::WriteRecordedPositions() {
1981 if (last_statement_position_ != RelocInfo::kNoPosition) { 1983 // Write the statement position if it is different from what was written last
1984 // time.
1985 if (current_statement_position_ != written_statement_position_) {
1982 EnsureSpace ensure_space(this); 1986 EnsureSpace ensure_space(this);
1983 RecordRelocInfo(RelocInfo::STATEMENT_POSITION, last_statement_position_); 1987 RecordRelocInfo(RelocInfo::STATEMENT_POSITION, current_statement_position_);
1988 written_statement_position_ = current_statement_position_;
1984 } 1989 }
1985 if ((last_position_ != RelocInfo::kNoPosition) && 1990
1986 (last_position_ != last_statement_position_)) { 1991 // Write the position if it is different from what was written last time and
1992 // also diferent from the written statement position.
1993 if (current_position_ != written_position_ &&
1994 current_position_ != written_statement_position_) {
1987 EnsureSpace ensure_space(this); 1995 EnsureSpace ensure_space(this);
1988 RecordRelocInfo(RelocInfo::POSITION, last_position_); 1996 RecordRelocInfo(RelocInfo::POSITION, current_position_);
1997 written_position_ = current_position_;
1989 } 1998 }
1990 last_statement_position_ = RelocInfo::kNoPosition;
1991 last_position_ = RelocInfo::kNoPosition;
1992 } 1999 }
1993 2000
1994 2001
1995 void Assembler::GrowBuffer() { 2002 void Assembler::GrowBuffer() {
1996 ASSERT(overflow()); // should not call this otherwise 2003 ASSERT(overflow()); // should not call this otherwise
1997 if (!own_buffer_) FATAL("external code buffer is too small"); 2004 if (!own_buffer_) FATAL("external code buffer is too small");
1998 2005
1999 // compute new buffer size 2006 // compute new buffer size
2000 CodeDesc desc; // the new buffer 2007 CodeDesc desc; // the new buffer
2001 if (buffer_size_ < 4*KB) { 2008 if (buffer_size_ < 4*KB) {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 ASSERT(bound_label.is_bound()); 2139 ASSERT(bound_label.is_bound());
2133 ASSERT(0 <= position); 2140 ASSERT(0 <= position);
2134 ASSERT(position + static_cast<int>(sizeof(uint32_t)) <= pc_offset()); 2141 ASSERT(position + static_cast<int>(sizeof(uint32_t)) <= pc_offset());
2135 ASSERT(long_at(position) == 0); // only initialize once! 2142 ASSERT(long_at(position) == 0); // only initialize once!
2136 2143
2137 uint32_t label_loc = reinterpret_cast<uint32_t>(addr_at(bound_label.pos())); 2144 uint32_t label_loc = reinterpret_cast<uint32_t>(addr_at(bound_label.pos()));
2138 long_at_put(position, label_loc); 2145 long_at_put(position, label_loc);
2139 } 2146 }
2140 2147
2141 } } // namespace v8::internal 2148 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/assembler-ia32.h ('k') | src/codegen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698