diff --git a/devtools/client/debugger/new/README.mozilla b/devtools/client/debugger/new/README.mozilla
index 3afd009d6ce6..a4d1e08265a2 100644
--- a/devtools/client/debugger/new/README.mozilla
+++ b/devtools/client/debugger/new/README.mozilla
@@ -1,9 +1,9 @@
This is the debugger.html project output.
See https://github.com/devtools-html/debugger.html
-Version 62
+Version 64
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-61...release-62
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-63...release-64
Packages:
- babel-plugin-transform-es2015-modules-commonjs @6.26.2
diff --git a/devtools/client/debugger/new/dist/debugger.css b/devtools/client/debugger/new/dist/debugger.css
index 19f81d38721f..00d038d12f10 100644
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1045,11 +1045,12 @@ html .toggle-button.end.vertical svg {
* file, You can obtain one at . */
.search-shadow {
- margin: 1px;
+ border: 1px solid transparent;
}
.search-shadow.focused {
- box-shadow: var(--theme-focus-box-shadow-textbox);
+ border: 1px solid var(--blue-50);
+ transition: border-color 0.2s ease-in-out;
}
.search-field {
@@ -2661,7 +2662,7 @@ button.jump-definition {
}
.theme-dark .editor-wrapper {
- --debug-expression-background: #54617e;
+ --debug-expression-background: rgba(202, 227, 255, 0.3);
--debug-line-border: #7786a2;
}
@@ -2710,7 +2711,7 @@ html[dir="rtl"] .editor-mount {
:not(.empty-line):not(.new-breakpoint) > .CodeMirror-gutter-wrapper:hover {
width: 60px;
height: 13px;
- left: -55px !important;
+ margin-left: -25px;
background-color: var(--gutter-hover-background-color) !important;
mask: url("chrome://devtools/skin/images/debugger/breakpoint.svg") no-repeat;
mask-size: 100%;
@@ -3860,8 +3861,6 @@ html[dir="rtl"] .object-node {
flex-direction: column;
flex: 1;
white-space: nowrap;
- -moz-user-select: none;
- user-select: none;
--breakpoint-expression-right-clear-space: 36px;
--breakpoint-expression-height: 2.4em;
}
diff --git a/devtools/client/debugger/new/src/components/Editor/Breakpoint.js b/devtools/client/debugger/new/src/components/Editor/Breakpoint.js
index 938ce4220343..b8ada2bf9fd6 100644
--- a/devtools/client/debugger/new/src/components/Editor/Breakpoint.js
+++ b/devtools/client/debugger/new/src/components/Editor/Breakpoint.js
@@ -78,15 +78,6 @@ class Breakpoint extends _react.Component {
};
}
- shouldComponentUpdate(nextProps) {
- const {
- editor,
- breakpoint,
- selectedSource
- } = this.props;
- return editor !== nextProps.editor || breakpoint.disabled !== nextProps.breakpoint.disabled || breakpoint.hidden !== nextProps.breakpoint.hidden || breakpoint.condition !== nextProps.breakpoint.condition || breakpoint.loading !== nextProps.breakpoint.loading || selectedSource !== nextProps.selectedSource;
- }
-
componentDidMount() {
this.addBreakpoint();
}
diff --git a/devtools/client/debugger/new/src/components/SecondaryPanes/Scopes.js b/devtools/client/debugger/new/src/components/SecondaryPanes/Scopes.js
index 41bdae84e63a..09657a2fe20f 100644
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Scopes.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Scopes.js
@@ -66,7 +66,8 @@ class Scopes extends _react.PureComponent {
render() {
const {
isPaused,
- isLoading
+ isLoading,
+ openLink
} = this.props;
const {
originalScopes,
@@ -85,6 +86,7 @@ class Scopes extends _react.PureComponent {
disableWrap: true,
focusable: false,
dimTopLevelWindow: true,
+ openLink: openLink,
createObjectClient: grip => (0, _firefox.createObjectClient)(grip)
}), originalScopes ? _react2.default.createElement("div", {
className: "scope-type-toggle"
diff --git a/devtools/client/debugger/new/src/utils/sources-tree/getURL.js b/devtools/client/debugger/new/src/utils/sources-tree/getURL.js
index ed95d66abac9..ad79c849e102 100644
--- a/devtools/client/debugger/new/src/utils/sources-tree/getURL.js
+++ b/devtools/client/debugger/new/src/utils/sources-tree/getURL.js
@@ -57,19 +57,19 @@ function getURL(sourceUrl, debuggeeUrl = "") {
// Ignore `javascript:` URLs for now
return def;
- case "webpack:":
- // A Webpack source is a special case
+ case "moz-extension:":
+ case "resource:":
return (0, _lodash.merge)(def, {
- path: path,
- group: "webpack://",
- filename: filename
+ path,
+ group: `${protocol}//${host || ""}`,
+ filename
});
+ case "webpack:":
case "ng:":
- // An Angular source is a special case
return (0, _lodash.merge)(def, {
path: path,
- group: "ng://",
+ group: `${protocol}//`,
filename: filename
});
@@ -90,16 +90,14 @@ function getURL(sourceUrl, debuggeeUrl = "") {
case null:
if (pathname && pathname.startsWith("/")) {
- // If it's just a URL like "/foo/bar.js", resolve it to the file
- // protocol
+ // use file protocol for a URL like "/foo/bar.js"
return (0, _lodash.merge)(def, {
path: path,
group: "file://",
filename: filename
});
} else if (host === null) {
- // We don't know what group to put this under, and it's a script
- // with a weird URL. Just group them all under an anonymous group.
+ // use anonymous group for weird URLs
return (0, _lodash.merge)(def, {
path: url,
group: defaultDomain,
diff --git a/js/src/jit/IonBuilder.cpp b/js/src/jit/IonBuilder.cpp
index 3e9aa2c2d3b5..6776426ca82b 100644
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -1635,8 +1635,7 @@ IonBuilder::blockIsOSREntry(const CFGBlock* block, const CFGBlock* predecessor)
}
MOZ_ASSERT(*info().osrPc() == JSOP_LOOPENTRY);
- // Skip over the LOOPENTRY to match.
- return GetNextPc(info().osrPc()) == entryPc;
+ return info().osrPc() == entryPc;
}
AbortReasonOr
@@ -1741,17 +1740,18 @@ IonBuilder::visitLoopEntry(CFGLoopEntry* loopEntry)
setCurrent(header);
pc = header->pc();
- initLoopEntry();
return Ok();
}
-bool
-IonBuilder::initLoopEntry()
+AbortReasonOr
+IonBuilder::jsop_loopentry()
{
+ MOZ_ASSERT(*pc == JSOP_LOOPENTRY);
+
current->add(MInterruptCheck::New(alloc()));
insertRecompileCheck();
- return true;
+ return Ok();
}
AbortReasonOr
@@ -1809,7 +1809,6 @@ IonBuilder::inspectOpcode(JSOp op)
case JSOP_THROW:
case JSOP_GOTO:
case JSOP_CONDSWITCH:
- case JSOP_LOOPENTRY:
case JSOP_TABLESWITCH:
case JSOP_CASE:
case JSOP_DEFAULT:
@@ -2377,7 +2376,10 @@ IonBuilder::inspectOpcode(JSOp op)
}
case JSOP_IMPORTMETA:
- return jsop_importmeta();
+ return jsop_importmeta();
+
+ case JSOP_LOOPENTRY:
+ return jsop_loopentry();
// ===== NOT Yet Implemented =====
// Read below!
@@ -2506,7 +2508,6 @@ IonBuilder::restartLoop(const CFGBlock* cfgHeader)
setCurrent(header);
pc = header->pc();
- initLoopEntry();
return Ok();
}
@@ -6635,7 +6636,8 @@ AbortReasonOr
IonBuilder::newOsrPreheader(MBasicBlock* predecessor, jsbytecode* loopEntry,
jsbytecode* beforeLoopEntry)
{
- MOZ_ASSERT(loopEntry == GetNextPc(info().osrPc()));
+ MOZ_ASSERT(JSOp(*loopEntry) == JSOP_LOOPENTRY);
+ MOZ_ASSERT(loopEntry == info().osrPc());
// Create two blocks: one for the OSR entry with no predecessors, one for
// the preheader, which has the OSR entry block as a predecessor. The
diff --git a/js/src/jit/IonBuilder.h b/js/src/jit/IonBuilder.h
index 5a66b7bd988c..799a10b3eb1d 100644
--- a/js/src/jit/IonBuilder.h
+++ b/js/src/jit/IonBuilder.h
@@ -125,7 +125,6 @@ class IonBuilder
// Restarts processing of a loop if the type information at its header was
// incomplete.
AbortReasonOr restartLoop(const CFGBlock* header);
- bool initLoopEntry();
// Please see the Big Honkin' Comment about how resume points work in
// IonBuilder.cpp, near the definition for this function.
@@ -509,6 +508,7 @@ class IonBuilder
AbortReasonOr jsop_label();
AbortReasonOr jsop_andor(JSOp op);
AbortReasonOr jsop_dup2();
+ AbortReasonOr jsop_loopentry();
AbortReasonOr jsop_loophead(jsbytecode* pc);
AbortReasonOr jsop_compare(JSOp op);
AbortReasonOr jsop_compare(JSOp op, MDefinition* left, MDefinition* right);
diff --git a/js/src/jit/IonControlFlow.cpp b/js/src/jit/IonControlFlow.cpp
index 18d9e49d1989..52e25cecdf73 100644
--- a/js/src/jit/IonControlFlow.cpp
+++ b/js/src/jit/IonControlFlow.cpp
@@ -933,7 +933,7 @@ ControlFlowGenerator::processWhileOrForInLoop(jssrcnote* sn)
jsbytecode* exitpc = GetNextPc(ifne);
jsbytecode* continuepc = pc;
- CFGBlock* header = CFGBlock::New(alloc(), GetNextPc(loopEntry));
+ CFGBlock* header = CFGBlock::New(alloc(), loopEntry);
CFGLoopEntry* ins = CFGLoopEntry::New(alloc(), header, stackPhiCount);
if (LoopEntryCanIonOsr(loopEntry))
@@ -1481,7 +1481,7 @@ ControlFlowGenerator::processForLoop(JSOp op, jssrcnote* sn)
MOZ_ASSERT(JSOp(*loopEntry) == JSOP_LOOPENTRY);
- CFGBlock* header = CFGBlock::New(alloc(), GetNextPc(loopEntry));
+ CFGBlock* header = CFGBlock::New(alloc(), loopEntry);
CFGLoopEntry* ins = CFGLoopEntry::New(alloc(), header, 0);
if (LoopEntryCanIonOsr(loopEntry))
@@ -1549,7 +1549,7 @@ ControlFlowGenerator::processDoWhileLoop(jssrcnote* sn)
jsbytecode* loopEntry = GetNextPc(loopHead);
- CFGBlock* header = CFGBlock::New(alloc(), GetNextPc(loopEntry));
+ CFGBlock* header = CFGBlock::New(alloc(), loopEntry);
CFGLoopEntry* ins = CFGLoopEntry::New(alloc(), header, 0);
if (LoopEntryCanIonOsr(loopEntry))
diff --git a/layout/generic/WritingModes.h b/layout/generic/WritingModes.h
index 1dbfaf9f08a9..c4db80404c0d 100644
--- a/layout/generic/WritingModes.h
+++ b/layout/generic/WritingModes.h
@@ -1006,6 +1006,10 @@ public:
CHECK_WRITING_MODE(aWritingMode);
return mSize.height;
}
+ nscoord Size(LogicalAxis aAxis, WritingMode aWM) const
+ {
+ return aAxis == eLogicalAxisInline ? ISize(aWM) : BSize(aWM);
+ }
nscoord Width(WritingMode aWritingMode) const
{
@@ -1031,6 +1035,10 @@ public:
CHECK_WRITING_MODE(aWritingMode);
return mSize.height;
}
+ nscoord& Size(LogicalAxis aAxis, WritingMode aWM)
+ {
+ return aAxis == eLogicalAxisInline ? ISize(aWM) : BSize(aWM);
+ }
/**
* Return an nsSize containing our physical dimensions
@@ -1224,6 +1232,14 @@ public:
CHECK_WRITING_MODE(aWritingMode);
return mMargin.bottom;
}
+ nscoord Start(LogicalAxis aAxis, WritingMode aWM) const
+ {
+ return aAxis == eLogicalAxisInline ? IStart(aWM) : BStart(aWM);
+ }
+ nscoord End(LogicalAxis aAxis, WritingMode aWM) const
+ {
+ return aAxis == eLogicalAxisInline ? IEnd(aWM) : BEnd(aWM);
+ }
nscoord& IStart(WritingMode aWritingMode) // inline-start margin
{
@@ -1245,6 +1261,14 @@ public:
CHECK_WRITING_MODE(aWritingMode);
return mMargin.bottom;
}
+ nscoord& Start(LogicalAxis aAxis, WritingMode aWM)
+ {
+ return aAxis == eLogicalAxisInline ? IStart(aWM) : BStart(aWM);
+ }
+ nscoord& End(LogicalAxis aAxis, WritingMode aWM)
+ {
+ return aAxis == eLogicalAxisInline ? IEnd(aWM) : BEnd(aWM);
+ }
nscoord IStartEnd(WritingMode aWritingMode) const // inline margins
{
@@ -1256,6 +1280,10 @@ public:
CHECK_WRITING_MODE(aWritingMode);
return mMargin.TopBottom();
}
+ nscoord StartEnd(LogicalAxis aAxis, WritingMode aWM) const
+ {
+ return aAxis == eLogicalAxisInline ? IStartEnd(aWM) : BStartEnd(aWM);
+ }
/*
* Return margin values for line-relative sides, as defined in