Index: src/scanner-character-streams.h |
diff --git a/src/scanner-character-streams.h b/src/scanner-character-streams.h |
index eeb40e260f62727610c52c9591cb62ca231885c9..ba7720a498d6c60d8a22e8c20ae636486210e0fc 100644 |
--- a/src/scanner-character-streams.h |
+++ b/src/scanner-character-streams.h |
@@ -59,6 +59,9 @@ class Utf8ToUtf16CharacterStream: public BufferedUtf16CharacterStream { |
Utf8ToUtf16CharacterStream(const byte* data, unsigned length); |
virtual ~Utf8ToUtf16CharacterStream(); |
+ static unsigned CopyChars(uint16_t* dest, unsigned length, const byte* src, |
+ unsigned* src_pos, unsigned src_length); |
+ |
protected: |
virtual unsigned BufferSeekForward(unsigned delta); |
virtual unsigned FillBuffer(unsigned char_position); |
@@ -73,6 +76,38 @@ class Utf8ToUtf16CharacterStream: public BufferedUtf16CharacterStream { |
}; |
+// ExternalStreamingStream is a wrapper around an ExternalSourceStream (see |
+// include/v8.h) subclass implemented by the embedder. |
+class ExternalStreamingStream : public BufferedUtf16CharacterStream { |
+ public: |
+ explicit ExternalStreamingStream( |
+ ScriptCompiler::ExternalSourceStream* source_stream) |
+ : source_stream_(source_stream), |
+ current_data_(NULL), |
+ current_data_offset_(0), |
+ current_data_length_(0) {} |
+ |
+ virtual ~ExternalStreamingStream() { delete[] current_data_; } |
+ |
+ virtual unsigned BufferSeekForward(unsigned delta) V8_OVERRIDE { |
+ // We never need to seek forward when streaming scripts. We only seek |
+ // forward when we want to parse a function whose location we already know, |
+ // and when streaming, we don't know the locations of anything we haven't |
+ // seen yet. |
+ UNREACHABLE(); |
+ return 0; |
+ } |
+ |
+ virtual unsigned FillBuffer(unsigned position); |
+ |
+ private: |
+ ScriptCompiler::ExternalSourceStream* source_stream_; |
+ const char* current_data_; |
+ unsigned current_data_offset_; |
+ unsigned current_data_length_; |
+}; |
+ |
+ |
// UTF16 buffer to read characters from an external string. |
class ExternalTwoByteStringUtf16CharacterStream: public Utf16CharacterStream { |
public: |