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

Side by Side Diff: src/objects.h

Issue 11438046: Cleanup StringCharacterStream and add initial test cases. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Cleanup Created 8 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 | « no previous file | src/objects.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 7499 matching lines...) Expand 10 before | Expand all | Expand 10 after
7510 } 7510 }
7511 7511
7512 static inline bool IsAscii(const uc16* chars, int length) { 7512 static inline bool IsAscii(const uc16* chars, int length) {
7513 return NonAsciiStart(chars, length) >= length; 7513 return NonAsciiStart(chars, length) >= length;
7514 } 7514 }
7515 7515
7516 template<class Visitor, class ConsOp> 7516 template<class Visitor, class ConsOp>
7517 static inline void Visit(String* string, 7517 static inline void Visit(String* string,
7518 unsigned offset, 7518 unsigned offset,
7519 Visitor& visitor, 7519 Visitor& visitor,
7520 ConsOp& consOp, 7520 ConsOp& cons_op,
7521 int32_t type, 7521 int32_t type,
7522 unsigned length); 7522 unsigned length);
7523 7523
7524 protected: 7524 protected:
7525 class ReadBlockBuffer { 7525 class ReadBlockBuffer {
7526 public: 7526 public:
7527 ReadBlockBuffer(unibrow::byte* util_buffer_, 7527 ReadBlockBuffer(unibrow::byte* util_buffer_,
7528 unsigned cursor_, 7528 unsigned cursor_,
7529 unsigned capacity_, 7529 unsigned capacity_,
7530 unsigned remaining_) : 7530 unsigned remaining_) :
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
7981 // Note: this class is not GC-safe. 7981 // Note: this class is not GC-safe.
7982 class ConsStringIteratorOp { 7982 class ConsStringIteratorOp {
7983 public: 7983 public:
7984 struct ContinueResponse { 7984 struct ContinueResponse {
7985 String* string_; 7985 String* string_;
7986 unsigned offset_; 7986 unsigned offset_;
7987 unsigned length_; 7987 unsigned length_;
7988 int32_t type_; 7988 int32_t type_;
7989 }; 7989 };
7990 inline ConsStringIteratorOp() {} 7990 inline ConsStringIteratorOp() {}
7991 String* Operate(ConsString* consString, unsigned* outerOffset, 7991 String* Operate(ConsString* cons_string, unsigned* offset_out,
7992 int32_t* typeOut, unsigned* lengthOut); 7992 int32_t* type_out, unsigned* length_out);
7993 inline bool ContinueOperation(ContinueResponse* response); 7993 inline bool ContinueOperation(ContinueResponse* response);
7994 inline void Reset(); 7994 inline void Reset();
7995 inline bool HasMore(); 7995 inline bool HasMore();
7996 7996
7997 private: 7997 private:
7998 // TODO(dcarney): Templatize this out for different stack sizes. 7998 // TODO(dcarney): Templatize this out for different stack sizes.
7999 static const unsigned kStackSize = 32; 7999 static const unsigned kStackSize = 32;
8000 // Use a mask instead of doing modulo operations for stack wrapping. 8000 // Use a mask instead of doing modulo operations for stack wrapping.
8001 static const unsigned kDepthMask = kStackSize-1; 8001 static const unsigned kDepthMask = kStackSize-1;
8002 STATIC_ASSERT(IS_POWER_OF_TWO(kStackSize)); 8002 STATIC_ASSERT(IS_POWER_OF_TWO(kStackSize));
8003 static inline unsigned OffsetForDepth(unsigned depth); 8003 static inline unsigned OffsetForDepth(unsigned depth);
8004 static inline uint32_t MaskForDepth(unsigned depth);
8005 8004
8006 inline void ClearRightDescent();
8007 inline void SetRightDescent();
8008 inline void PushLeft(ConsString* string); 8005 inline void PushLeft(ConsString* string);
8009 inline void PushRight(ConsString* string, int32_t type); 8006 inline void PushRight(ConsString* string);
8010 inline void AdjustMaximumDepth(); 8007 inline void AdjustMaximumDepth();
8011 inline void Pop(); 8008 inline void Pop();
8012 inline void ResetStack(); 8009 String* NextLeaf(bool* blew_stack, int32_t* type_out, unsigned* length_out);
8013 String* NextLeaf(bool* blewStack, int32_t* typeOut);
8014 8010
8015 unsigned depth_; 8011 unsigned depth_;
8016 unsigned maximum_depth_; 8012 unsigned maximum_depth_;
8017 uint32_t trace_; 8013 // Stack must always contain only frames for which right traversal
8014 // has not yet been performed.
8018 ConsString* frames_[kStackSize]; 8015 ConsString* frames_[kStackSize];
8019 unsigned consumed_; 8016 unsigned consumed_;
8020 ConsString* root_; 8017 ConsString* root_;
8021 int32_t root_type_; 8018 int32_t root_type_;
8022 unsigned root_length_; 8019 unsigned root_length_;
8023 DISALLOW_COPY_AND_ASSIGN(ConsStringIteratorOp); 8020 DISALLOW_COPY_AND_ASSIGN(ConsStringIteratorOp);
8024 }; 8021 };
8025 8022
8026 8023
8027 // Note: this class is not GC-safe. 8024 // Note: this class is not GC-safe.
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after
9089 } else { 9086 } else {
9090 value &= ~(1 << bit_position); 9087 value &= ~(1 << bit_position);
9091 } 9088 }
9092 return value; 9089 return value;
9093 } 9090 }
9094 }; 9091 };
9095 9092
9096 } } // namespace v8::internal 9093 } } // namespace v8::internal
9097 9094
9098 #endif // V8_OBJECTS_H_ 9095 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « no previous file | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698