From 19762345ebb55472c8ca0909d4fb30415067e63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 27 Jun 2017 09:53:55 +0200 Subject: [PATCH] src: fix SmartOS compilation Refs: https://github.com/nodejs/node-v8/issues/8 Backport-PR-URL: https://github.com/nodejs/node/pull/15393 PR-URL: https://github.com/nodejs/node/pull/14730 Reviewed-By: Ben Noordhuis Reviewed-By: Ali Ijaz Sheikh Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina --- src/v8abbr.h | 6 +++--- src/v8ustack.d | 23 ++++++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/v8abbr.h b/src/v8abbr.h index 5c5e7e24493a0e..8981126f273f39 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 8faaf467ab37bb..e2eeb2da3e6c4c 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,16 @@ 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 +541,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 +554,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