Skip to content

Instantly share code, notes, and snippets.

@misterdjules
Last active June 26, 2017 16:13
Show Gist options
  • Save misterdjules/f0bc7b42de7f9ee72e9535f0ce361ea0 to your computer and use it in GitHub Desktop.
Save misterdjules/f0bc7b42de7f9ee72e9535f0ce361ea0 to your computer and use it in GitHub Desktop.
diff --git a/deps/v8/tools/gen-postmortem-metadata.py b/deps/v8/tools/gen-postmortem-metadata.py
index c400523b0..34ec1716e 100644
--- a/deps/v8/tools/gen-postmortem-metadata.py
+++ b/deps/v8/tools/gen-postmortem-metadata.py
@@ -195,7 +195,6 @@ consts_misc = [
'value': 'SharedFunctionInfo::StartPositionBits::kMask' },
{ 'name': 'sharedfunctioninfo_start_position_shift',
'value': 'SharedFunctionInfo::StartPositionBits::kShift' },
-
{ 'name': 'jsarray_buffer_was_neutered_mask',
'value': 'JSArrayBuffer::WasNeutered::kMask' },
{ 'name': 'jsarray_buffer_was_neutered_shift',
@@ -266,6 +265,7 @@ extras_accessors = [
'SeqTwoByteString, chars, char, kHeaderSize',
'SharedFunctionInfo, code, Code, kCodeOffset',
'SharedFunctionInfo, scope_info, ScopeInfo, kScopeInfoOffset',
+ 'SharedFunctionInfo, function_token_position, int, kFunctionTokenPositionOffset',
'SlicedString, parent, String, kParentOffset',
'Code, instruction_start, uintptr_t, kHeaderSize',
'Code, instruction_size, int, kInstructionSizeOffset',
diff --git a/src/v8abbr.h b/src/v8abbr.h
index 5c5e7e244..8981126f2 100644
--- a/src/v8abbr.h
+++ b/src/v8abbr.h
@@ -85,14 +85,14 @@
#define V8_OFF_FUNC_SHARED \
V8_OFF_HEAP(V8DBG_CLASS_JSFUNCTION__SHARED__SHAREDFUNCTIONINFO)
-#define V8_OFF_SHARED_NAME \
- V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__NAME__OBJECT)
+#define V8_OFF_RAW_NAME \
+ V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__RAW_NAME__OBJECT)
#define V8_OFF_SHARED_IDENT \
V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__FUNCTION_IDENTIFIER__OBJECT)
#define V8_OFF_SHARED_SCRIPT \
V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__SCRIPT__OBJECT)
#define V8_OFF_SHARED_FUNTOK \
- V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__FUNCTION_TOKEN_POSITION__SMI)
+ V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__FUNCTION_TOKEN_POSITION__INT)
#define V8_OFF_SCRIPT_NAME \
V8_OFF_HEAP(V8DBG_CLASS_SCRIPT__NAME__OBJECT)
#define V8_OFF_SCRIPT_LENDS \
diff --git a/src/v8ustack.d b/src/v8ustack.d
index 8faaf467a..1a8a1fd8b 100644
--- a/src/v8ustack.d
+++ b/src/v8ustack.d
@@ -21,6 +21,7 @@
((value & V8_SmiTagMask) == V8_SmiTag)
#define SMI_VALUE(value) \
((uint32_t) ((value) >> V8_SmiValueShift))
+#define NO_SHARED_FUNCTION_NAME_SENTINEL NULL
/*
* Heap objects usually start off with a Map pointer, itself another heap
@@ -372,7 +373,8 @@ dtrace:helper:ustack:
this->shared = (off_t) 0;
this->map = (off_t) 0;
this->attrs = 0;
- this->funcnamestr = (off_t) 0;
+ this->funcrawnamestr = (off_t) 0;
+ this->hassharedname = 0;
this->funcnamelen = 0;
this->funcnameattrs = 0;
this->script = (off_t) 0;
@@ -515,9 +517,19 @@ dtrace:helper:ustack:
this->attrs = 0;
this->shared = COPYIN_PTR(this->func + V8_OFF_FUNC_SHARED);
- this->funcnamestr = COPYIN_PTR(this->shared + V8_OFF_SHARED_NAME);
- LOAD_STRFIELDS(this->funcnamestr, this->funcnamelen,
- this->funcnameattrs);
+ this->funcrawnamestr = COPYIN_PTR(this->shared + V8_OFF_RAW_NAME);
+ this->hassharedname = this->funcrawnamestr !=
+ NO_SHARED_FUNCTION_NAME_SENTINEL;
+}
+
+dtracr:helper:ustack:
+/!this->done && this->hassharedname/
+{
+ LOAD_STRFIELDS(this->funcrawnamestr, this->funcnamelen,
+ this->funcnameattrs);
}
dtrace:helper:ustack:
@@ -532,8 +544,8 @@ dtrace:helper:ustack:
APPEND_CHR('s');
APPEND_CHR(' ');
- this->funcnamestr = COPYIN_PTR(this->shared + V8_OFF_SHARED_IDENT);
- LOAD_STRFIELDS(this->funcnamestr, this->funcnamelen,
+ this->funcrawnamestr = COPYIN_PTR(this->shared + V8_OFF_SHARED_IDENT);
+ LOAD_STRFIELDS(this->funcrawnamestr, this->funcnamelen,
this->funcnameattrs);
}
@@ -545,7 +557,7 @@ dtrace:helper:ustack:
APPEND_CHR(')');
}
-APPEND_V8STR(this->funcnamestr, this->funcnamelen, this->funcnameattrs)
+APPEND_V8STR(this->funcrawnamestr, this->funcnamelen, this->funcnameattrs)
/*
* Now look for the name of the script where the function was defined. The
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment