Created
October 1, 2014 20:58
-
-
Save trevnorris/236f9f2cd88f2bac8a76 to your computer and use it in GitHub Desktop.
Patch to fix IRHydra support by back porting the patch to 3.28
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/deps/v8/src/codegen.cc b/deps/v8/src/codegen.cc | |
index 6b12d64..a24220d 100644 | |
--- a/deps/v8/src/codegen.cc | |
+++ b/deps/v8/src/codegen.cc | |
@@ -190,7 +190,7 @@ void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) { | |
function->end_position() - function->start_position() + 1; | |
for (int i = 0; i < source_len; i++) { | |
if (stream.HasMore()) { | |
- os << AsUC16(stream.GetNext()); | |
+ os << AsReversiblyEscapedUC16(stream.GetNext()); | |
} | |
} | |
os << "\n\n"; | |
diff --git a/deps/v8/src/hydrogen.cc b/deps/v8/src/hydrogen.cc | |
index 3ddd7cc..63174aa 100644 | |
--- a/deps/v8/src/hydrogen.cc | |
+++ b/deps/v8/src/hydrogen.cc | |
@@ -3498,7 +3498,7 @@ int HGraph::TraceInlinedFunction( | |
shared->end_position() - shared->start_position() + 1; | |
for (int i = 0; i < source_len; i++) { | |
if (stream.HasMore()) { | |
- os << AsUC16(stream.GetNext()); | |
+ os << AsReversiblyEscapedUC16(stream.GetNext()); | |
} | |
} | |
} | |
diff --git a/deps/v8/src/objects.cc b/deps/v8/src/objects.cc | |
index 29af1d8..cfdb9cc 100644 | |
--- a/deps/v8/src/objects.cc | |
+++ b/deps/v8/src/objects.cc | |
@@ -11417,7 +11417,10 @@ void Code::Disassemble(const char* name, OStream& os) { // NOLINT | |
os << "Instructions (size = " << instruction_size() << ")\n"; | |
// TODO(svenpanne) The Disassembler should use streams, too! | |
- Disassembler::Decode(stdout, this); | |
+ { | |
+ CodeTracer::Scope trace_scope(GetIsolate()->GetCodeTracer()); | |
+ Disassembler::Decode(trace_scope.file(), this); | |
+ } | |
os << "\n"; | |
if (kind() == FUNCTION) { | |
diff --git a/deps/v8/src/ostreams.cc b/deps/v8/src/ostreams.cc | |
index 0f5bec4..62304eb 100644 | |
--- a/deps/v8/src/ostreams.cc | |
+++ b/deps/v8/src/ostreams.cc | |
@@ -3,6 +3,7 @@ | |
// found in the LICENSE file. | |
#include <algorithm> | |
+#include <cctype> | |
#include <cmath> | |
#include "src/base/platform/platform.h" // For isinf/isnan with MSVC | |
@@ -163,11 +164,21 @@ OFStream& OFStream::flush() { | |
} | |
+OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c) { | |
+ char buf[10]; | |
+ const char* format = | |
+ (std::isprint(c.value) || std::isspace(c.value)) && c.value != '\\' | |
+ ? "%c" | |
+ : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x"; | |
+ snprintf(buf, sizeof(buf), format, c.value); | |
+ return os << buf; | |
+} | |
+ | |
+ | |
OStream& operator<<(OStream& os, const AsUC16& c) { | |
char buf[10]; | |
- const char* format = (0x20 <= c.value && c.value <= 0x7F) | |
- ? "%c" | |
- : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x"; | |
+ const char* format = | |
+ std::isprint(c.value) ? "%c" : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x"; | |
snprintf(buf, sizeof(buf), format, c.value); | |
return os << buf; | |
} | |
diff --git a/deps/v8/src/ostreams.h b/deps/v8/src/ostreams.h | |
index f70b6de..08f53c5 100644 | |
--- a/deps/v8/src/ostreams.h | |
+++ b/deps/v8/src/ostreams.h | |
@@ -117,13 +117,26 @@ class OFStream: public OStream { | |
}; | |
-// A wrapper to disambiguate uint16_t and uc16. | |
+// Wrappers to disambiguate uint16_t and uc16. | |
struct AsUC16 { | |
explicit AsUC16(uint16_t v) : value(v) {} | |
uint16_t value; | |
}; | |
+struct AsReversiblyEscapedUC16 { | |
+ explicit AsReversiblyEscapedUC16(uint16_t v) : value(v) {} | |
+ uint16_t value; | |
+}; | |
+ | |
+ | |
+// Writes the given character to the output escaping everything outside of | |
+// printable/space ASCII range. Additionally escapes '\' making escaping | |
+// reversible. | |
+OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c); | |
+ | |
+// Writes the given character to the output escaping everything outside | |
+// of printable ASCII range. | |
OStream& operator<<(OStream& os, const AsUC16& c); | |
} } // namespace v8::internal | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment